当前位置:Gxlcms > mysql > MySQL5.6主从复制第一部分[简介及配置]

MySQL5.6主从复制第一部分[简介及配置]

时间:2021-07-01 10:21:17 帮助过:30人阅读

很久之前写过《MySQL 5.1的主从配置》,如今MySQL已经发布了5.6.10,在主从复制功能上做了很多优化,特别是GTID(Global Transact

很久之前写过《MySQL 5.1的主从配置》,如今MySQL已经发布了5.6.10,在主从复制功能上做了很多优化,特别是GTID(Global Transaction ID)的引入, 值得再重新写一篇文章介绍如何配置MySQL 5.6.10的主从复制。

相关阅读:

MySQL 5.6主从复制第一部分[简介及配置]

MySQL 5.6主从复制第二部分[恢复某一台从服务器]

MySQL 5.6主从复制第三部分[把从服务器提升为主服务器]

MySQL 5.6主从复制第四部分[一些被忽视的操作细节]

MySQL 主从复制事件校验 MySQL Replication Event Checksum

使用pt-table-checksum检查主从复制是否正常

----------------------------------------分割线----------------------------------------

还是用mysql::sandbox来测试吧。
主服务器(别名black)安装在 /home/modify/sandboxes/msb_5_6_10/ 使用5610端口。
从服务器(别名blue)安装在 /home/modify/sandboxes/msb_5_6_10_a/ 使用5611端口。

第一步,修改配置文件

修改主服务器配置文件my.sandbox.cnf,添加下面的几行:


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。

linux

人气教程排行