gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 02:10:04 30 4
gpt4 key购买 nike

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

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 非常繁琐。必须先粘贴依赖于其他表的表,然后再粘贴其他表。遗忘会让 Vitess 抛出错误。

最佳答案

欢迎使用 StackOverflow。

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

但是,您可以尝试通过以下方式对其进行自定义以满足您的需求:

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

    但让 SQL 模式作为 Helm 图表的一部分从静态文件中提取出来模板
    (例如来自static/initial_schema.sql 位置):

    所以只需添加一段这样的控制流代码:

{{ 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 内置对象(如文件)的更多信息 here

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

    适配一段代码here ,其中构建了vtctlclient命令。
    这还需要引入一个新的 Kubernetes Volume 对象(nfsGit基于 repo 协议(protocol)是不错的选择),你可以 mount在作业,在特定路径下,将使用 initial_schema.sql 文件。

关于mysql - Vitess:使用 SQL 文件初始化键空间模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54821522/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com