CREATE READWRITE_SPLITTING RULE
描述
。
CREATE READWRITE_SPLITTING RULE 语法用于创建读写分离规则。
语法定义
CreateReadwriteSplittingRule ::=
'CREATE' 'READWRITE_SPLITTING' 'RULE' ifNotExists? readwriteSplittingDefinition (',' readwriteSplittingDefinition)*
ifNotExists ::=
'IF' 'NOT' 'EXISTS'
readwriteSplittingDefinition ::=
ruleName '(' dataSourceDefinition (',' transactionalReadQueryStrategyDefinition)? (',' loadBalancerDefinition)? ')'
dataSourceDefinition ::=
'WRITE_STORAGE_UNIT' '=' writeStorageUnitName ',' 'READ_STORAGE_UNITS' '(' storageUnitName (',' storageUnitName)* ')'
transactionalReadQueryStrategyDefinition ::=
'TRANSACTIONAL_READ_QUERY_STRATEGY' '=' transactionalReadQueryStrategyType
loadBalancerDefinition ::=
'TYPE' '(' 'NAME' '=' algorithmType (',' propertiesDefinition)? ')'
ruleName ::=
identifier
writeStorageUnitName ::=
identifier
storageUnitName ::=
identifier
transactionalReadQueryStrategyType ::=
string
algorithmType ::=
string
propertiesDefinition ::=
'PROPERTIES' '(' (key '=' value (',' key '=' value)*)? ')'
key ::=
string
value ::=
literal补充说明
transactionalReadQueryStrategyType指定事务内读请求路由策略,请参考YAML 配置;algorithmType指定负载均衡算法类型,请参考负载均衡算法;- 重复的
ruleName将无法被创建; ifNotExists子句用于避免出现Duplicate readwrite_splitting rule错误。
示例
创建读写分离规则
CREATE READWRITE_SPLITTING RULE ms_group_0 (
WRITE_STORAGE_UNIT=write_ds,
READ_STORAGE_UNITS(read_ds_0,read_ds_1),
TYPE(NAME="random")
);使用 ifNotExists 子句创建读写分离规则
- 读写分离规则
CREATE READWRITE_SPLITTING RULE IF NOT EXISTS ms_group_0 (
WRITE_STORAGE_UNIT=write_ds,
READ_STORAGE_UNITS(read_ds_0,read_ds_1),
TYPE(NAME="random")
);保留字
CREATE、READWRITE_SPLITTING、RULE、WRITE_STORAGE_UNIT、READ_STORAGE_UNITS
、TYPE、NAME、PROPERTIES、TRUE、FALSE