MySQL 主從復制是現代數據庫的一個重要功能,因為它提供了數據備份和高可用性的解決方案。本文將討論一種名為“row-level replication”的主從復制方法。
在row-level replication中,MySQL服務器將記錄修改操作(如INSERT、UPDATE、DELETE)作為行級別的變更事件,并將這些事件發送給從服務器。接收到這些事件后,從服務器會執行相應的操作以保持與主服務器的一致性。
# 實現 row-level replication 的步驟: # 1. 修改主服務器的 my.cnf 配置文件以開啟 binlog 日志記錄 # ... # server-id = 1 # log_bin = /var/log/mysql/mysql-bin.log # ... # # 2. 創建一個用戶并賦予 repl 權限 # CREATE USER 'repl_user'@'slave_host' IDENTIFIED BY 'repl_password'; # GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'slave_host'; # # 3. 在主服務器上執行 SHOW MASTER STATUS; 命令并記錄輸出 # # 4. 在從服務器上修改 my.cnf 配置文件以開啟 relay log 并設置主服務器信息 # ... # server-id = 2 # relay_log = /var/log/mysql/mysql-relay-bin.log # relay_log_info_file = /var/log/mysql/mysql-relay-bin.index # relay_log_recovery = 1 # master_info_file = /var/log/mysql/mysql-master.info # master_info_repository = TABLE # ... # # 5. 在從服務器上執行 CHANGE MASTER TO 命令以設置主服務器信息并啟動復制 # CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='repl_user', MASTER_PASSWORD='repl_password', MASTER_LOG_FILE='master_log_file', MASTER_LOG_POS=master_log_pos; # START SLAVE; #
當執行完上述步驟后,主從復制便會開始運作。主服務器會記錄所有的修改操作,并將這些操作以二進制格式記錄在 binlog 日志中。從服務器則會讀取這些 binlog 日志,并將相關的修改操作反映在自己的數據庫中,從而實現與主服務器的同步操作。
總的來說,MySQL 主從復制(row-level replication)是一種高效且可靠的數據庫同步機制。通過記錄和復制每一條修改操作,該機制可以讓從服務器保持與主服務器一致性,同時在主服務器故障時也可以保證數據的可用性。