影子库 #
语法 | 描述 |
---|---|
CREATE SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] … | 创建影子库规则 |
ALTER SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] … | 修改影子库规则 |
DROP SHADOW RULE ruleName [, ruleName] … | 删除影子库规则 |
SHOW SHADOW shadowRule | RULES [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
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
ruleName | IDENTIFIER | 规则名称 |
storageUnitName | IDENTIFIER | 存储单元名称 |
tableName | IDENTIFIER | 影子表名称 |
algorithmName | IDENTIFIER | 影子算法名称 |
shadowAlgorithmType | STRING | 影子算法类型 |
- 重复的
ruleName
无法被创建; storageUnitMapping
指定源数据库和影子库的映射关系,需使用 RDL 管理的storage unit
,请参考 存储单元;shadowAlgorithm
可同时作用于多个shadowTableRule
;shadowAlgorithmType
目前支持的算法参考影子库内置算法;shadowTableRule
能够被不同的shadowRuleDefinition
复用,因此在执行DROP SHADOW RULE
时,对应的shadowTableRule
不会被移除;shadowAlgorithm
能够被不同的shadowTableRule
复用,因此在执行ALTER SHADOW RULE
时,对应的shadowAlgorithm
不会被移除。algorithmName
创建规则时会根据ruleName
、tableName
和shadowAlgorithmType
和算法集合下标自动生成。默认算法名称为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
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
ruleName | IDENTIFIER | 规则名称 |
storageUnitName | IDENTIFIER | 存储单元名称 |
tableName | IDENTIFIER | 影子表名称 |
algorithmName | IDENTIFIER | 影子算法名称 |
shadowAlgorithmType | STRING | 影子算法类型 |
storageUnitMapping
指定源数据库和影子库的映射关系,需使用 RDL 管理的storage unit
,请参考 存储单元;shadowAlgorithm
可同时作用于多个shadowTableRule
;shadowAlgorithmType
目前支持VALUE_MATCH
、REGEX_MATCH
和SIMPLE_HINT
;shadowTableRule
能够被不同的shadowRuleDefinition
复用,因此在执行DROP SHADOW RULE
时,对应的shadowTableRule
不会被移除;shadowAlgorithm
能够被不同的shadowTableRule
复用,因此在执行ALTER SHADOW RULE
时,对应的shadowAlgorithm
不会被移除。algorithmName
创建规则时会根据ruleName
、tableName
和shadowAlgorithmType
和算法集合下标自动生成。默认算法名称为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] ...
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
ruleName | IDENTIFIER | 规则名称 |
示例
DROP SHADOW RULE shadow_rule;
4. 查看影子库规则 #
SHOW SHADOW shadowRule | RULES [FROM databaseName]
shadowRule:
RULE ruleName
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
ruleName | IDENTIFIER | 规则名称 |
示例
查看所有影子库规则
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] ...
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
algorithmName | IDENTIFIER | 影子算法名称 |
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
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
algorithmName | IDENTIFIER | 影子算法名称 |
shadowAlgorithmType | STRING | 影子算法类型 |
shadowAlgorithm
能够被不同的shadowTableRule
复用,因此在执行ALTER SHADOW RULE
时,对应的shadowAlgorithm
不会被移除。algorithmName
创建规则时会根据ruleName
、tableName
和shadowAlgorithmType
和算法集合下标自动生成。默认算法名称为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
参数说明
名称 | 数据类型 | 说明 |
---|---|---|
algorithmName | IDENTIFIER | 影子算法名称 |
shadowAlgorithmType | STRING | 影子算法类型 |
shadowAlgorithm
能够被不同的shadowTableRule
复用,因此在执行ALTER SHADOW RULE
时,对应的shadowAlgorithm
不会被移除。algorithmName
创建规则时会根据ruleName
、tableName
和shadowAlgorithmType
和算法集合下标自动生成。默认算法名称为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;