全部產品
Search
文件中心

Data Transmission Service:源庫Binlog檢查

更新時間:Jul 06, 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 '%log_bin%';

    系統顯示類似如下資訊: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 '%log_bin%';
  5. 重新執行DTS的預檢查。