[新特性] 使用 DistSQL 导出 schema 配置(DistSQL 转 YAML)

大家好!

从 5.0.0 版本开始,DistSQL 提供了许多语法来帮助用户查询资源和规则配置,如

  • SHOW SCHEMA RESOURCES
  • SHOW SHARDING TABLE RULES
  • SHOW SHARDING ALGORITHMS
  • SHOW READWRITE_SPLITTING RULES

但是,如果用户想通过 DistSQL 获取到一个 schema 的完整配置,就会比较困难。
另一方面,有用户想要通过 DistSQL 定义规则,并将它们导出为 YAML。相对的,也有用户想要将已有的 YAML 文件转换为 DistSQL 语句,从而彻底摆脱配置文件的束缚。
:triangular_flag_on_post:
因此,我建议设计新的 DistSQL 语法,以帮助用户实现上述的功能。
其中,配置导出要更容易一些,我们可以这个任务开始。

作为参考,我考虑了以下语法:

EXPORT SCHEMA (CONFIGURATION|CONFIG) [FROM schemaName] [, FILE="filePath"]

当用户输入 EXPORT SCHEMA CONIFG 时,将 schema 中的资源和规则配置全部打印出来(按照 YAML 的文本格式进行组织);

当用户输入 EXPORT SCHEMA CONIFG, file="/Users/foo/config-sharding.yaml" 时,将 schema 中的资源和规则配置写入到目标 YAML 文件中。(Proxy 写文件的权限需要由用户保证,否则将抛出异常)

以上只是一个初步的想法,欢迎任何想法和建议。

我创建了一个关联的 issue,也可以在 GitHub 讨论:

你好,DistSQL 创建的配置,请问是保存在哪里,如下语句创建后是存储在哪里(会不会重启proxxy,就没有了)

CREATE ENCRYPT RULE t_encrypt (
    COLUMNS(
        (NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,TYPE(NAME=AES,PROPERTIES('aes-key-value'='123456abc'))),
        (NAME=order_id,PLAIN=order_plain,CIPHER =order_cipher,TYPE(NAME=RC4,PROPERTIES('rc4-key-value'='123456abc')))
));

创建的规则保存在注册中心,根据配置模式的不同,有内存、文件、第三方注册中心等形式。
其中内存模式重启会丢失数据,一般建议使用 Cluster 模式。

好的,谢谢,创建的规则保存在注册中心的相关文档说明,请问是在哪里

前一贴 【模式】 给了超链接 :upside_down_face:

:innocent:谢谢啦 谢谢啦

京ICP备2021015875号