设为首页 收藏本站
查看: 1010|回复: 0

[经验分享] mysql5.7基于GTID实现主从复制

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-11 09:35:37 | 显示全部楼层 |阅读模式
mysql5.7基于GTID实现主从复制
一.GTID概述1.1 GTID的概念
  • GTID,全局事务ID globaltransaction identifiers
  • GTID是一个事务对应一个全局唯一ID
  • GTID 对应事务在一个服务器上只执行一次,避免重复执行导致数据不一致。
  • GTID 用来代替传统的复制方法,不再使用传统的MASTER_LOG_FILE+ MASTER_LOG_POS,而是使用MASTER_AUTO+POSTION=1的方式
  • 2 GTID优势
  • 搭建主从比传统的方式更加简单,主从切换方便、快速。
  • 比传统的复制更能保证数据一致性
  • 3 GTID的工作原理
  • 当一个事务在主库端执行并提交时,产生GTID,一同记录到binlog日志中。
  • binlog传输到slave,并存储到slave的relaylog后,读取这个GTID的这个值设置gtid_next变量,即告诉Slave,下一个要执行的GTID值。
  • sql线程从relay log中获取GTID,然后对比slave端的binlog是否有该GTID。
  • 如果有记录,说明该GTID的事务已经执行,slave会忽略。
  • 如果没有记录,slave就会执行该GTID事务,并记录该GTID到自身的binlog,
  • 在读取执行事务前会先检查其他session持有该GTID,确保不被重复执行。
  • 在解析过程中会判断是否有主键,如果没有就用二级索引,如果没有就用全部扫描。
  • 二.新搭建主从,基于GTID实现
  • 主库:
  • 修改vim /etc/my.cnf
  • #gtid
  • server_id=1 #主库与从库不能重复
  • gtid_mode=on,开启gtid模式
  • enforce_gtid_consistency=on #参数值包括off(不检测是否有GTID不支持的语句或事物),warn(当发现有支持的语句或事务时,返回警告,并记到日志中),on(当发现语句或事物不支持GTID时,返回错误)建议在启用GTID时,在测试环境中开始此参数,处理完GTID不支持的语句后,再启用GTID。
  • #binlog
  • log_bin=master-binlog #开启binlog
  • log-slave-updates=1
  • binlog_format=row #建议复制时开启row模式

  • #relay log
  • #skip_slave_start=1

  • 从库:
  • 修改vim /etc/my.cnf
  • #gtid
  • server_id=2 #主库与从库不能重复
  • gtid_mode=on,开启gtid模式
  • #binlog
  • log_bin=master-binlog #开启binlog,注意5.7版本以后可以不开启binlog了,可以节省空间提高性能,5.6版本必须开启binlog,因为GTID存储在binlog中,只有开启binlog才能使用GTID的功能。5.7中通过GTID系统表来记录GITD(表mysql.gtid.executed),每个事务提交时,将GTID插入到表中。
  • log-slave-updates=1
  • binlog_format=row #建议复制时开启row模式

  • #relay log
  • #skip_slave_start=1

  • 三.在线将传统复制模式变更为基于GTID复制的步骤
  • master和slave上分别执行
  • set@@global.enforce_gtid_consistency=warn;
  • 查看错误日志中是否有错误信息
  • tail -fmysql-master.err
  • master和slave上分别执行
  • set@@global.enforce_gtid_consistency=on;
  • master和slave上分别设置GTID模式:
  • set@@global.gtid_mode=off_permissive;
  • 查看主从错误日志中是否有错误信息
  • tail -fmysql-master.err
  • master和slave上分别执行
  • set@@global.gtid_mode=on_permissive;
  • 检查是否还有基于传统复制的信息
  • mysql> show status like 'ongoing_anonymouse_transcation_count';
  • Empty set (0.00 sec) #如果为空表示没有问题
  • master和slave上分别执行
  • set @@global.gtid_mode=on;
  • mysql> show variables like 'gtid_mode';
  • +---------------+-------+
  • | Variable_name | Value |
  • +---------------+-------+
  • | gtid_mode     | ON    |
  • +---------------+-------+
  • 在slave上执行:
  • stop slave;
  • change master tomaster_auto_position=1;
  • start slave
  • show slave status\G;
  • 将以下两个参数加入到my.cnf中,以便重启时生效
  • gtid_mode=on
  • enforce_gtid_consistency=on
  • 四.在线将基于GTID复制变更为传统模式的复制
  • master服务器
  • show master status; #查看master的日志文件及位置点
  • slave服务器
  • stop slave;
  • change master to master_auto_position=0,master_log_file='master-binlog.000004', master_log_pos=194;
  • start slave;
  • master 和slave 上分别执行
  • set @@global.gtid_mode=on_permissive;
  • set @@global.gtid_mode=off_permissive;
  • select @@global.gtid_owned;#master和slave全为空字符串时执行下面操作

  • set @@global.gtid_mode=off;
  • enforce_gtid_consistency=off;
  • slave上执行,查看复制状态
  • show slave status\G;
  • 在my.cnf中,修改
  • gtid_mode=off
  • enforce_gtid_consistency=off



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-326830-1-1.html 上篇帖子: mysql 批量更新与批量更新多条记录的不同值实现方法 下篇帖子: mysql 安装及管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表