首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vitess:使用SQL文件初始化键空间模式

Vitess:使用SQL文件初始化键空间模式
EN

Stack Overflow用户
提问于 2019-02-22 06:46:54
回答 1查看 475关注 0票数 2

我正在使用helm和Vitess示例中的文件cluster.yaml来设置我的初始集群。该示例使用SQL字符串进行架构初始化,如下所示:

代码语言:javascript
复制
schema:
        initial: |-
          create table product(
            sku varbinary(128),
            description varbinary(128),
            price bigint,
            primary key(sku)
          );
          create table customer(
            customer_id bigint not null auto_increment,
            email varbinary(128),
            primary key(customer_id)
          );
          create table corder(
            order_id bigint not null auto_increment,
            customer_id bigint,
            sku varbinary(128),
            price bigint,
            primary key(order_id)
          );

我想用一个文件initial: my_initial_keyspace_schema.sql来代替它。从Vitess文档中我可以看到Vitess确实允许使用ApplySchema -sql_file=user_table.sql user实现这一点,但是我希望使用helm文件初始化。

这将非常有用,因为组织和粘贴模式为string非常繁琐。依赖于他人的表必须先粘贴,其余的按顺序粘贴。遗忘会使人充满活力,使人犯错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-27 15:58:09

欢迎来到StackOverflow。

恐怕没有开箱即用的特性可以在Vitess图表的当前状态下直接从SQL文件初始化DbSchema。您可以通过helm inspect <chart_name>命令识别它的任何可配置参数。

但是,您可以尝试通过以下方式定制它以满足您的需要:

  1. 保持ApplySchema {-sql=}模式

但是,让SQL模式从静态文件中删除,作为Helm图表模板的一部分。

(例如,从静态/初始_schema.sql位置):

因此,只需添加一段控制流代码,如下所示:

代码语言:javascript
复制
{{ if .Values.initialSchemaSqlFile.enabled }}
        {{- $files := .Files }}
        {{- range tuple "static/initial_schema.sql" }}
        {{ $schema := $files.Get . }}
{{- end }}
{{ else }}
   # Default inline schema from Values.topology.cells.keyspaces[0].schema
{{ end }}

检查有关使用Helm内置对象(如File 这里 )的更多信息。

  1. 使用ApplySchema {-sql-file=}模式

修改一段代码这里,其中构造vtctlclient命令。

这还需要引入一个新的Kubernetes卷对象(这里基于nfsGit回购是很好的选择),您可以在特定路径下在作业上使用initial_schema.sql文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54821522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档