Logo
RAL 语法

RAL 语法 #

RAL (Resource & Rule Administration Language) 为 SphereEx-DBPlusEngine 的管理语言, 负责强制路由、事务类型切换、弹性伸缩、分片执行计划查询等增量功能的操作。

强制路由 #

语句说明示例
set readwrite_splitting hint source = [auto / write]针对当前连接,设置读写分离的路由策略(自动路由或强制到写库)set readwrite_splitting hint source = write
set sharding hint database_value = yy针对当前连接,设置 hint 仅对数据库分片有效,并添加分片值,yy:数据库分片值set sharding hint database_value = 100
add sharding hint database_value xx = yy针对当前连接,为表 xx 添加分片值 yy,xx:逻辑表名称,yy:数据库分片值add sharding hint database_value t_order= 100
add sharding hint table_value xx = yy针对当前连接,为表 xx 添加分片值 yy,xx:逻辑表名称,yy:表分片值add sharding hint table_value t_order = 100
clear hint针对当前连接,清除 hint 所有设置clear hint
clear [sharding hint / readwrite_splitting hint]针对当前连接,清除 sharding 或 readwrite_splitting 的 hint 设置clear readwrite_splitting hint
show [sharding / readwrite_splitting] hint status针对当前连接,查询 sharding 或 readwrite_splitting 的 hint 设置show readwrite_splitting hint status

数据迁移 #

语句说明示例
SHOW MIGRATION RULE查询数据迁移规则SHOW MIGRATION RULE
ALTER MIGRATION RULE修改数据迁移规则ALTER MIGRATION RULE (READ(RATE_LIMITER (TYPE(NAME='QPS’,PROPERTIES(‘qps'='5000’)))))
MIGRATE TABLE ds.schema.table INTO table从源端迁移到目标端MIGRATE TABLE ds_0.public.t_order INTO t_order
SHOW MIGRATION LIST查询运行列表SHOW MIGRATION LIST
SHOW MIGRATION STATUS jobId查询作业状态SHOW MIGRATION STATUS 1234
STOP MIGRATION jobId停止作业STOP MIGRATION 12345
START MIGRATION jobId开启停止的作业START MIGRATION 1234
CHECK MIGRATION jobId数据一致性校验CHECK MIGRATION 1234
SHOW MIGRATION CHECK ALGORITHMS查询可用的一致性校验算法SHOW MIGRATION CHECK ALGORITHMS
CHECK MIGRATION jobId BY TYPE(NAME=algorithmTypeName)数据一致性校验,使用指定的校验算法CHECK MIGRATION 1234 BY TYPE(NAME="DATA_MATCH”)
SHOW MIGRATION CHECK STATUS jobId查询数据一致性校验进度SHOW MIGRATION CHECK STATUS 1234
STOP MIGRATION CHECK jobId停止数据一致性校验STOP MIGRATION CHECK 1234
START MIGRATION CHECK jobId开启数据一致性校验START MIGRATION CHECK 1234
ROLLBACK MIGRATION jobId撤销作业。注意:该语句会清理目标端表,请谨慎操作ROLLBACK MIGRATION 1234
COMMIT MIGRATION jobId提交作业COMMIT MIGRATION 1234

弹性伸缩 #

语句说明示例
SHOW RESHARDING RULE查询重分片规则SHOW RESHARDING RULE
ALTER RESHARDING RULE修改重分片规则ALTER RESHARDING RULE (READ(RATE_LIMITER (TYPE(NAME='QPS’,PROPERTIES(‘qps'='5000’)))))
SHOW RESHARDING LIST查询运行列表SHOW RESHARDING LIST
SHOW RESHARDING STATUS jobId查询任务状态SHOW RESHARDING STATUS 1234
STOP RESHARDING jobId停止运行任务STOP RESHARDING 12345
START RESHARDING jobId开始运行任务START RESHARDING 1234
CHECK RESHARDING jobId数据一致性校验CHECK RESHARDING 1234
SHOW RESHARDING CHECK ALGORITHMS查询可用的一致性校验算法SHOW RESHARDING CHECK ALGORITHMS
CHECK RESHARDING jobId BY TYPE(NAME=algorithmTypeName)数据一致性校验,使用指定的校验算法CHECK RESHARDING 1234 BY TYPE(NAME=DEFAULT)
SHOW RESHARDING CHECK STATUS jobId查询数据一致性校验进度SHOW RESHARDING CHECK STATUS 1234
STOP RESHARDING CHECK jobId停止数据一致性校验STOP RESHARDING CHECK 1234
START RESHARDING CHECK jobId开启数据一致性校验START RESHARDING CHECK 1234
STOP RESHARDING SOURCE WRITING jobId旧的 DBPlusEngine 数据源停写STOP RESHARDING SOURCE WRITING 1234
FORCE? APPLY RESHARDING jobId切换至新的 DBPlusEngine 元数据APPLY RESHARDING 1234
RESTORE RESHARDING SOURCE WRITING jobId旧的 DBPlusEngine 数据源恢复写RESTORE RESHARDING SOURCE WRITING 1234
FORCE? COMMIT RESHARDING jobId提交作业COMMIT RESHARDING 1234
ROLLBACK RESHARDING jobId撤销作业ROLLBACK RESHARDING 1234

加密洗数 #

语句说明示例
SHOW ENCRYPTING RULE查询加密洗数规则SHOW ENCRYPTING RULE
ALTER ENCRYPTING RULE修改加密洗数规则ALTER ENCRYPTING RULE (READ(RATE_LIMITER (TYPE(NAME='QPS’,PROPERTIES(‘qps'='5000’)))))
SHOW ENCRYPTING LIST;查询运行列表SHOW ENCRYPTING LIST;
SHOW ENCRYPTING STATUS {jobId};查询任务状态,jobId:任务 idSHOW ENCRYPTING STATUS 1234;
ENCRYPT TABLE {tableName};开始运行任务,tableName:表名ENCRYPT TABLE t_user;
COMMIT ENCRYPTING {jobId};提交洗数任务,jobId:任务 id。当前版本 commit 只做清理 job 的操作,后续版本中将支持 commit 和 roolbackCOMMIT ENCRYPTING 1234;

解密洗数 #

语句说明示例
SHOW DECRYPTING RULE查询解密洗数规则SHOW DECRYPTING RULE
ALTER DECRYPTING RULE修改解密洗数规则ALTER DECRYPTING RULE (READ(RATE_LIMITER (TYPE(NAME='QPS’,PROPERTIES(‘qps'='5000’)))))
SHOW DECRYPTING LIST;查询运行列表SHOW DECRYPTING LIST;
SHOW DECRYPTING STATUS {jobId};查询任务状态,jobId:任务 idSHOW DECRYPTING STATUS 1234;
DECRYPT TABLE {tableName};开始运行任务,tableName:表名DECRYPT TABLE t_user;
COMMIT DECRYPTING {jobId};提交解密洗数任务,jobId:任务 id。当前版本 commit 只做清理 job 的操作,后续版本中将支持 commit 和 roolbackCOMMIT ENCRYPTING 1234;

熔断 #

语句说明示例
ALTER READWRITE_SPLITTING RULE [ groupName ] (ENABLE / DISABLE) storageUnitName [FROM databaseName]启用 / 禁用读库ALTER READWRITE_SPLITTING RULE group_1 ENABLE read_ds_1
[ENABLE / DISABLE] COMPUTE NODE instanceId启用 / 禁用 proxy 实例DISABLE COMPUTE NODE instance_1
SHOW COMPUTE NODES查询 proxy 实例信息SHOW COMPUTE NODES
SHOW STATUS FROM READWRITE_SPLITTING (RULES / RULE groupName) [FROM databaseName]查询读写分离数据源状态SHOW STATUS FROM READWRITE_SPLITTING RULES

全局规则 #

语句说明示例
SHOW AUTHORITY RULE查询权限规则配置SHOW AUTHORITY RULE
SHOW TRANSACTION RULE查询事务规则配置SHOW TRANSACTION RULE
SHOW SQL_PARSER RULE查询解析引擎规则配置SHOW SQL_PARSER RULE
SHOW TRAFFIC[ RULES / RULE ruleName]查询指定的双路由规则或者所有双路由规则SHOW TRAFFIC RULES;
CREATE TRAFFIC RULE sql_match_traffic (LABLES(xxx),TRAFFIC_ALGORITHM(TYPE(NAME=xxx,PROPERTIES(“key” = “value”))), LOAD_BALANCER(TYPE(NAME=xxx,PROPERTIES(“key"="value”))))创建双路由规则,TRAFFIC_ALGORITHM 支持 SQL_MATCHSQL_HINT 两种类型 LOAD_BALANCER 支持 RANDOMROUND_ROBIN 两种类型CREATE TRAFFIC RULE sql_match_traffic (LABLES(OLTP),TRAFFIC_ALGORITHM(TYPE(NAME=SQL_MATCH,PROPERTIES(“sql” = “SELECT * FROM t_order WHERE order_id = ?; UPDATE t_order SET order_id = ?;"))),LOAD_BALANCER(TYPE(NAME=RANDOM)))
ALTER TRANSACTION RULE(DEFAULT=xx,TYPE(NAME=xxx, PROPERTIES(“key1"="value1”,“key2"="value2”…)))更新事务规则配置,DEFAULT:默认事务类型,支持 LOCAL、XA、BASE;NAME:事务管理器名称,支持 Atomikos、Narayana 和 BitronixALTER TRANSACTION RULE(DEFAULT=XA,TYPE(NAME=Narayana, PROPERTIES(“databaseName"="jbossts”,“host"="127.0.0.1”)))
ALTER SQL_PARSER RULE SQL_COMMENT_PARSE_ENABLE=xx, PARSE_TREE_CACHE(INITIAL_CAPACITY=xx, MAXIMUM_SIZE=xx, CONCURRENCY_LEVEL=xx), SQL_STATEMENT_CACHE(INITIAL_CAPACITY=xxx, MAXIMUM_SIZE=xxx, CONCURRENCY_LEVEL=xxx)更新解析引擎规则配置,SQL_COMMENT_PARSE_ENABLE:是否解析 SQL 注释,PARSE_TREE_CACHE:语法树本地缓存配置,SQL_STATEMENT_CACHE:SQL 语句本地缓存配置项ALTER SQL_PARSER RULE SQL_COMMENT_PARSE_ENABLE=false, PARSE_TREE_CACHE(INITIAL_CAPACITY=10, MAXIMUM_SIZE=11, CONCURRENCY_LEVEL=1), SQL_STATEMENT_CACHE(INITIAL_CAPACITY=11, MAXIMUM_SIZE=11, CONCURRENCY_LEVEL=100)
ALTER TRAFFIC RULE sql_match_traffic (LABLES(xxx),TRAFFIC_ALGORITHM(TYPE(NAME=xxx,PROPERTIES(“key” = “value”))),LOAD_BALANCER(TYPE(NAME=xxx,PROPERTIES(“key"="value”))))修改双路由规则,TRAFFIC_ALGORITHM 支持 SQL_MATCHSQL_HINT 两种类型 LOAD_BALANCER 支持 RANDOMROUND_ROBIN 两种类型ALTER TRAFFIC RULE sql_match_traffic (LABLES(OLTP),TRAFFIC_ALGORITHM(TYPE(NAME=SQL_MATCH,PROPERTIES(“sql” = “SELECT * FROM t_order WHERE order_id = ?; UPDATE t_order SET order_id = ?;"))), LOAD_BALANCER(TYPE(NAME=RANDOM)))
DROP TRAFFIC RULE ruleName [, ruleName]删除双路由规则DROP TRAFFIC RULE sql_match_traffic

变量管理 #

在 DistSQL 中,属性配置名称均使用下划线分隔。

语句说明示例
SET DIST VARIABLE variable_name = xxvariable_name 为 proxy 的属性配置SET DIST VARIABLE sql_show = true
SHOW DIST VARIABLES查询 proxy 所有的属性配置SHOW DIST VARIABLES
SHOW DIST VARIABLE WHERE name = variable_name查询指定的 proxy 属性SHOW DIST VARIABLE WHERE name = sql_show
  • 特殊变量

特殊变量不在 Proxy 的 属性配置 中,但可以通过 DistSQL 动态管理:

语句说明示例
SHOW DIST VARIABLE WHERE name = transaction_type查询事务类型SHOW DIST VARIABLE WHERE name = transaction_type
SET DIST VARIABLE transaction_type = xx修改当前连接的事务类型, 支持 LOCAL,XA,BASESET DIST VARIABLE transaction_type = XA
SHOW DIST VARIABLE WHERE name = agent_plugins_enabled查询 agent 插件启用状态SHOW DIST VARIABLE WHERE name = agent_plugins_enabled
SET DIST VARIABLE agent_plugins_enabled = xx设置 agent 插件的启用状态,值为布尔型SET DIST VARIABLE agent_plugins_enabled = true
SHOW DIST VARIABLE WHERE name = cached_connections查询当前缓存的连接数量SHOW DIST VARIABLE WHERE name = cached_connections
SHOW DIST VARIABLE WHERE name = general_query_log查询全量日志开启状态SHOW DIST VARIABLE WHERE name = general_query_log
SET DIST VARIABLE general_query_log = xx设置全量日志开启状态SET DIST VARIABLE general_query_log = true
SHOW DIST VARIABLE WHERE name = slow_query_log查询慢日志开启状态SHOW DIST VARIABLE WHERE name = slow_query_log
SET DIST VARIABLE slow_query_log = xx设置慢日志开启状态SET DIST VARIABLE slow_query_log = true
SHOW DIST VARIABLE WHERE name = long_query_time查询慢查询阈值SHOW DIST VARIABLE WHERE name = long_query_time
SET DIST VARIABLE long_query_time = xx设置慢查询阈值,单位为毫秒SET DIST VARIABLE long_query_time = 5000

其他 #

语句说明示例
SHOW COMPUTE NODE INFO查询当前 proxy 的实例信息SHOW COMPUTE NODE INFO
SHOW COMPUTE NODE MODE查询当前 proxy 的 mode 配置SHOW COMPUTE NODE MODE
LABEL COMPUTE NODE instanceId WITH labelName [ , labelName ]为实例添加标签LABEL COMPUTE NODE 10.7.7.136@3309 with olap,group_by
UNLABEL COMPUTE NODE instanceId移除实例的所有标签UNLABEL COMPUTE NODE 10.7.7.136@3309
UNLABEL COMPUTE NODE instanceId WITH labelName为实例移除指定的标签UNLABEL COMPUTE NODE 10.7.7.136@3309 WITH group_by
RELABEL COMPUTE NODE instanceId with labelName [ , labelName ]为实例重新添加标签(覆盖原有的标签)RELABEL COMPUTE NODE 10.7.7.136@3309 with label_9, label_0
REFRESH TABLE METADATA刷新所有表的元数据REFRESH TABLE METADATA
REFRESH TABLE METADATA tableName刷新指定表的元数据REFRESH TABLE METADATA t_order
REFRESH TABLE METADATA tableName FROM STORAGE UNIT storageUnitName刷新指定数据源中表的元数据REFRESH TABLE METADATA t_order FROM STORAGE UNIT ds_1
REFRESH TABLE METADATA FROM STORAGE UNIT storageUnitName SCHEMA schemaName刷新指定 schema 中表的元数据,如果 schema 中不存在表,则会删除该 schemaREFRESH TABLE METADATA FROM STORAGE UNIT ds_1 SCHEMA db_schema
SHOW TABLE METADATA tableName [, tableName] …查询表的元数据SHOW TABLE METADATA t_order
EXPORT DATABASE CONFIGURATION [FROM databaseName] [TO FILE “filePath”]将 database 中的数据源和规则配置导出为 YAML 格式EXPORT DATABASE CONFIGURATION TO FILE “/xxx/config-sharding.yaml”
IMPORT DATABASE CONFIGURATION FROM FILE “filePath”将 YAML 中的配置导入到 database 中,仅支持对空库进行导入操作IMPORT DATABASE CONFIGURATION FROM FILE “/xxx/config-sharding.yaml”
SHOW RULES USED STORAGE UNIT storageUnitName [FROM databaseName]查询 database 中使用指定数据源的规则SHOW RULES USED STORAGE UNIT ds_0 FROM databaseName
select [,string] … [,] decrypt({tableName}, {encryptColumn}, {encryptValue}), [,string] …查询解密结果,跟 select 用法一致,提供 decrypt() 函数,tableName 为需要解密的表,encryptColumn 为需要解密的列, encryptValue 为需要解密的真实值。使用时需要配置对应的加密规则。SELECT ‘Lm04PRW+sp+mG/QuimAUew==’, decrypt(t_user, pwd_cipher, ‘Lm04PRW+sp+mG/QuimAUew==’) UNION SELECT ‘XXX’, decrypt(t_user, pwd_cipher, ‘XXX’);

注意事项 #

DBPlusEngine-Proxy 默认不支持 hint,如需支持,请在 conf/server.yaml 中,将 properties 的属性 proxy-hint-enabled 设置为 true。