在啟動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的預檢查。