全部產品
Search
文件中心

PolarDB:開啟Binlog

更新時間:Jun 11, 2025

本文介紹如何為PolarDB叢集開啟Binlog功能。

背景資訊

PolarDB是一款完全相容MySQL的雲原生資料庫,預設使用了更進階別的物理日誌代替Binlog,但為了更好地與MySQL生態融合,PolarDB支援手動開啟Binlog,開啟Binlog後您就可以串連ElasticsearchAnalyticDB等資料產品,也可以搭建PolarDB到RDSRDS到PolarDBPolarDB之間的資料即時同步。

使用限制

  • PolarDB叢集建立於2019年04月05日之後,您可以直接開啟Binlog;若PolarDB叢集建立於2019年04月05日之前,請您先將叢集小版本升級至最新版本再開啟Binlog,關於如何升級小版本,請參見小版本管理

收費說明

Binlog的空間屬於叢集儲存空間的一部分,需要收取儲存費用。您可以通過設定Binlog保留時間長度來調整Binlog檔案佔用儲存空間的大小。

計費樣本

訂用帳戶

假設您購買的叢集已存在訂用帳戶的儲存空間類型,若儲存空間足夠則無需額外進行收費。

image

隨用隨付

假設您購買的叢集已存在隨用隨付的儲存空間類型,Binlog空間只按實際資料量所佔的儲存空間大小收費。

image

注意事項

  • Binlog功能預設關閉,開啟Binlog後叢集會自動重啟,通常情況下,重啟任務會在5分鐘之內完成。重啟時服務閃斷時間在40秒左右,具體時間與資料量和表數量相關,建議您在業務低穀期進行操作並確保應用程式具備重連機制。

  • 開啟Binlog後會導致寫效能下降,讀效能不受影響。一般情況下,開啟Binlog後對效能影響不超過10%;極端壓力情境,效能影響可能達到40%。詳情請參見常見問題

  • 拉取、訂閱或同步Binlog(例如使用DTS等工具)時,建議使用PolarDB主地址,因為直接指向產生Binlog的主節點,具有更好的相容性和穩定性。關於如何查看主地址,請參見查看串連地址和連接埠

  • 開啟Binlog後,資料庫提交超大事務時,會阻塞其他事務的提交,並可能會影響叢集的重啟和變更配置時間長度。

  • 本文介紹的loose_polar_log_bin參數為全域(Global)層級參數。若需要使用會話(Session)層級的Binlog功能,需要開啟sql_log_bin參數。

    說明

    sql_log_bin參數用於控制是否開啟會話層級的Binlog。預設情況下,該參數處於關閉狀態。如需開啟,請前往配額中心,在配額名稱polardb sql_log_bin參數許可權操作列,單擊申請進行開啟。

  • 如果使用DTS從RDS遷移到PolarDB,Binlog會自動開啟。

開啟Binlog

新購叢集時開啟Binlog

您只需要在建立叢集時,選中叢集配置頁面上的是否開啟Binlog複選框即可。詳情請參見自訂購買購買訂用帳戶叢集

為存量叢集開啟Binlog

重要

開啟 Binlog 後叢集會自動重啟,重啟任務會在 5 分鐘之內完成。重啟時服務閃斷時間在 40 秒左右,具體時間與資料量和表數量相關,建議您在業務低穀期進行操作並確保應用程式具備重連機制。

  1. 登入PolarDB控制台,在左側導覽列單擊叢集列表,選擇叢集所在地區,並單擊目的地組群ID進入叢集詳情頁。

  2. 您可以通過以下兩種方式中的任意一種來開啟Binlog:

    • 方式一:

      1. 進入叢集的Binlog管理頁面。

        image

      2. 單擊立即開啟按鈕。

      3. 開啟Binlog對話方塊中,選擇生效方式為立即生效定時生效

        若選擇定時生效,請指定具體的生效時間。

        image

      4. 單擊確定

    • 方式二:通過設定參數loose_polar_log_bin的值來開啟Binlog。

      1. 在左側導覽列中選擇配置与管理 > 参数配置

      2. 找到目標參數loose_polar_log_bin,修改參數值。具體操作請參見修改參數值

        說明
        • 若您的PolarDB MySQL版叢集版本為MySQL 5.6,當前值修改為ON_WITH_GTID

        • 若您的PolarDB MySQL版叢集版本為MySQL 5.7或MySQL 8.0,當前值修改為ON

關閉Binlog

  1. 登入PolarDB控制台,在左側導覽列單擊叢集列表,選擇叢集所在地區,並單擊目的地組群ID進入叢集詳情頁。

  2. 您可以通過以下兩種方式中的任意一種來關閉Binlog:

    • 方式一:

      1. 進入叢集的Binlog管理頁面。

        image

      2. 單擊關閉Binlog按鈕。

      3. 關閉Binlog對話方塊中,選擇生效方式為立即生效定時生效

        若選擇定時生效,請指定具體的生效時間。

        您可根據需求選擇是否勾選立即清理本地binlog

        image

      4. 單擊確定

    • 方式二:通過設定參數loose_polar_log_bin的值來關閉Binlog。

      1. 在左側導覽列中選擇配置与管理 > 参数配置

      2. 找到目標參數loose_polar_log_bin,修改參數值。具體操作請參見修改參數值

        說明
        • 若您的PolarDB MySQL版叢集版本為MySQL 5.6,當前值修改為OFF_WITH_GTID

        • 若您的PolarDB MySQL版叢集版本為MySQL 5.7或MySQL 8.0,當前值修改為OFF

        • Binlog關閉後,已有的Binlog檔案會一直保留。建議您先縮短Binlog檔案的儲存時間長度,等待不需要的檔案自動刪除後,再關閉Binlog。

Binlog檔案儲存時間長度

儲存策略

Binlog檔案有如下兩種儲存策略:

  • 開啟Binlog後,檔案預設儲存3天,超過3天的Binlog檔案會被自動刪除。

    說明
    • 在2023年11月23日前購買的PolarDB MySQL版叢集,其Binlog檔案預設儲存兩周(14天)。

    • 在2024年1月17日前購買的PolarDB MySQL版叢集,其Binlog檔案預設儲存一周(7天)。

  • 關閉Binlog後,已有的Binlog檔案會一直保留,不會自動刪除。

修改儲存時間長度

重要
  • 修改Binlog儲存時間長度不會造成串連閃斷,也不需要重啟叢集。

  • 但如果修改儲存時間長度導致大量Binlog檔案需要被清除(如10 TB),則在清除時可能會造成短時間的資料庫寫入異常。因此,在Binlog檔案較大的情況下,建議在業務低峰期進行操作,並分多次縮短Binlog的儲存時間長度,每次清除一部分Binlog資料。

  • 已被清除的Binlog檔案被刪除後無法進行恢複。

  • 若您的叢集已開啟Binlog,您可以通過如下兩種方式修改Binlog檔案儲存時間長度:

    • 若叢集版本為PolarDB MySQL版5.6,您可以通過修改loose_expire_logs_hours(取值範圍為0~2376,單位為小時,預設值為72)的參數值來設定Binlog的儲存時間長度。0表示不自動刪除Binlog檔案。參數詳細設定請參見修改參數值

    • 若叢集版本為PolarDB MySQL版5.7或8.0,您可以通過修改binlog_expire_logs_seconds(取值範圍為0~4294967295,單位為秒,預設值為259200)的參數值來設定Binlog的儲存時間長度。0表示不自動刪除Binlog檔案。參數詳細設定請參見修改參數值

      重要

      通過修改這兩個參數的參數值來設定Binlog的儲存時間長度後,叢集中歷史Binlog檔案不會被立即自動清除。此時若您需要清除歷史Binlog檔案,可以通過如下三種方法之一:

      • 當叢集中最後一個Binlog檔案達到max_binlog_size,切換到新的Binlog檔案後,這些歷史Binlog檔案將會被自動清除。

      • 使用高許可權帳號執行flush binary logs命令可以立即觸發Binlog檔案切換並清除到期的Binlog檔案。

      • 您也可重啟叢集。叢集重啟後將自動清除歷史Binlog檔案。

  • 若您的叢集未開啟Binlog,此時如需刪除Binlog檔案,您可以重新開啟Binlog,將上述Binlog的儲存時間長度參數(loose_expire_logs_hoursbinlog_expire_logs_seconds)設定為一個較小的值,等檔案超過儲存時間長度自動刪除後再關閉Binlog。

擷取並查看Binlog日誌

您可以通過mysqlbinlog工具查看並解析Binlog日誌,詳情請參見遠程擷取並解析PolarDB MySQL版Binlog日誌

常見問題

  • Q:Binlog檔案能儲存多久?

    A:若您的叢集開啟了Binlog,Binlog檔案預設儲存3天,超過3天的Binlog檔案會被自動刪除

    說明
    • 在2023年11月23日前購買的PolarDB MySQL版叢集,其Binlog檔案預設儲存兩周(14天)。

    • 在2024年1月17日前購買的PolarDB MySQL版叢集,其Binlog檔案預設儲存一周(7天)。

    若您的叢集關閉了Binlog,已有的Binlog檔案會一直保留,不會自動刪除。

    說明

    您可以通過修改參數的方式修改開啟Binlog叢集的Binlog檔案儲存時間長度。具體請參見Binlog檔案儲存時間長度

  • Q:Binlog出現Could not find first log file name in binary log index file報錯資訊是什麼意思?

    A:Could not find first log file name in binary log index file從這個報錯來看binlog已經被清理,已經刪除的binlog是無法恢複的。

  • Q:開啟Binlog後可以關閉嗎?

    A:將參數loose_polar_log_bin修改為OFF並提交即可關閉。

    說明

    Binlog關閉後,已有的Binlog檔案會一直保留。您可以先縮短Binlog檔案的儲存時間長度,等待不需要的檔案自動刪除後,再關閉Binlog。

  • Q:如何減少Binlog佔用的儲存空間?

    A:您可以將Binlog的儲存時間長度參數(loose_expire_logs_hoursbinlog_expire_logs_seconds)設定為一個較小的值,來減少Binlog檔案對儲存空間的佔用。

  • Q:開啟Binlog對效能影響有多大?

    A:開啟Binlog不會影響查詢(SELECT)效能,只會影響寫入更新(如INSERT、UPDATE、DELETE等)效能。一般情況下,開啟Binlog後對效能影響不超過10%。極端壓力情境,效能影響可能達到40%。

  • Q:開啟Binlog後叢集會自動重啟,重啟任務多久才能完成?

    A:一般來說,重啟任務會在5分鐘之內完成,重啟時服務閃斷時間在40秒左右。具體時間與資料量和表數量相關,建議您在業務低穀期進行操作並確保應用程式具備重連機制。

  • Q:如何遠程擷取並查看Binlog日誌內容?

    A:詳情請參見遠程擷取並解析PolarDB MySQL版Binlog日誌

  • Q:為什麼無法使用DMS的通過無鎖變更工單實現無鎖結構變更功能對PolarDB MySQL版叢集進行添加索引等表結構變更操作?

    A:PolarDB MySQL版叢集Binlog預設關閉,因此若需要使用DMS的無鎖結構變更功能,請先開啟PolarDB MySQL版叢集的Binlog功能。若不想開啟Binlog,您也可以使用online DDL命令來變更表結構。

  • Q:開啟Binlog後支援使用canal實現對MySQL的變動進行採集嗎?

    A:可以實現使用canal對MySQL的變動進行採集。

  • Q:執行SHOW BINARY LOGS語句用於查詢Binlog檔案大小是否會影響叢集效能?

    A:不會,SHOW BINARY LOGS語句屬於管理類操作,對叢集效能幾乎無影響。它不會像資料寫入操作(如INSERT、UPDATE、DELETE)那樣直接影響資料庫的讀寫效能。因此,您可以放心使用此命令進行查詢。

  • Q:PolarDB MySQL版如何查詢Binlog最後寫入時間?

    A:使用 show full binary logs語句可以查看所有Binlog記錄檔的名稱、大小和最後寫入時間。

    說明

    該功能支援PolarDB MySQL版叢集要求如下:

    • MySQL 8.0.2版本,且小版本需為8.0.2.2.0及以上版本。

    • MySQL 8.0.1版本,且小版本需為8.0.1.1.14及以上版本。

    • MySQL 5.7版本,且小版本需為5.7.1.0.27及以上版本。

    • MySQL 5.6版本,且小版本需為5.6.1.0.38及以上版本。

  • Q:PolarDB MySQL版如何查看指定時間Binlog內容?

    A:無法直接指定時間備份資料,可先按時間點恢複,再解析Binlog查看內容。