全部产品
Search
文档中心

数据传输服务 DTS:源库Binlog检查

更新时间:Oct 17, 2024

在启动MySQL之间的增量数据迁移任务时,DTS将在预检查阶段对源数据库进行Binlog检查。本文将介绍源库Binlog检查涉及的检查项及修复方法。

源库Binlog是否开启检查

该检查项主要检查源数据库是否开启Binlog功能。如果检查失败,请参考下述方法修复。

修复方法:

  1. 登录自建MySQL数据库服务器。

  2. 使用vim命令修改配置文件my.cnf中的如下参数。

    说明

    配置文件my.cnf的默认路径为/etc/my.cnf,请以实际情况为准。

    log_bin=mysql_bin
    binlog_format=row
    server_id=2 #大于1的整数,此处仅为示例。
    binlog_row_image=full #如果源数据库为MySQL 5.6及以上的版本,需设置该项。
  3. 参考如下命令,重启MySQL。

    /etc/init.d/mysqld restart
    说明

    您也可以根据实际情况,使用其他命令或方式进行重启。

  4. 登录自建的MySQL源数据库,执行如下SQL语句,确认Binlog功能已启用。

    show variables like '%log_bin%';

    系统显示类似如下信息:show

  5. 重新执行DTS的预检查。

源库Binlog模式检查

该检查项主要检查源数据库的Binlog模式是否为ROW。如果检查失败,请参考下述方法修复。

修复方法:

  1. 登录自建MySQL数据库服务器。

  2. 修改MySQL的配置文件my.cnf,将binlog_format的参数值修改为row

    说明

    配置文件my.cnf的默认路径为/etc/my.cnf,请以实际情况为准。

    log_bin=mysql_bin
    binlog_format=row #Binlog模式修改为row。
    server_id=2 #大于1的整数,此处仅为示例。
    binlog_row_image=full #如果源数据库为MySQL 5.6及以上的版本,需设置该项。
  3. 参考如下命令,重启MySQL。

    /etc/init.d/mysqld restart
    说明

    您也可以根据实际情况,使用其他命令或方式进行重启。

  4. 登录自建的MySQL源数据库,执行如下SQL语句,确认Binlog的模式已经修改为ROW

    show variables like "%binlog_format%";

    系统显示类似如下信息:row

  5. 重新执行DTS的预检查。

源库Binlog存在性检查

该检查项主要检查源数据库的Binlog文件是否被删除。如果检查失败,说明源数据库的Binlog文件不完整,请参考下述方法修复。

修复方法:

  1. 预检查对话框中,单击源库Binlog存在性检查项右侧的提示按钮。binlog存在性检查错误

  2. 在弹出的查看详情对话框中,查看失败原因,根据提示记录缺少的Binlog文件。binlog存在性检查修复方法

  3. 判断缺失的Binlog文件重要性,选择对应的处理方式。

    • 如果该Binlog文件不重要,可以忽略,则登录自建的MySQL源数据库,执行如下SQL语句,清除报错Binlog以及之前的所有Binlog文件。

      PURGE BINARY LOGS TO '[$Binlog_Filename]';
      说明

      [$Binlog_Filename]指报错Binlog文件之后的第一个Binlog文件名,例如提示缺少的Binlog文件为“mysql_bin.000003”,则此处[$Binlog_Filename]应该为“mysql_bin.000004”。

    • 如果该Binlog文件较重要,不可忽略,则联系自建MySQL数据库的管理员,尝试恢复该Binlog文件。

  4. 重新执行DTS的预检查。

源库binlog_row_image是否为FULL

该检查项仅针对MySQL 5.6及以上版本的数据库,主要检查源数据库的binlog_row_image参数是否为FULL。如果检查失败,说明源数据库的Binlog未记录全镜像,请参考下述方法修复。

修复方法:

  1. 登录自建MySQL数据库服务器。

  2. 修改MySQL的配置文件my.cnf,将binlog_row_image的参数值修改为full

    说明

    配置文件my.cnf的默认路径为/etc/my.cnf,请以实际情况为准。

    log_bin=mysql_bin
    binlog_format=row
    server_id=2 #大于1的整数,此处仅为示例。
    binlog_row_image=full #如果源数据库为MySQL 5.6及以上的版本,需设置该项。
  3. 参考如下命令,重启MySQL。

    /etc/init.d/mysqld restart
    说明

    您也可以根据实际情况,使用其他命令或方式进行重启。

  4. 重新登录MySQL源数据库,执行如下SQL语句,确认binlog_row_image参数为FULL

    show variables like "binlog_row_image";
  5. 重新执行DTS的预检查。