12.3 配置主主复制
配置为主主复制,需要解决的主要问题是自增键/主键冲突。
当将多个服务器配置为复制主服务器时,如果要使用自增列(AUTO_INCREMENT),那么应采取特殊的步骤以防止键值冲突,否则插入行时多个主服务器会
试图使用相同的自增列值。
服务器变量auto_increment_increment和auto_increment_offset可以帮助协调多主服务器复制和自增列。
其中,auto_increment_increment用于控制自增列值增加的间隔。auto_increment_offset用于确定自增列值的起点。
假设有两台主机A、B,它们互为主从,那么配置可以如下。
A主机:
auto_increment_increment=3
auto_increment_offset=1
B主机:
auto_increment_increment=3
auto_increment_offset=2
我们还需要注意,除了自增字段不能互相冲突之外,所有表的键值也不能互相冲突,同一时刻的操作需要保证不会插入相同的键值。
还要留意复制的时序问题,一定要确保任一时刻只写一个库,主主复制更多的是为了故障冗余而不是为了能够多点写入。一般配置为Active-Standby,而不是
Active-Active。
一般而言,配置为主主复制会导致维护更加复杂,可能还会带来隐患,需要更完善的监控措施和自动化手段。配置主主复制的步骤这里不再赘述,对每个库分
别执行配置主从复制的步骤即可。
12.4 配置级联复制、环形复制
(1)配置级联复制
假如需要配置成A→B→C→D→E这样的形式,箭头表示复制到,那么可按如下步骤进行。
1)首先打开各实例的log_slave_update选项,首尾两个实例也可以不用打开。
2)确保各主机的server-id不同。
3)配置每一对主从,A→B,B→C,C→D,D→E。
注意节点越多,健壮性越差,建议不要超过4~5个节点。
(2)环形复制
1