You need to enable JavaScript to run this app.
文档中心
数据库传输服务

数据库传输服务

复制全文
下载 pdf
常见预检查报错
报错源库参数 gtid_mode 和预期不一致,期望是:ON,但设置为了:OFF,怎么办?
复制全文
下载 pdf
报错源库参数 gtid_mode 和预期不一致,期望是:ON,但设置为了:OFF,怎么办?
可能原因​
由于 GTID 是 MySQL 5.6 版本引入的新特性,因此在 MySQL 5.6 及后续版本中都会存在这个问题。DTS 仅支持 gtid_mode 的取值为 ON 和 OFF,所以建议将 gtid_mode 设置为 ON,否则 DTS 任务在创建进行预检查时都会报错。​
GTID(Global Transaction Identifier,全局事务标识)是 MySQL 5.6 及后续版本中引入的一种用于标识和协调事务的机制。它为每个事务分配一个全局唯一的标识符,使得在基于 GTID 的复制环境中,管理和跟踪主从同步变得更加简单和可靠。​
解决方案​
在预检查遇到该报错提示时,您需要将参数 gtid_mode 的取值修改为 ON。​
为确保系统的一致性并防止可能的错误,gtid_mode 参数提供了包括 OFF、OFF_PERMISSIVE、ON_PERMISSIVE 和 ON 取值:​
  • OFF:关闭 GTID 模式,即不使用 GTID 进行事务管理。​
  • OFF_PERMISSIVE:系统既接受没有 GTID 的事务,也接受带有 GTID 的事务,但不允许只有 GTID 的事务。这是一个过渡状态,允许从关闭 GTID 模式向开启 GTID 模式逐步过渡。​
  • ON_PERMISSIVE:系统生成 GTID 并将其附加到新的事务中,但仍然接受没有 GTID 的事务。这也是一个过渡状态,允许从关闭 GTID 模式向开启 GTID 模式逐步过渡。​
  • ON:完全启用 GTID 模式,只接受带有 GTID 的事务,拒绝没有 GTID 的事务。​
需要注意的是,将 gtid_mode 参数从 OFF 修改为ON,您需要按照顺序逐级修改。gtid_mode 参数的取值等级依次为 OFF<->OFF_PERMISSIVE<->ON_PERMISSIVE<->ON。具体操作如下所示:​
  1. 登录源数据库实例。​
  1. 修改 gtid_mode 的参数取值。​
  1. 在主从复制结构两边都将 gtid_mode 参数取值由 OFF 修改为 OFF_PERMISSIVE:​
  • MySQL 5.7.6 之前的版本需要在 my.cnf 配置文件中修改并重启数据库才能生效,MySQL 5.7.6 及之后的版本通过全局命名修改,不需要重启数据库,但是需要重置所有业务连接。​
  • ​
    SET GLOBAL gtid_mode = OFF_PERMISSIVE;​
    ​
  1. 在主从复制结构两边都将 gtid_mode 参数取值由 OFF_PERMISSIVE 修改为 ON_PERMISSIVE:​
  • ​
    SET GLOBAL gtid_mode = ON_PERMISSIVE;​
    ​
  1. 在各个实例节点上执行以下命令,检查匿名事务是否被消耗完:​
  • ​
    SHOW VARIABLES LIKE '%ONGOING_ANONYMOUS_TRANSACTION_COUNT%';​
    ​
  • 预期执行结果如下所示:​
说明​
如果返回结果是 0,那么表示匿名事务已被消耗完。​
  • ​
    mysql> SHOW VARIABLES LIKE '%ONGOING_ANONYMOUS_TRANSACTION_COUNT%';​
    +-------------------------------------+-------+​
    | Variable_name | Value |​
    +-------------------------------------+-------+​
    | Ongoing_anonymous_transaction_count | 0 |​
    +-------------------------------------+-------+​
    1 row in set (0.00 sec)​
    ​
  1. 在主从复制结构两边都将 gtid_mode 参数取值由 ON_PERMISSIVE 修改为 ON:​
  • ​
    SET GLOBAL gtid_mode = ON;​
    ​
  1. 在 my.cnf 文件中添加以下内容,后重启数据库即初始值生效:​
说明​
my.cnf 配置文件的默认路径为 /etc/my.cnf,现场以实际情况为准。​
  • ​
    gtid_mode = on​
    enforce_gtid_consistency = on​
    ​
  1. 重新执行预检查任务。​
​
最近更新时间:2026.10.16 10:56:37
这个页面对您有帮助吗?
有用
有用
无用
无用