Logo
影子库

影子库 #

语法描述
CREATE SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] …创建影子库规则
ALTER SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] …修改影子库规则
DROP SHADOW RULE ruleName [, ruleName] …删除影子库规则
SHOW SHADOW shadowRuleRULES [FROM databaseName]
SHOW SHADOW TABLE RULES [FROM databaseName]查看影子表
COUNT SHADOW RULE统计影子库规则的数量,在后续版本中将废弃此语法
DROP SHADOW ALGORITHM algorithmName [, algorithmName] …删除影子库算法
SHOW SHADOW ALGORITHMS [FROM databaseName]查看影子库算法
CREATE DEFAULT SHADOW ALGORITHM shadowAlgorithm创建缺省影子库算法
ALTER DEFAULT SHADOW ALGORITHM shadowAlgorithm修改缺省影子库算法
DROP DEFAULT SHADOW ALGORITHM [IF EXISTS]删除缺省影子库算法
SHOW DEFAULT SHADOW ALGORITHM查看缺省影子库算法

1. 创建影子库规则 #

CREATE SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] ... 

shadowRuleDefinition: ruleName(storageUnitMapping, shadowTableRule [, shadowTableRule] ...)

storageUnitMapping: SOURCE=storageUnitName, SHADOW=storageUnitName

shadowTableRule: tableName(shadowAlgorithm [, shadowAlgorithm] ...)

shadowAlgorithm: TYPE(NAME=shadowAlgorithmType, PROPERTIES([algorithmProperties] ...))

algorithmProperties: algorithmProperty [, algorithmProperty] ... 

algorithmProperty: key=value

参数说明

名称数据类型说明
ruleNameIDENTIFIER规则名称
storageUnitNameIDENTIFIER存储单元名称
tableNameIDENTIFIER影子表名称
algorithmNameIDENTIFIER影子算法名称
shadowAlgorithmTypeSTRING影子算法类型
  • 重复的 ruleName 无法被创建;
  • storageUnitMapping 指定源数据库和影子库的映射关系,需使用 RDL 管理的 storage unit ,请参考 存储单元
  • shadowAlgorithm 可同时作用于多个 shadowTableRule
  • shadowAlgorithmType 目前支持的算法参考影子库内置算法
  • shadowTableRule 能够被不同的 shadowRuleDefinition 复用,因此在执行 DROP SHADOW RULE 时,对应的 shadowTableRule 不会被移除;
  • shadowAlgorithm 能够被不同的 shadowTableRule 复用,因此在执行 ALTER SHADOW RULE 时,对应的 shadowAlgorithm 不会被移除。
  • algorithmName 创建规则时会根据 ruleNametableNameshadowAlgorithmType 和算法集合下标自动生成。默认算法名称为 default_shadow_algorithm

示例

  CREATE SHADOW RULE shadow_rule(
SOURCE=demo_ds,
SHADOW=demo_ds_shadow,
t_order(TYPE(NAME="SIMPLE_HINT", PROPERTIES("shadow"="true", "foo"="bar")),TYPE(NAME="REGEX_MATCH", PROPERTIES("operation"="insert","column"="user_id", "regex"='[1]'))), 
t_order_item(TYPE(NAME="VALUE_MATCH", PROPERTIES("operation"="insert","column"="user_id", "value"='1'))));

2. 修改影子库规则 #

ALTER SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] ... 

shadowRuleDefinition: ruleName(storageUnitMapping, shadowTableRule [, shadowTableRule] ...)

storageUnitMapping: SOURCE=storageUnitName, SHADOW=storageUnitName

shadowTableRule: tableName(shadowAlgorithm [, shadowAlgorithm] ...)

shadowAlgorithm: TYPE(NAME=shadowAlgorithmType, PROPERTIES([algorithmProperties] ...))

algorithmProperties: algorithmProperty [, algorithmProperty] ... 

algorithmProperty: key=value

参数说明

名称数据类型说明
ruleNameIDENTIFIER规则名称
storageUnitNameIDENTIFIER存储单元名称
tableNameIDENTIFIER影子表名称
algorithmNameIDENTIFIER影子算法名称
shadowAlgorithmTypeSTRING影子算法类型
  • storageUnitMapping 指定源数据库和影子库的映射关系,需使用 RDL 管理的 storage unit ,请参考 存储单元
  • shadowAlgorithm 可同时作用于多个 shadowTableRule
  • shadowAlgorithmType 目前支持 VALUE_MATCHREGEX_MATCHSIMPLE_HINT
  • shadowTableRule 能够被不同的 shadowRuleDefinition 复用,因此在执行 DROP SHADOW RULE 时,对应的 shadowTableRule 不会被移除;
  • shadowAlgorithm 能够被不同的 shadowTableRule 复用,因此在执行 ALTER SHADOW RULE 时,对应的 shadowAlgorithm 不会被移除。
  • algorithmName 创建规则时会根据 ruleNametableNameshadowAlgorithmType 和算法集合下标自动生成。默认算法名称为 default_shadow_algorithm

示例

ALTER SHADOW RULE shadow_rule(
SOURCE=demo_ds,
SHADOW=demo_ds_shadow,
t_order(TYPE(NAME="SIMPLE_HINT", PROPERTIES("shadow"="true", "foo"="bar")),TYPE(NAME="REGEX_MATCH", PROPERTIES("operation"="insert","column"="user_id", "regex"='[1]'))), 
t_order_item(TYPE(NAME="VALUE_MATCH", PROPERTIES("operation"="insert","column"="user_id", "value"='1'))));

3. 删除影子库规则 #

DROP SHADOW RULE ruleName [, ruleName] ...

参数说明

名称数据类型说明
ruleNameIDENTIFIER规则名称

示例

DROP SHADOW RULE shadow_rule;

4. 查看影子库规则 #

SHOW SHADOW shadowRule | RULES [FROM databaseName]
shadowRule: 
    RULE ruleName

参数说明

名称数据类型说明
ruleNameIDENTIFIER规则名称

示例

查看所有影子库规则

mysql> SHOW SHADOW RULES;
+--------------------+-------------+-------------+--------------+
| rule_name          | source_name | shadow_name | shadow_table |
+--------------------+-------------+-------------+--------------+
| shadow_rule_1      | ds_1        | ds_shadow_1 | t_order      |
| shadow_rule_2      | ds_2        | ds_shadow_2 | t_order_item |
+--------------------+-------------+-------------+--------------+
2 rows in set (0.02 sec)

查看指定影子库规则

mysql> SHOW SHADOW RULE shadow_rule_1;
+------------------+-------------+-------------+--------------+
| rule_name        | source_name | shadow_name | shadow_table |
+------------------+-------------+-------------+--------------+
| shadow_rule_1    | ds_1        | ds_shadow_1 | t_order      |
+------------------+-------------+-------------+--------------+
1 rows in set (0.01 sec)

输出说明

说明
rule_name规则名称
source_name源数据库
shadow_name影子数据库
shadow_table影子表

5. 查看影子表的影子算法 #

SHOW SHADOW TABLE RULES [FROM databaseName]

示例

mysql> SHOW SHADOW TABLE RULES;
+--------------+--------------------------------------------------------------------------------+
| shadow_table | shadow_algorithm_name                                                          |
+--------------+--------------------------------------------------------------------------------+
| t_order_1    | user_id_match_algorithm,simple_hint_algorithm_1                                |  
+--------------+--------------------------------------------------------------------------------+
1 rows in set (0.01 sec)

输出说明

说明
shadow_table影子表
shadow_algorithm_name影子算法名称

6. 删除影子库算法 #

DROP SHADOW ALGORITHM algorithmName [, algorithmName] ...

参数说明

名称数据类型说明
algorithmNameIDENTIFIER影子算法名称
  • shadowAlgorithm 能够被不同的 shadowTableRule 复用,因此在执行 ALTER SHADOW RULE 时,对应的 shadowAlgorithm 不会被移除。
  • 正在被使用的 shadowAlgorithm 不能被删除

7. 查看影子库算法 #

SHOW SHADOW ALGORITHMS [FROM databaseName]

示例

mysql> SHOW SHADOW ALGORITHMS;
+-------------------------+--------------------+-------------------------------------------+----------------+
| shadow_algorithm_name   | type               | props                                     | is_default     |
+-------------------------+--------------------+-------------------------------------------+----------------+
| user_id_match_algorithm | REGEX_MATCH        | operation=insert,column=user_id,regex=[1] | false          |
| simple_hint_algorithm_1 | SIMPLE_HINT        | shadow=true,foo=bar                       | false          |
+-------------------------+--------------------+-------------------------------------------+----------------+
2 rows in set (0.01 sec)

输出说明

说明
shadow_algorithm_name影子算法名称
type算法类型
props算法参数
is_default是否默认

8. 创建缺省影子库算法 #

CREATE DEFAULT SHADOW ALGORITHM shadowAlgorithm

shadowAlgorithm: TYPE(NAME=shadowAlgorithmType, PROPERTIES([algorithmProperties] ...))

algorithmProperties: algorithmProperty [, algorithmProperty] ... 

algorithmProperty: key=value

参数说明

名称数据类型说明
algorithmNameIDENTIFIER影子算法名称
shadowAlgorithmTypeSTRING影子算法类型
  • shadowAlgorithm 能够被不同的 shadowTableRule 复用,因此在执行 ALTER SHADOW RULE 时,对应的 shadowAlgorithm 不会被移除。
  • algorithmName 创建规则时会根据 ruleNametableNameshadowAlgorithmType 和算法集合下标自动生成。默认算法名称为 default_shadow_algorithm

示例

CREATE DEFAULT SHADOW ALGORITHM TYPE(NAME="SIMPLE_HINT", PROPERTIES("shadow"="true", "foo"="bar");

9. 修改缺省影子库算法 #

ALTER DEFAULT SHADOW ALGORITHM shadowAlgorithm

shadowAlgorithm: TYPE(NAME=shadowAlgorithmType, PROPERTIES([algorithmProperties] ...))

algorithmProperties: algorithmProperty [, algorithmProperty] ... 

algorithmProperty: key=value

参数说明

名称数据类型说明
algorithmNameIDENTIFIER影子算法名称
shadowAlgorithmTypeSTRING影子算法类型
  • shadowAlgorithm 能够被不同的 shadowTableRule 复用,因此在执行 ALTER SHADOW RULE 时,对应的 shadowAlgorithm 不会被移除。
  • algorithmName 创建规则时会根据 ruleNametableNameshadowAlgorithmType 和算法集合下标自动生成。默认算法名称为 default_shadow_algorithm

示例

ALTER DEFAULT SHADOW ALGORITHM TYPE(NAME="SIMPLE_HINT", PROPERTIES("shadow"="false", "foo"="bar");

10. 删除缺省影子库算法 #

DROP DEFAULT SHADOW ALGORITHM [IF EXISTS]

参数说明

示例

DROP DEFAULT SHADOW ALGORITHM;

11. 查看缺省影子库算法 #

SHOW DEFAULT SHADOW ALGORITHM;

参数说明

示例

SHOW DEFAULT SHADOW ALGORITHM;