娃哈哈好喝-真的!
技术够用就行,吃好喝好睡好!

mysql主从同步-GTID

mysql主从同步-GTID

GTID是MySQL 5.6以上版本的新特性

开启GTID的必备条件

gtid_mode=on    (必选)
enforce-gtid-consistency=1 (必选)
log_bin=mysql-bin           (可选)    #高可用切换,最好开启该功能
log-slave-updates=1     (可选)       #高可用切换,最好打开该功能

GTID的工作流程为:

  • master更新数据时,会在事务前产生GTID,一同记录到binlog日志中。
  • slave端的i/o 线程将变更的binlog,写入到本地的relay log中。
  • sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。
  • 如果有记录,说明该GTID的事务已经执行,slave会忽略。
  • 如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog。
  • 在解析过程中会判断是否有主键,如果没有就用二级索引,如果没有就用全部扫描。
1、新环境配置方式

配置方式大部分都相同,主库配置:/etc/my.cnf

log-bin=mysql_bin
server-id=10
gtid_mode=on
enforce-gtid-consistency=true
log-slave-updates=on

从库配置:/etc/my.cnf

server-id=20
relay-log=myrelay
gtid_mode=on
enforce-gtid-consistency=true
log-slave-updates=on
read_only=on

主库添加授权用户

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> grant replication slave on *.* to 'admin'@'%' identified by '123456';

从库添加master指向:

mysql> change master to master_host='10.0.0.1',master_port=3306,master_user='admin',master_password='123456',master_auto_position=1;
mysql> start slave;
mysql> show slave status\G;

2、现有环境中添加slave

首先将老数据从master上使用mysqldump备份一份,恢复到slave上

然后配置slave,首先指定GTID_PURGED的开始位置,这个值可以在mysqldump备份的文件中查看,一般在该文件的前30行内

SET @@GLOBAL.GTID_PURGED='eca2ddf0-6097-11eb-8bee-0aed26cb74ee:1-146826749';

类似这样的

mysql>SET @@GLOBAL.GTID_PURGED='eca2ddf0-6097-11eb-8bee-0aed26cb74ee:1-146826749';

然后设置master to

mysql>change master to master_host='18.18.18.18',master_port=3306,master_user='backup',master_password='123456',master_auto_position=1;
mysql>start slave;

ok

赞(0)
未经允许不得转载:娃哈哈好喝 » mysql主从同步-GTID
分享到: 更多 (0)