1.配置多主结构
多主结构可以用基于bin-log的位置来设置,也可以基于GTID来设置
1.前提条件
1/master info 与relay_log存储方式有两种,FILE与TABLE,默认是file。从库上要保留master info与relay_log的信息,因为多主结构,所以不能使用file的方式存储。
mysql> STOP SLAVE;mysql> SET GLOBAL master_info_repository = 'TABLE';mysql> SET GLOBAL relay_log_info_repository = 'TABLE';
2/主库上创建同步的账号
mysql> CREATE USER 'ted'@'replicahost' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'ted'@'replicahost';
2.增加一个基于GTID的主库到主从结构中
mysql> CHANGE MASTER TO MASTER_HOST="source1", MASTER_USER="ted", \
MASTER_PASSWORD="password", MASTER_AUTO_POSITION=1 FOR CHANNEL "source_1";
mysql> CHANGE MASTER TO MASTER_HOST="source2", MASTER_USER="ted", \
MASTER_PASSWORD="password", MASTER_AUTO_POSITION=1 FOR CHANNEL "source_2";
3.增加一个基于position的主库到主从结构中
mysql> CHANGE MASTER TO MASTER_HOST="source1", MASTER_USER="ted", MASTER_PASSWORD="password", \
MASTER_LOG_FILE='source1-bin.000006', MASTER_LOG_POS=628 FOR CHANNEL "source_1";
mysql> CHANGE MASTER TO MASTER_HOST="source2", MASTER_USER="ted", MASTER_PASSWORD="password", \
MASTER_LOG_FILE='source2-bin.000018', MASTER_LOG_POS=104 FOR CHANNEL "source_2";
4.开启或停止主从同步
mysql> START/STOP SLAVE FOR CHANNEL "source_1";
mysql> START/STOP SLAVE FOR CHANNEL "source_2";
从库上有多个主库,可以使用start slave全部开启,也可以使用for channel 单独开启。关闭也是一样的
5.重置从库
RESET SLAVE;
RESET SLAVE FOR CHANNEL "source_1";
默认情况下可以使用reset slave全部重置,也可以使用for channel指定重置。对于基于GTID的复制,reset slave不会影响到之前执行的GTID,但是reset master会。
reset slave只是会重置复制的位置(position),清空relay log。不会清空例如hostname的连接信息,如果想要清空连接信息,可以使用reset slave all语句。
6.监控多主结构
1/使用performance schema库的表
mysql> SELECT * FROM replication_connection_status\G;
*************************** 1. row ***************************
CHANNEL_NAME: source_1
GROUP_NAME:
SOURCE_UUID: 046e41f8-a223-11e4-a975-0811960cc264
THREAD_ID: 24
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET: 046e41f8-a223-11e4-a975-0811960cc264:4-37
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
*************************** 2. row ***************************
CHANNEL_NAME: source_2
GROUP_NAME:
SOURCE_UUID: 7475e474-a223-11e4-a978-0811960cc264
THREAD_ID: 26
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET: 7475e474-a223-11e4-a978-0811960cc264:4-6
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
2 rows in set (0.00 sec)
2/使用show slave status for channel source_1;语句。
