§ GreatSQL高可用特性之主主双向复制防止回路
§ 功能说明
在跨机房容灾场景,同时开启多源复制和主主双向复制时,可能出现数据回路问题。新增 replicate_server_mode
选项用于控制只应用多源复制管道内临近主节点上产生的binlog,不会应用其他的非临近节点产生的binlog,避免出现数据回路问题。多通道主主双向复制能减少机房容灾演练和切换时的主从配置变更,该特性由中移智家DBA团队(徐良)贡献代码。更多详细内容参考:issue#I8E8QB (opens new window)。
§ 新增系统选项
System Variable Name | replicate_server_mode |
---|---|
Command-Line Format | replicate_server_mode[={0|1}] |
System Variable | replicate_server_mode |
Variable Scope | Global |
Dynamic Variable | No |
Type | bool |
Permitted Values | [0, 1] |
Default | 0 |
设置为1表示只应用只应用多源复制管道内临近主节点上产生的binlog,不会应用其他的非临近节点产生的binlog;设置为0表示应用binlog时不做此约束。
提醒:该选项是个全局选项,且不可在线动态修改,因此需要在实例启动前就设置好。尝试在线修改的话,会提示报错,例如:
greatsql> select @@session.replicate_server_mode;
ERROR 1238 (HY000): Variable 'replicate_server_mode' is a GLOBAL variable
greatsql> select @@global.replicate_server_mode;
+--------------------------------+
| @@global.replicate_server_mode |
+--------------------------------+
| 0 |
+--------------------------------+
1 row in set (0.00 sec)
greatsql> set global replicate_server_mode = 0;
ERROR 1238 (HY000): Variable 'replicate_server_mode' is a read only variable
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
更多关于该特性的应用案例请参考:基于GreatSQL的跨机房多通道主主双向复制容灾切换实战演练 (opens new window)、基于MySQL多通道主主双向复制的机房容灾方案 (opens new window)。
延伸阅读