在啟動MySQL之間的增量數據遷移任務時,DTS將在預檢查階段對源數據庫進行Binlog檢查。本文將介紹源庫Binlog檢查涉及的檢查項及修復方法。
源庫Binlog是否開啟檢查
該檢查項主要檢查源數據庫是否開啟Binlog功能。如果檢查失敗,請參考下述方法修復。
修復方法:
登錄自建MySQL數據庫服務器。
使用
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及以上的版本,需設置該項。
參考如下命令,重啟MySQL。
/etc/init.d/mysqld restart
說明您也可以根據實際情況,使用其他命令或方式進行重啟。
登錄自建的MySQL源數據庫,執行如下SQL語句,確認Binlog功能已啟用。
show variables like '%log_bin%';
系統顯示類似如下信息:
重新執行DTS的預檢查。
源庫Binlog模式檢查
該檢查項主要檢查源數據庫的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 #如果源數據庫為MySQL 5.6及以上的版本,需設置該項。
參考如下命令,重啟MySQL。
/etc/init.d/mysqld restart
說明您也可以根據實際情況,使用其他命令或方式進行重啟。
登錄自建的MySQL源數據庫,執行如下SQL語句,確認Binlog的模式已經修改為
ROW
。show variables like "%binlog_format%";
系統顯示類似如下信息:
重新執行DTS的預檢查。
源庫Binlog存在性檢查
該檢查項主要檢查源數據庫的Binlog文件是否被刪除。如果檢查失敗,說明源數據庫的Binlog文件不完整,請參考下述方法修復。
修復方法:
在預檢查對話框中,單擊源庫Binlog存在性檢查項右側的提示按鈕。
在彈出的查看詳情對話框中,查看失敗原因,根據提示記錄缺少的Binlog文件。
判斷缺失的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文件。
重新執行DTS的預檢查。
源庫binlog_row_image是否為FULL
該檢查項僅針對MySQL 5.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 #如果源數據庫為MySQL 5.6及以上的版本,需設置該項。
參考如下命令,重啟MySQL。
/etc/init.d/mysqld restart
說明您也可以根據實際情況,使用其他命令或方式進行重啟。
重新登錄MySQL源數據庫,執行如下SQL語句,確認binlog_row_image參數為
FULL
。show variables like "binlog_row_image";
重新執行DTS的預檢查。