首页 > 数据库 >mysql(Error_code: 1032)原因与通用修复方案

mysql(Error_code: 1032)原因与通用修复方案

时间:2024-11-08 16:58:36浏览次数:1  
标签:code slave -- mysql primary 报错 key Error

碰到MYSQL常见的1032错误,从库复制异常。

通过show slave status\G 命令也能看到对应的报错(处理时忘记截图了)。

通过报错我们可以去主库找到binlog中具体的报错。

mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS mysql-bin.018563 > 1106.sql

这是一个事务对应一堆delete操作,很难找到是那条记录错误导致的。(本来的想法是定位到具体的行,然后进行对应调整,让复制正常走下去)

之前有datetime字段数据不一致导致复制异常,其他字段完全正常,更新日期即可(并且让业务维护对应的主键)。

 

只能换个通用的方式进行修复了。

1.从库:stop slave;

2.主库导出该表一致性数据:mysqldump -uroot -p'xxxx' -h10.111.229.23  --single-transaction --master-data=2 --flush-logs bi im_bi_i_scrb > 1106.sql

3.从库导入数据:source 1106.sql

4.从库设置过滤,过滤该表:CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE=('bi.im_bi_i_scrb');

5.从库启动复制,并设置结束位置(这个具体位置在导出文件1106.sql):start slave until MASTER_LOG_FILE='mysql-bin.018568', MASTER_LOG_POS=316;

6.观察show slave status\G状态

复制到达指定位置slave-sql线程停止,变为NO

或者观察gtid查看是否到导出文件那个位置。

7.停止复制:stop slave;

8.取消过滤:CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE=();

9.启动复制:start slave;

修复完毕!!!

我们看看官方怎么解释报错的原因和解决方案。

Applies to:

MySQL Server - Version 8.0 and later
Information in this document applies to any platform.

Cause

 When Row-based Logging (RBL) is used, a single UPDATE or DELETE statement on the primary can result in many binary log events in the binary log. Each such event needs to be mapped to the specific row in the table so that the event can be applied on the replica server.
If the table has a primary key or a unique key, the event is mapped to the corresponding row using the primary key or the unique key.
When the table does neither have a primary key nor a unique key, a hash function is used to map the event to the corresponding record.

On the replica, when it applies the event which has been mapped using a hash function, in some cases, it can result in replication error as shown above.

Solution

 The solution is to use invisible columns which is supported as of MySQL 8.0.23, as documented here:

https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html

The ALTER TABLE statement to add an invisible primary key is:

alter table emp add column empid int auto_increment primary key invisible;

 

In a SELECT * query, the * evaluates to all table columns, except those that are invisible.


So, the query "select * from emp;" returns the columns firstname, lastname and address;

Thus it does return the newly added primary key column "empid" and hence does NOT require any modification to the application.

 

其实就是要求你的表有主键,不然就会有1032的报错(BUG较多)!!!

mysql8.0.23以后支持不可见主键索引。

 

标签:code,slave,--,mysql,primary,报错,key,Error
From: https://www.cnblogs.com/muzisanshi/p/18535435

相关文章

  • 高效集成:聚水潭采购数据同步到MySQL
    聚水潭数据集成到MySQL的技术案例分享在本次技术案例中,我们将聚焦于如何通过轻易云数据集成平台,将聚水潭系统中的采购入库单数据高效、准确地集成到MySQL数据库中。具体方案名称为“聚水潭-采购入库单-->BI阿尼三-采购入库表_copy”。首先,针对聚水潭的数据获取,我们使用了其提供......
  • 【亲测】Adobe Media Encoder(ME)软件下载win版中文版快速安装使用
    目录一、软件简介1.1核心功能1.2集成与工作流1.3用户界面和易用性二、下载与安装2.1下载软件2.2安装过程2.3配置和首次使用三、系统要求3.1操作系统3.2硬件要求3.3其他要求一、软件简介AdobeMediaEncoder(简称ME)是一个强大的视频和音频编码软件,广泛......
  • Leetcode 3235. 判断矩形的两个角落是否可达
    1classSolution{2public:3boolcanReachCorner(intxCorner,intyCorner,vector<vector<int>>&circles){4vector<bool>visited(circles.size(),false);56function<bool(int)>dfs=[&](inti)......
  • VS Code/Code-Runner编译C语言遇到undefined reference to XXX的一种解决办法
    背景用VSCode编译一个C语言编写的项目文件,这个项目除main文件外还有些被引用的C文件,如果不做相关配置的话,运行会报错:即编译时找不到被引用的这些文件,从而报错。解决办法我是使用code-runner这个插件跑的,所以这里只写关于用这种方式运行代码的解决办法。首先查看.vscode/配......
  • NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL
    在当今数字化时代,安防视频监控系统已成为保障公共安全和个人财产安全的重要工具。NVR设备ONVIF接入平台EasyCVR作为一款功能强大的智能视频监控管理平台,它不仅提供了视频远程监控、录像、存储与回放等基础功能,还涵盖了视频转码、视频快照、告警、云台控制、语音对讲等高级功能,使其......
  • Codeforces 909 A-F
    CF909题解题目链接ABCDEF难度:红黄绿蓝绿紫题解A题目翻译:给定两个字符串,求字典序最小的“两字符串非空前缀拼接形成的字符串”。算法标签:贪心题目分析:字典序最小,即从左往右依次比较字符,直到一方不剩字符或两字符不同。因此想到贪心。由于前缀非空,因此在前一字......
  • 代码随想录算法训练营第二十一天| leetcode669. 修剪二叉搜索树、leetcode108.将有序
    1leetcode669.修剪二叉搜索树题目链接:669.修剪二叉搜索树-力扣(LeetCode)文章链接:代码随想录视频链接:你修剪的方式不对,我来给你纠正一下!|LeetCode:669.修剪二叉搜索树_哔哩哔哩_bilibili思路:目前想的是分三种情况,第一种情况就是这个数删除左边全部,第二种删除右边的全部,第......
  • vscode配置xdebug断点调试thinkphp
    vscode配置xdebug断点调试thinkphp其实和配置其他php框架的断点调试一样,步骤如下:下载xdebug,重命名为php_xdebug.dll并移动到php.ini目录;(不知道下载那个版本可以通过xdebug官网提供的在线查询工具查询。https://xdebug.org/wizard在安装的主机上执行php-i,将输入的结果粘贴到网......
  • mysql分区表占用大量容量处理(优化)及归档分区表
    背景生产环境中,某个分区表两三年了,占用磁盘1T多,需要对前几年的数据做归档点击查看代码SELECTtable_schemaas'数据库',table_nameas'表名',table_rowsas'记录数',truncate(data_length/1024/1024,2)as'数据容量(MB)',truncate(index_length/1024/1024......
  • MySQL面试题
    文章目录目录文章目录1.什么是内连接、外连接、交叉连接、笛卡尔积呢?2.那MySQL的内连接、左连接、右连接有有什么区别?3.说一下数据库的三大范式?4.varchar与char的区别?5.blob和text有什么区别?6.DATETIME和TIMESTAMP的异同?7.MySQL中in和exists的区别?8.MyS......