1. 程式人生 > 實用技巧 >簡單理解什麼是資料庫CDC?(以mysql為例)

簡單理解什麼是資料庫CDC?(以mysql為例)

一、資料庫CDC是什麼

CDC 是change data capture,即變化資料捕捉。是資料庫進行備份的一種方式,常用於大量資料的備份工作。分為入侵式的和非入侵式的備份方法,入侵式的有基於觸發器備份、基於時間戳備份、基於快照備份,非入侵式的備份方法是基於日誌的備份。mysql 基於日誌的CDC就是要開啟mysql binary log。

二、Mysql基於日誌的CDC配置

1、檢視mysql是否開啟Binlog

show variables like 'log_bin';

若變數log_bin的值為“OFF”,則說明Binlog未開啟,繼續執行下一步。

若變數log_bin的值為“ON”,則說明Binlog已開啟,繼續執行以下SQL命令,檢查相關引數的配置是否符合要求。

show variables like '%binlog_format%';
show variables like '%binlog_row_image%';

變數binlog_format的值應該為“ROW”,變數binlog_row_image的值應該為“FULL”。

2、執行以下命令編輯MySQL配置檔案,然後按“i”進入輸入模式。

vi /etc/my.cnf

在配置檔案中增加如下配置,開啟Binlog。

server-id = 123
log_bin = mysql-bin
binlog_format = row


binlog_row_image = full
expire_logs_days = 10
gtid_mode = on
enforce_gtid_consistency = on

其中:

server-id的值應為大於1的整數,請根據實際規劃設定,並且在建立資料整合任務時設定的“Server Id”值需要此處設定的值不同。
expire_logs_days為Binlog日誌檔案保留時間,超過保留時間的Binlog日誌會被自動刪除,應保留至少2天的日誌檔案。
“gtid_mode = on”和“enforce_gtid_consistency = on”僅當MySQL的版本大於等於5.6.5時才需要新增,否則刪除這兩行內容。

按“Esc”退出輸入模式,然後輸入“:wq”並回車,儲存退出。
執行以下命令重啟MySQL資料庫。

service mysqld restart

以root使用者登入資料庫,執行以下命令,查詢變數log_bin的值是否為“ON”,即是否已開啟Binlog。

show variables like 'log_bin';

3、在資料庫中執行以下命令建立ROMA連線資料庫的使用者並配置許可權。

CREATE USER 'roma'@'%' IDENTIFIED BY 'password';
GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'roma'@'%';

其中:

roma為ROMA連線使用者名稱,請根據實際規劃設定。
password為ROMA連線使用者密碼,請根據實際規劃設定。