开发者社区> 问答> 正文

【RDS】使用DTS的增量数据迁移时Binlog相关的预检查项失败,如何处理?

已解决

使用DTS的增量数据迁移时Binlog相关的预检查项失败,如何处理?

展开
收起
云上猫猫 2022-01-14 17:34:33 1248 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    源库Binlog开启检查

    该检查项主要检查源数据库是否开启Binlog功能。如果检查失败,表明源库未开启Binlog功能,请参考如下步骤修复。

    1、登录自建的MySQL源数据库所在服务器。

    2、参考如下配置修改MySQL的配置文件my.cnf。

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

    log_bin=mysql_bin
    binlog_format=row
    server_id=2 //大于1的整数,此处仅为示例。
    binlog_row_image=full //如果源数据库为MySQL5.6及以上的版本,需设置该项。
    

    3、参考如下命令,重启MySQL。

    [$Mysql_Dir]/bin/mysqladmin -u root -p shutdown
    [$Mysql_Dir]/bin/safe_mysqld &
    

    注:[$Mysql_Dir]指MySQL的安装路径,请替换为实际的MySQL安装目录。

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

    show variables like '%log_bin%';

    系统显示类似如下。

    2.png

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

    源库Binlog模式检查

    该检查项主要检查源数据库的Binlog模式是否为ROW。如果检查失败,表明源库的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 //如果源数据库为MySQL5.6及以上的版本,需设置该项。
    

    3、参考如下命令,重启MySQL。

    [$Mysql_Dir]/bin/mysqladmin -u root -p shutdown 
    [$Mysql_Dir]/bin/safe_mysqld &
    

    注:[$Mysql_Dir]指MySQL的安装路径,请替换为实际的MySQL安装目录。

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

    show variables like "%binlog_format%";

    系统显示类似如下。

    3.png

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

    源库binlog_row_image是否为FULL

    该检查项仅针对MySQL5.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 //如果源数据库为MySQL5.6及以上的版本,需设置该项。
    

    3、参考如下命令,重启MySQL。

    [$Mysql_Dir]/bin/mysqladmin -u root -p shutdown
    [$Mysql_Dir]/bin/safe_mysqld &
    

    注:[$Mysql_Dir]指MySQL的安装路径,请替换为实际的MySQL安装目录。

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

    show variables like "%binlog_row_image%";

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

    源库Binlog存在性检查

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

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

    4.png

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

    5.png

    注:此处以缺少mysql_bin.000003文件为例,现场以实际情况为准。

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

    如果该Binlog文件不重要,可以忽略,则登录自建的MySQL源数据库,执行如下SQL语句,清除报错Binlog以及之前的所有Binlog文件。比如提示缺少的Binlog文件为“mysql_bin.000003”,则需要清理“mysql_bin.000004”之前的所有Binlog文件,包括“mysql_bin.000003”。

    PURGE BINARY LOGS TO '[$Binlog_Filename]';

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

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

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

    2022-01-14 18:20:44
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
问答排行榜
最热
最新

相关电子书

更多
百问百答-RDS (上) 立即下载
DTS助力企业快速复制阿里巴巴异地多活架构 立即下载
DTS控制台一本通 立即下载

相关镜像