帮你快速理解、总结文档立即下载
文档中心>云数据库 MySQL>故障处理>备份恢复相关>unique_checks 参数导致复制中断

unique_checks 参数导致复制中断

最近更新时间:2026-09-14 19:50:01
本文档已由 AI 辅助审校
我的收藏

场景描述

在使用云数据库 MySQL 的过程中,备实例或只读实例出现复制中断,提示如下错误:
[ERROR] [MY-010584] [Repl] Slave SQL for channel '': Worker 1 failed executing transaction 'XXX' at master log mysql-bin.XXX, end_log_pos XXX; Could not execute Write_rows_v1 event on table XXX.XXX; Duplicate entry 'XXX' for key 'xxx.xxx', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.XXX, end_log_pos XXX, Error_code: MY-001062

原因分析

将 unique_checks 设置为0时,可能造成上述错误。
unique_checks 参数的取值含义:
取值为1:云数据库 MySQL 会对 InnoDB 表中的唯一键进行唯一性检查。
取值为0:如果 DML 语句操作的数据不在 buffer pool 中,那么云数据库 MySQL 不会通过读取磁盘上的主键和唯一键来对 InnoDB 表中的二级索引进行唯一性检查。此时,可以插入重复的唯一键。
当在主实例上,设置 unique_checks 为0时,如果 DML 语句操作的数据不在 buffer pool 中,那么云数据库 MySQL 不会通过读取磁盘上的主键和唯一键来对 InnoDB 表中的二级索引进行唯一性检查,此时主实例将成功插入重复的唯一键。而在备实例上,设置 unique_checks 为0时,如果 DML 语句操作的数据存在于 buffer pool 中,云数据库 MySQL 将会对 DML 语句所操作的二级索引进行唯一性检查,此时不允许插入重复的唯一键,从而发生复制中断。详情请参见 MySQL 官方 Bug#106121

解决思路

先确认实例的 unique_checks 参数值,再根据实际情况来修改参数值。
如果您确定插入的数据不会产生唯一键冲突,那么可以设置 unique_checks 为0,以加快数据的导入速度。
如果您不确定插入的数据是否会产生唯一键冲突,那么请设置 unique_checks 为1。

处理步骤

1. 登录 MySQL 控制台,在实例列表,单击实例 ID 进入管理页面。
2. 选择数据库管理 > 参数设置页,单击修改参数
3. 找到参数 unique_checks,并修改其参数运行值。
4. 若您在实例下并未找到此参数,请 提交工单 反馈技术团队协助处理。