欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2024-04-03 10:09:10
...

很久之前写过《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。

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