位置: 编程技术 - 正文

MySQL 5.6 GTID新特性实践(mysql newid())

编辑:rootadmin

推荐整理分享MySQL 5.6 GTID新特性实践(mysql newid()),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql newid(),mysql8.0新特性,mysql5.7新特性,mysql5.7新特性,mysql 5.7特性,mysql新版本特性,mysql8.0.22新特性,mysql 5.6新特性,内容如对您有帮助,希望把文章链接给更多的朋友!

GTID简介

什么是GTID

GTID(Global Transaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。

GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。下面是一个GTID的具体形式

3EFA-CA-E1-9E-CAA:

更详细的介绍可以参见:官方文档

GTID的作用

那么GTID功能的目的是什么呢?具体归纳主要有以下两点:

根据GTID可以知道事务最初是在哪个实例上提交的GTID的存在方便了Replication的Failover 这里详细解释下第二点。我们可以看下在MySQL 5.6的GTID出现以前replication failover的操作过程。假设我们有一个如下图的环境

此时,Server A的服务器宕机,需要将业务切换到Server B上。同时,我们又需要将Server C的复制源改成Server B。复制源修改的命令语法很简单即CHANGE MASTER TO MASTER_HOST='xxx', MASTER_LOG_FILE='xxx', MASTER_LOG_POS=nnnn。而难点在于,由于同一个事务在每台机器上所在的binlog名字和位置都不一样,那么怎么找到Server C当前同步停止点,对应Server B的master_log_file和master_log_pos是什么的时候就成为了难题。这也就是为什么M-S复制集群需要使用MMM,MHA这样的额外管理工具的一个重要原因。

这个问题在5.6的GTID出现后,就显得非常的简单。由于同一事务的GTID在所有节点上的值一致,那么根据Server C当前停止点的GTID就能唯一定位到Server B上的GTID。甚至由于MASTER_AUTO_POSITION功能的出现,我们都不需要知道GTID的具体值,直接使用CHANGE MASTER TO MASTER_HOST='xxx', MASTER_AUTO_POSITION命令就可以直接完成failover的工作。 So easy不是么&#;

基于GTID的主从复制简介

搭建

搭建使用了mysql_sandbox脚本为基础,先创建了一个一主三从的基于位置复制的环境。然后通过配置修改,将整个架构专为基于GTID的复制。

根据MySQL官方文档给出的GTID搭建建议。需要一次对主从节点做配置修改,并重启服务。这样的操作,显然在production环境进行升级时是不可接受的。Facebook,Booking.com,Percona都对此通过patch做了优化,做到了更优雅的升级。具体的操作方式会在以后的博文当中介绍到。这里我们就按照官方文档,进行一次实验性的升级。

MySQL 5.6 GTID新特性实践(mysql newid())

主要的升级步骤会有以下几步:

确保主从同步在master上配置read_only,保证没有新数据写入修改master上的my.cnf,并重启服务修改slave上的my.cnf,并重启服务在slave上执行change master to并带上master_auto_position=1启用基于GTID的复制由于是实验环境,read_only和服务重启并无大碍。只要按照官方的GTID搭建建议做就能顺利完成升级,这里就不赘述详细过程了。下面列举了一些在升级过程中容易遇到的错误。

常见错误

gtid_mode=ON,log_slave_updates,enforce_gtid_consistency这三个参数一定要同时在my.cnf中配置。否则在mysql.err中会出现如下的报错

-- :: [ERROR] --gtid-mode=ON or UPGRADE_STEP_1 or UPGRADE_STEP_2 requires --log-bin and --log-slave-updates-- :: [ERROR] --gtid-mode=ON or UPGRADE_STEP_1 requires --enforce-gtid-consistency

change master to 后的warnings

在按照文档的操作change master to后,会发现有两个warnings。其实是两个安全性警告,不影响正常的同步(有兴趣的读者可以看下关于该warning的具体介绍。warning的具体内容如下:

实验一:如果slave所需要事务对应的GTID在master上已经被purge了

根据show global variables like '%gtid%'的命令结果我们可以看到,和GTID相关的变量中有一个gtid_purged。从字面意思以及官方文档可以知道该变量中记录的是本机上已经执行过,但是已经被purge binary logs to命令清理的gtid_set。本节中我们就要试验下,如果master上把某些slave还没有fetch到的gtid event purge后会有什么样的结果。

以下指令在master上执行

在slave2上重新做一次主从,以下命令在slave2上执行

实验二:忽略purged的部分,强行同步

那么实际生产应用当中,偶尔会遇到这样的情况:某个slave从备份恢复后(或者load data infile)后,DBA可以人为保证该slave数据和master一致;或者即使不一致,这些差异也不会导致今后的主从异常(例如:所有master上只有insert没有update)。这样的前提下,我们又想使slave通过replication从master进行数据复制。此时我们就需要跳过master已经被purge的部分,那么实际该如何操作呢?

我们还是以实验一的情况为例:

先确认master上已经purge的部分。从下面的命令结果可以知道master上已经缺失e-bd-e4-9c6d-d0b:1这一条事务的相关日志

在slave上通过set global gtid_purged='xxxx'的方式,跳过已经purge的部分

可以看到此时slave已经可以正常同步,并补齐了e-bd-e4-9c6d-d0b:2-3范围的binlog日志。

以上所述是小编给大家介绍的MySQL 5.6 GTID新特性实践,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

Mysql允许外网访问设置步骤 1、打开mysql.exe(MySQLCommandLineClient),输入密码2、输入:usemysql;3、查询host输入:selectuser,hostfromuser;4、创建host(如果有"%"这个host值,则跳过这一步)如果

mysql压缩包版安装配置方法图文教程 Mysql安装的时候可以有msi安装和zip解压缩两种安装方式。zip压缩包解压到目录,要使用它还需对它进行一定的配置。下面对Mysql压缩包版的安装方法进行

xampp修改mysql默认密码的方法 在这里介绍xampp修改mysql默认密码的大概过程是先利用xampp的phpmyadmin进入修改mysql密码,修改之后我们再修改xampp中phpmyadmin的密码,这样就完整的修改mysql

标签: mysql newid()

本文链接地址:https://www.jiuchutong.com/biancheng/348908.html 转载请保留说明!

上一篇:Linux下mysql源码安装笔记

下一篇:Mysql允许外网访问设置步骤(mysql内网访问)

  • 土地增值税的扣除项目包括哪几项
  • 增值税发票认证平台
  • 向保险公司缴纳的保险费可以税前扣除吗
  • 冲减以前年度多计的管理费用分录
  • 工业企业成本会计核算的对象是什么
  • 个人买私募基金还是买公募基金好
  • 支票存根联要带去银行吗
  • 固定资产房屋原值增加折旧月数怎么算
  • 转让金融资产的税率
  • 一般纳税人注销公司麻烦吗
  • 多缴的增值税能退吗
  • 增值税普通发票申报
  • 出现一窗式比对失败,该纳税人没有防伪税控比对信息!
  • 哪些会计凭证不需要依法保存
  • 企业原材料盘盈的原因分析
  • 支付员工补偿金计入管理费用的福利费用吗
  • 城镇土地使用税税率
  • 工资薪金所得税前扣除项目标准
  • 低值易耗品摊销表格
  • 怎样获得win11
  • window10自带哪些软件
  • 各类基本社会保障性缴款是单位缴纳部分吗
  • 设备租赁公司怎么复制赚钱
  • reminder.exe - reminder是什么进程 有什么用
  • 承租人对经营租赁和融资租赁会计处理方式
  • html里写php
  • php怎么设置管理员权限
  • php模板引擎执行时间
  • php常用方法
  • 联邦学习攻击与防御综述
  • 从农民手中收购烟叶的消费税
  • 上年度固定资产少入账了怎么办?
  • 员工通行费合法报销
  • 培训机构给学员过生日文案
  • 进口形式发票能证明商品是进口的吗
  • 自动执行python
  • java初学者教程
  • 长期应付款项目,根据专项应付款和长期应付款
  • 购买办公用品如何写摘要
  • 公司从一个帐户里扣税吗
  • 分页存储的优缺点
  • 其他综合收益算当期损益吗
  • 所得税调增调减技巧
  • 道路货物运输服务税率
  • 应付账款暂估会计处理
  • 交易性金融资产的账务处理
  • 库存现金日记账怎么填
  • 发放工资时社保为什么计入其他应付款科目
  • 买一赠一销售额的确定
  • 差旅费的进项税额需要转出吗
  • 实收资本没到账缴纳印花税吗
  • 挂靠被查出来后挂靠费怎么处理?
  • 企业出现有利润的现象
  • 代办旅行社经营许可证
  • 补缴以前年度企业所得税分录怎么写
  • 租用办公楼的装修协议
  • 清洁服务公司账务处理
  • 原始单据的重要性
  • linux如何安装c语言编译器
  • win8经常弹出转到电脑设置
  • win7如何彻底删除软件
  • win10系统edge浏览器兼容性
  • ghoststartservice.exe是什么进程 有什么作用 ghoststartservice进程查询
  • 毕竟近义词语
  • win8电脑锁屏壁纸怎么设置方法
  • win10周年版
  • win10系统日历设置
  • js让按钮不能点击
  • JavaScript中的NaN代表什么
  • json解析 java
  • unity3ds
  • Node.js中的全局对象有
  • js移动端拖拽
  • python3.8基础教程
  • js继承的方法
  • 广东省税务局官网 国家税务总局
  • 税务局网上申请开票
  • 网上税务局电子发票怎么领用
  • oecd国家是什么意思
  • 梨树烧烤一条街打人
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设