赞
踩
众所周知,传统的主从备份主要依赖于二进制日志文件位置的复制,也就是基于binlog+pos(binlog filename + position),pos每个主节点和从节点都不一样,这样会导致一个问题,在主节点down掉之后,其他从节点升为主节点,此时再进行主从复制,由于pos不一致的原因,导致很难保持数据一致性。从mysql5.6之后,支持基于GTID的方式进行主从复制(binlog+gtid),与传统复制最大的不同就是GTID和pos的不同,pos是基于每个主从节点的,而GTID是基于全局的。
# 主库配置
# 设置server_id,一般设置为IP,保证唯一就好
server_id=1
#开启gtid模式
gtid_mode=on
#强制gtid一致性,开启后对于特定create table不被支持
enforce_gtid_consistency=on
#通过同步产生的变化将记录在自己的binlog中,即可以当从也可以当主
log-slave-updates=1
#skip_slave_start=1
# 开启binlog,名字可以随意取
log-bin=mysql-master-binlog
## binlog日志格式,(mixed,statement,row,默认格式是statement)
#binlog日志格式,强烈建议,其他格式可能造成数据不一致
binlog_format=row
## 日志自动删除日期,默认值为0,表示不自动删除。
expire_logs_days=7
#要同步的数据库,无法指定多个库,逗号和复制多行都不行,5.7版本测试,在从库指定即可,从库可指定多个
#binlog-do-db=ride_share
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql,information_schema,sys,performance_schema
#控制binlog的写入频率。每执行多少次事务写入一次(这个参数性能消耗很大,但可减小MySQL崩溃造成的损失)
sync_binlog = 1
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
#auto_increment_offset = 1
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
#auto_increment_increment = 2
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
# 从库配置
# 设置server_id,一般设置为IP,保证唯一就好
server_id=3
#开启gtid模式
gtid_mode=on
#强制gtid一致性,开启后对于特定create table不被支持
enforce_gtid_consistency=on
#通过同步产生的变化将记录在自己的binlog中,即可以当从也可以当主
log-slave-updates=1
#跳过启动复制
skip_slave_start=1
# 开启binlog,名字可以随意取
log-bin=mysql-slave-binlog
## binlog日志格式,(mixed,statement,row,默认格式是statement)
#binlog日志格式,强烈建议,其他格式可能造成数据不一致
binlog_format=row
## 日志自动删除日期,默认值为0,表示不自动删除。
expire_logs_days=7
# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=all
#需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
#多个库不能使用,号连接,必须分行写,5.7版本测试是这样
replicate-do-db=ride_share
#replicate-do-db=test_data
#当只针对某些库的某张表进行同步时,多个不同库表,可以配置将上下两行多配置几个
#replicate-wild-do-table = ride_share.user
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
replicate-ignore-db=mysql,information_schema,sys,performance_schema
slave配置不变,加上这两行即可;
master_info_repository = table
relay_log_info_repository = table
每个主节点都需要授权用户给从节点;
grant replication slave on *.* to 'repl'@'%' identified by '123456';
从节点连接主节点;
stop slave;
#channel对应每个主节点的server_id
change master to master_host='192.168.2.189',master_user='repl',master_password='123456',master_auto_position=1 for channel '1';
change master to master_host='192.168.150.129',master_user='repl',master_password='123456',master_auto_position=1 for channel '2';
start slave;
show slave status
提示:
#通过同步产生的变化将记录在自己的binlog中,即可以当从也可以当主(主从一体必备配置项)
log-slave-updates=1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。