概述
使用DTS进行增量数据迁移时,如果下列与源数据库Binlog相关的预检查项失败,请单击对应的预检查项查看解决方案。
- 源库Binlog开启检查:检查源数据库是否开启Binlog。
- 源库Binlog模式检查:检查源数据库的Binlog模式是否为
ROW
。 - 源库binlog_row_image是否为FULL:如果源数据库为MySQL5.6及以上的版本,
binlog_row_image
必须为FULL
。 - 源库Binlog存在性检查:检查源数据库的Binlog是否被删除。
详细信息
如下为各检查项检查失败时的修复方法。
源库Binlog开启检查
该检查项主要检查源数据库是否开启Binlog功能。如果检查失败,表明源库未开启Binlog功能,请参考如下步骤修复。
- 登录自建的MySQL源数据库所在服务器。
- 参考如下配置修改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及以上的版本,需设置该项。
- 参考如下命令,重启MySQL。
[$Mysql_Dir]/bin/mysqladmin -u root -p shutdown [$Mysql_Dir]/bin/safe_mysqld &
注:[$Mysql_Dir]指MySQL的安装路径,请替换为实际的MySQL安装目录。
- 登录自建的MySQL源数据库,执行如下SQL语句,确认Binlog功能已启用。
show variables like '%log_bin%';
系统显示类似如下。 - 重新执行DTS的预检查。
源库Binlog模式检查
该检查项主要检查源数据库的Binlog模式是否为ROW
。如果检查失败,表明源库的Binlog模式不为ROW
,请参考如下步骤修复。
- 登录自建的MySQL源数据库所在服务器。
- 参考如下配置修改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及以上的版本,需设置该项。 - 参考如下命令,重启MySQL。
[$Mysql_Dir]/bin/mysqladmin -u root -p shutdown
[$Mysql_Dir]/bin/safe_mysqld &注:[$Mysql_Dir]指MySQL的安装路径,请替换为实际的MySQL安装目录。
- 登录自建的MySQL源数据库,执行如下SQL语句,确认Binlog的模式已经修改为
ROW
。show variables like "%binlog_format%";
系统显示类似如下。 - 重新执行DTS的预检查。
源库binlog_row_image是否为FULL
该检查项仅针对MySQL5.6及以上版本的数据库,主要检查源数据库的binlog_row_image
参数是否为FULL
。如果检查失败,说明源数据库的Binlog未记录全镜像,请参考如下步骤修复。
- 登录自建的MySQL源数据库所在服务器。
- 参考如下配置修改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及以上的版本,需设置该项。 - 参考如下命令,重启MySQL。
[$Mysql_Dir]/bin/mysqladmin -u root -p shutdown
[$Mysql_Dir]/bin/safe_mysqld &注:[$Mysql_Dir]指MySQL的安装路径,请替换为实际的MySQL安装目录。
- 重新登录MySQL源数据库,执行如下SQL语句,确认
binlog_row_image
参数为FULL
。show variables like "%binlog_row_image%";
- 重新执行DTS的预检查。
源库Binlog存在性检查
该检查项主要检查源数据库的Binlog文件是否完整。如果检查失败,说明源数据库的Binlog文件不完整,请参考如下步骤修复。
- 在预检查对话框中,单击源库Binlog存在性检查项右侧的提示按钮。
- 在弹出的 查看详情 对话框中,查看 失败原因,根据提示记录缺少的Binlog文件。
注:此处以缺少mysql_bin.000003文件为例,现场以实际情况为准。
- 判断缺失的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文件。
- 如果该Binlog文件不重要,可以忽略,则登录自建的MySQL源数据库,执行如下SQL语句,清除报错Binlog以及之前的所有Binlog文件。比如提示缺少的Binlog文件为“mysql_bin.000003”,则需要清理“mysql_bin.000004”之前的所有Binlog文件,包括“mysql_bin.000003”。
- 重新执行DTS的预检查。
适用于
- 数据传输 DTS