實現 MariaDB 主從複製的詳細教程


MariaDB 的主從複製(Master-Slave Replication)是一種用來在多個伺服器之間複製資料的技術。這可以用來實現讀取負載均衡、數據備份以及故障轉移等目的。使用 MariaDB 複製(replication)有以下幾個主要原因

1. 高可用性和故障轉移

透過設置主從(master-slave)或主主(master-master)複製架構,可以確保即使主資料庫發生故障,從資料庫也能快速接管,提供服務的連續性。

2. 負載均衡

將讀寫操作分開,主資料庫負責寫操作,從資料庫負責讀操作,可以有效分散負載,提升整體性能。

3. 備份

從資料庫可以用來執行備份操作,而不影響主資料庫的運行。這樣可以確保資料的安全性和一致性。

4. 資料分發

透過複製,可以將資料分發到地理上分散的不同位置,提升資料的可用性和響應速度。

5. 測試和開發

可以使用從資料庫進行開發和測試,避免直接在生產環境操作,降低風險。

6. 數據倉儲

從資料庫可以作為數據倉儲的來源,進行數據分析和報表生成,而不影響主資料庫的性能。

MariaDB 複製的基本概念

1. 主從複製(Master-Slave Replication)

主資料庫處理所有寫操作,並將這些操作複製到從資料庫。從資料庫處理讀操作。

2. 主主複製(Master-Master Replication)

每個資料庫都是彼此的主資料庫,可以同時處理讀寫操作,適合於需要高可用性和負載均衡的環境。

3. 異步複製(Asynchronous Replication)

主資料庫在處理完寫操作後,不會等待從資料庫確認,適合於對一致性要求不高但要求高性能的場景。

4. 半同步複製(Semi-Synchronous Replication)

主資料庫在處理完寫操作後,會等待至少一個從資料庫確認接收到操作日誌,適合於需要一定程度一致性保障的場景。

5. 同步複製(Synchronous Replication)

主資料庫在處理完寫操作後,會等待所有從資料庫確認接收到操作日誌,適合於對一致性要求非常高的場景。

以下是 MariaDB 主從複製的基本步驟:

1. 設定主伺服器(Master)

  1. 編輯配置文件
    打開 MariaDB 的配置文件(通常是 /etc/mysql/my.cnf/etc/my.cnf),在 [mysqld] 部分新增以下參數:
   [mysqld]
   server-id=1
   log-bin=mysql-bin

server-id 必須是唯一的整數,log-bin 指定二進制日誌文件的名稱前綴。

  1. 重啟 MariaDB
   sudo systemctl restart mariadb
  1. 創建複製用戶
    登錄到 MariaDB,創建一個具有 REPLICATION SLAVE 權限的用戶:
   CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
   GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
   FLUSH PRIVILEGES;
  1. 鎖定數據庫(可選,防止數據變動):
   FLUSH TABLES WITH READ LOCK;
  1. 導出數據庫(可選):
   mysqldump -u root -p --all-databases --master-data > /path/to/dump.sql

2. 設定從伺服器(Slave)

  1. 編輯配置文件
    打開從伺服器的配置文件,在 [mysqld] 部分新增以下參數:
   [mysqld]
   server-id=2
   relay-log=relay-bin
   log-bin=mysql-bin
  1. 重啟 MariaDB
   sudo systemctl restart mariadb
  1. 導入數據庫(如果從零開始複製):
    將之前在主伺服器上導出的數據庫導入到從伺服器上:
   mysql -u root -p < /path/to/dump.sql
  1. 配置從伺服器與主伺服器同步
    登錄到從伺服器,執行以下命令:
   CHANGE MASTER TO
       MASTER_HOST='master_host_ip',
       MASTER_USER='replica',
       MASTER_PASSWORD='password',
       MASTER_LOG_FILE='mysql-bin.000001',
       MASTER_LOG_POS=  4;
  1. 啟動複製
   START SLAVE;
  1. 檢查複製狀態
   SHOW SLAVE STATUS\G;

常見問題排查

  1. 檢查日誌:檢查 MariaDB 日誌文件(通常在 /var/log/mysql/ 目錄下),查看是否有錯誤信息。
  2. 檢查連接:確保從伺服器能夠連接到主伺服器,並且主伺服器的防火牆允許從伺服器的連接。
  3. 檢查用戶權限:確保複製用戶具有正確的權限。

以上就是設置 MariaDB 主從複製的基本步驟。根據實際情況,可能需要做一些調整,例如設置多個從伺服器或實現主主複製等。

Reference

https://book.king011.com/view/en-US/view/db-mariadb/master-slave


WordPress Appliance - Powered by TurnKey Linux