mysql - Vitess:使用 SQL 文件初始化键空间架构

标签 mysql kubernetes kubernetes-helm vitess kubernetes-vitess

我正在使用 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 文件进行初始化。

这将非常有帮助,因为将架构组织并粘贴为字符串非常繁琐。必须首先粘贴依赖于其他表格的表格,然后再粘贴其余表格。遗忘会让 Vitess 抛出错误。

最佳答案

欢迎来到 StackOverflow。

恐怕在 Vitess Helm 图表的当前状态下,没有开箱即用的功能可以直接从 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)的更多信息

  • 使用ApplySchema {-sql-file=}模式

    适配一段代码here ,其中构造了 vtctlclient 命令。
    这还需要引入一个新的 Kubernetes Volume 对象( nfsGit基于存储库是很好的选择),您可以 mount在 作业,在特定路径下,将使用initial_schema.sql 文件。
  • 关于mysql - Vitess:使用 SQL 文件初始化键空间架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54821522/

    相关文章:

    kubernetes - Helm chart 错误 : could not find expected ':'

    php - php连接数据库时出错

    php mysql插入条件判断

    kubernetes - 如何将用户请求重定向到Kubernetes中的另一个部署?

    networking - 使用 Calico 在 Kubernetes 中公开服务的最佳实践

    docker - 将Postgres数据库的外部参数添加到keycloak k8s Helm chart 环境参数中

    kubernetes - 预安装 Hook Helm - 用户友好的错误消息

    PHP » 单例 MySQL 连接

    php - 学习 HTML 和 PHP

    docker - Kubernetes pods 重启问题异常