CREATE SHADOW RULE

描述

CREATE SHADOW RULE 语法用于创建影子库压测规则。

语法定义

语法 铁路图

  1. CreateShadowRule ::=
  2. 'CREATE' 'SHADOW' 'RULE' ifNotExists? shadowRuleDefinition (',' shadowRuleDefinition)*
  3. ifNotExists ::=
  4. 'IF' 'NOT' 'EXISTS'
  5. shadowRuleDefinition ::=
  6. ruleName '(' storageUnitMapping shadowTableRule (',' shadowTableRule)* ')'
  7. storageUnitMapping ::=
  8. 'SOURCE' '=' storageUnitName ',' 'SHADOW' '=' storageUnitName
  9. shadowTableRule ::=
  10. tableName '(' shadowAlgorithm ')'
  11. shadowAlgorithm ::=
  12. 'TYPE' '(' 'NAME' '=' shadowAlgorithmType ',' propertiesDefinition ')'
  13. ruleName ::=
  14. identifier
  15. storageUnitName ::=
  16. identifier
  17. tableName ::=
  18. identifier
  19. algorithmName ::=
  20. identifier
  21. shadowAlgorithmType ::=
  22. string
  23. propertiesDefinition ::=
  24. 'PROPERTIES' '(' key '=' value (',' key '=' value)* ')'
  25. key ::=
  26. string
  27. value ::=
  28. literal

补充说明

  • 重复的 ruleName 无法被创建;
  • storageUnitMapping 指定源数据库和影子库的映射关系,需使用 RDL 管理的 STORAGE UNIT ,请参考 存储单元
  • shadowAlgorithm 可同时作用于多个 shadowTableRule
  • algorithmName 会根据 ruleNametableNameshadowAlgorithmType 自动生成;
  • shadowAlgorithmType 目前支持 VALUE_MATCHREGEX_MATCHSQL_HINT
  • ifNotExists 子句用于避免出现 Duplicate shadow rule 错误。

示例

  • 创建影子库压测规则
  1. CREATE SHADOW RULE shadow_rule(
  2. SOURCE=demo_ds,
  3. SHADOW=demo_ds_shadow,
  4. t_order(TYPE(NAME="SQL_HINT")),
  5. t_order_item(TYPE(NAME="VALUE_MATCH", PROPERTIES("operation"="insert","column"="user_id", "value"='1')))
  6. );
  • 使用 ifNotExists 子句创建影子库压测规则
  1. CREATE SHADOW RULE IF NOT EXISTS shadow_rule(
  2. SOURCE=demo_ds,
  3. SHADOW=demo_ds_shadow,
  4. t_order(TYPE(NAME="SQL_HINT")),
  5. t_order_item(TYPE(NAME="VALUE_MATCH", PROPERTIES("operation"="insert","column"="user_id", "value"='1')))
  6. );

保留字

CREATESHADOWRULESOURCESHADOWTYPENAMEPROPERTIES

相关链接