mysql5.6的主从搭建和之前版本的有了很大的改进,5.6引进GTID(Global Transaction ID)来强化数据库主备一致性,故障恢复,

以及容错能力。GTID的引入方便了运维人员的操作难度。

安装mysql 5.6请参阅http://zhangxz.blog.51cto.com/5490116/1380366

1.创建复制账号
grant replication slave,replication client on *.* to 'repl'@'192.168.2.%' identified by 'password';

-->复制账号只需要replication slave权限,replication client权限是给后期维护做准备
2.主库和备库配置
master
bin_log = mysql-bin
server_id = 10
slave
server_id = 20
relay_log = /usr/local/mysql/data/mysql-relay-log #(指定中继日志位置)

3.启动复制
指定主服务器位置和账号
CHANGE MASTER TO
MASTER_HOST = '192.168.2.111',
MASTER_USER = 'repl',
MASTER_PASSWORD = 'password';
开始复制
START SLAVE;

注意
1.以上的操作是在主库的二进制日志保存完整的基础上,如果二进制日志删除过就要利用其他的方式备份到备库上然后开始复制
2.主库和备库的版本推荐用一样的,这样可以避免一些问题
3.server_id 不能相同
4.主库必须开启二进制日志,从库可以不开日志提高性能


在主主模式的主动-被动模式下切换主备的推荐步骤

1.停止所有主动服务器上的所有写入操作
2.在主动服务器上执行 SET GLOBAL read_only = 1,但记住这不会阻挡拥有超级管理员权限的用户更改数据。如果想阻止所有人更改数据,可以执行FLUSH TABLES WITH READ LOCK。如果没有这么做,你必须kill所有的客户端连接以保证没有长时间运行的语句或者未提交的事务
3.在主动服务器上执行SHOW MASTER STATUS并记录二进制日志坐标
4.使用主动服务器上的二进制日志坐标在被动服务器上执行SELECT MASTER_POS_WAIT().该语句将阻塞住,直到复制跟上主动服务器
5.在被动服务器上执行SET GLOBAL read_only = 0 ,这样就变换成主服务器
6.修改应用的配置,使其写入到新的主动服务器中



相关配置
master
sync_binlog = 1        #每次提交事务都写到磁盘
innodb_flush_logs_at_trx_commit
innodb_support_xa = 1
innodb_safe_binlog

slave
replicate-do-db          #需要复制的数据库
replicate-ignore-db      #不需要复制的数据库
log_slave_updates = 1    #(允许备库将其重放的事件写入自身的二进制日志,做A--B--C复制用)
skip_slave_start         #启动服务不启动复制
slave_skip_errors = all  #跳过所有类型的错误

从数据库建议设置成read_only (set global read_only = 1)