位置: 编程技术 - 正文

MySQL多线程复制遇到Error_code: 1872的解决方案(mysql8.0并行复制)

编辑:rootadmin

推荐整理分享MySQL多线程复制遇到Error_code: 1872的解决方案(mysql8.0并行复制),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql多个线程取数据不重复,mysql并发复制,mysql多线程并发读取数据,mysql并发复制,mysql5.7 并行复制,mysql多个线程取数据不重复,mysql 多线程复制,mysql多线程并发读取数据,内容如对您有帮助,希望把文章链接给更多的朋友!

上周在生产环境上遇到一个问题,不敢独享,拿出来给小伙伴们做个简单的分享。

起因 :由于IDC机房断电(估计又是哪里被挖掘机碰了下吧),导致所有服务器重启,影响到了其中的MySQL数据库。来看下这时数据库遇到的问题:

数据库版本 :MySQL 5.7.

问题表现

:从机复制报如下错误:Slave SQL for channel ”: Slave failed to initialize relay log info structure from the repository, Error_code:

用了Inside君的MySQL标准配置文件模板,怎么没有实现crash safe呢?其实,这主要是因为多线程复制(MTS)所引起。不知MySQL 5.7,即使MySQL 5.6也同样会遇到问题。

在MTS场景下,可能会出现以下两个问题:

MySQL多线程复制遇到Error_code: 1872的解决方案(mysql8.0并行复制)

gap事务:后执行的事务先回放(apply)了Exec_Master_Log_Pos位置不准确:可能存在已经事务已经提交,但是位置还没更新(单线程复制不存在此问题)gap事务比较好理解,因为不论是基于database级别的MTS,还是基于logical_clock的MTS,都可能存在下面的这种场景:

由于MTS的原因,后面的事务可能比前面的事务早执行,如上图终可能事务tx2和tx4都已经提交了,但是事务tx1和tx3还未提交。这时就称为存在gap事务。在基于logical_clock的MTS场景下,用户可以通过配置 参数slave_preserve_commit_order=1 来保证提交的顺序性。

另一方面,这时Exec_Master_Log_Pos也是不准确的,当发生crash时,master info中依然记录的是tx1事务开始执行的位置(见上图右边的部分)。切记,即使将参数slave_preserve_commit_order设置为1,MTS场景下依然不能保证Exec_Master_Log_Pos是准确的,其称之为 gap-free low-watermark 。因为MTS场景下对于表slave_realy_info_log的更新并不是事务的(这个需要好好体会下)。

然而,MTS场景下引入了新的事务表slave_worker_info,用以表示发生宕机时每个线程更新到的位置,其与Worker线程的回放是事务的。因此,MySQL在恢复的时候可以通过通过Exec_Master_Log_Pos与表slave_worker_info的列Master_log_pos做对比,判断是否需要回放当前事务。

在MySQL 5.7.版本之前,当发生宕机后需要手动执行如下操作,若直接执行CHANGE MASTER TO操作,则可能会触发上述错误:

由于服务器上的MySQL版本为5.7.,而DBA试图通过命令CHANGE MASTER TO来修复复制问题,因此导致了上述问题。而在MySQL 5.7.版本后,上述问题将有MySQL自动修复。简单来说,即使发生了宕机,也能准确并自动地恢复复制的运行状态。

不过,当Inside升级到MySQL 5.7.过程时,又遇到了一个不大不小的坑,这个就留着等下回分享吧。

Mysql5.6启动内存占用过高解决方案 vps的内存为M,安装好nginx,php等启动起来,mysql死活启动不起来看了日志只看到对应pid被结束了,后跟踪看发现是内存不足被killed;调整my.cnf参数,重新配置(

教你如何恢复使用MEB备份的MySQL数据库 恢复使用MEB备份的MySQL数据库,执行一个普通备份[root@testbin]#./mysqlbackup--defaults-file=/service/mysql5.5/my.cnf--socket=/data/mysql5.5/mysql.sock--user=root--backup-dir=/backup/5

简单谈谈MySQL中的int(m) 我们在设计表的时候,如果碰到需要设置int(整型)的时候,通常会按照惯例(大家都这样写)设置成int()。那么这里为什么是呢?代表的又是什么呢?

标签: mysql8.0并行复制

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

上一篇:Mysql挂掉后无法重启报pid文件丢失的解决方法(mysql挂了怎么排查)

下一篇:Mysql5.6启动内存占用过高解决方案(mysql内存占用一直增高不释放)

  • 先申报财务报表还是企业所得税汇算清缴
  • 劳务报酬和工资薪金哪个税率高
  • 合伙律师事务所的合伙人必须是
  • 对公收到一分钱怎么做账
  • 股东个人将钱打入公司对公账户,能否算作投资款
  • 支付增值税税控系统技术维护费用500元
  • 报关单上单位名称写千克还是kg
  • 一般纳税人计提水利基金会计分录
  • 一般存款账户的主要用途
  • 分公司独立核算和非独立核算区别
  • 以前年度多交所得税,跨年退回怎么做会计分录
  • 跨年暂估收入如何调整
  • 研发场地租赁计什么科目
  • 个体户要交国税和地税吗
  • 事业编年底
  • 油票需要填纳税信息吗
  • 机票退票手续费为什么这么贵
  • 银行定期存款的利息是每个月给你吗
  • 增值税小规模纳税人
  • 园林工程的范围包括哪些?
  • windows10如何开启远程
  • 华为手机记事本app
  • 出纳交接工作注意
  • 小规模纳税人确认收入时要确认税吗
  • 工程在建期间土地税滞纳金
  • PHP:oci_pconnect()的用法_Oracle函数
  • 单位向员工出租房屋要交增值税吗
  • 进项税额转出怎么做账务处理
  • kb4598481是什么
  • cuda torch
  • win7系统文件在哪里可以找到
  • 多提附加税跨年怎么计算
  • 无形资产的摊销年限不得低于多少年
  • phpcrawl
  • 境外服务收入如何申报增值税
  • 一般纳税人取得普票会计分录
  • php根据日期显示星期几
  • vue中利用ref实现更灵活的子向父传值
  • 增值税申报表各栏怎么填
  • 营业外收支的账户是什么
  • 加计抵减四项服务是什么?
  • 餐饮发票不见了怎么补
  • mongodb索引存储方式
  • 独立核算的分公司可以汇总纳税吗
  • 房地产公司测绘费怎么做会计分录
  • 租车费开票属于哪个类别
  • 公司车辆过户给个人需要多少费用
  • 政府补助怎么判断总额法还是净额法
  • 商铺固定设施指哪些
  • 公司法认缴资本金新规
  • 电子承兑背书了能撤回吗
  • 购入产品用作样品怎么做
  • 福利企业增值税退税标准
  • 增值税留抵情况下要交流转税吗
  • 房地产企业帐套设置
  • 淘宝卖家运费险为什么越来越贵
  • 没有收入是纳税人吗
  • 红字发票最多几个月
  • 经营活动产生的现金流量净额越大越好吗
  • 银行账户维护费收费标准
  • 企业必须建立哪些制度
  • Ubuntu修复安装
  • 如何给电脑重装系统win7系统
  • 新手怎样
  • WinXP创建一键静音快捷键(在喇叭消失的情况下实用)
  • linux中的用户管理主要涉及用户账号文件
  • ati2mdxx.exe是什么进程 ati2mdxx进程信息查询
  • ubuntu20.04忘记root密码
  • ubuntu netbook
  • linux系统怎样安装
  • win7自动更新在哪
  • win8蓝牙连不上
  • win7c盘winsxs
  • win7怎么隐藏软件
  • linux服务器dns配置安装
  • win7如何变快
  • unity3D游戏开发
  • 税务工作秘密管理暂行办法
  • 如何开通税务系统
  • 普通版怎么下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设