>  기사  >  데이터 베이스  >  MySQL 5.6主从复制第一部分[简介及配置]

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

WBOY
WBOY원래의
2016-06-07 17:28:081067검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Hibernate性能优化概述다음 기사:MySQL::Sandbox