MySQL 5.6主从复制第一部分[简介及配置]
相关阅读:
----------------------------------------分割线----------------------------------------
binlog-format=ROW
log-slave-updates=true
gtid-mode=on # GTID only
enforce-gtid-consistency=true # GTID only
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log-events=1
server-id=1
report-port=5610
port=5610
log-bin=black-bin.log
report-host=black
innodb_flush_log_at_trx_commit=1
sync_binlog=1
修改从服务器配置文件,添加下面几行:
binlog-format=ROW
log-slave-updates=true
gtid-mode=on # GTID only
enforce-gtid-consistency=true # GTID only
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log-events=1
server-id=2
report-port=5611
port=5611
log-bin=blue-bin.log
report-host=blue
innodb_flush_log_at_trx_commit=1
sync_binlog=1
可以看到主与从的配置文件基本上是相同的,这样也便于在主服务器挂掉的时候,不用修改配置文件即可把从服务器提升为主。
下面简单介绍每一行的含义:
binlog-format
采用了row-based, 传说5.6对row-based replication做了优化,具体不明。
gtid-mode与enforce-gtid-consistency
决定使用gtid。
传统方式下,主从是基于master binary logfile 与 binary logfile postition的,
当主服务器挂掉,需要把某个从服务器提升为主的时候,需要做很多工作,
主要原因还是在于主从复制其实是异步的,
导致多台从服务器间的数据不一致,有的同步速度快,有的速度慢, 很有可能每一台从服务器上面的Read_Master_Log_Pos都是不同的。
首先要根据Read_Master_Log_Pos来确定每台从服务器缺少binlog中的哪些transactions(evens),帮它们补充完之后,
从服务器间的数据完全一致了,然后才能把任意一台从服务器提升为主。
这个过程,人工做起来实在是比较痛苦,还好有一些开源的第三方程序可以自动做到,比如MHA。