在linux中配置mysql的主從復制(master-slave replication)可以確保數據的高可用性和負載均衡。以下是一個基本的步驟指南,假設你使用的是mysql 5.7或更高版本。
前提條件
步驟
1. 配置主服務器(Master)
-
編輯MySQL配置文件: 打開主服務器的MySQL配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加以下內容:
[mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = your_database_name # 替換為你要復制的數據庫名稱
-
重啟MySQL服務:
sudo systemctl restart mysql
-
創建復制用戶: 登錄到MySQL并創建一個用于復制的用戶:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'your_password'; # 替換為你的密碼 GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES;
-
獲取二進制日志位置: 登錄到MySQL并獲取當前的二進制日志位置:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
記錄下File和position的值,稍后會用到。
-
解鎖表:
UNLOCK TABLES;
2. 配置從服務器(Slave)
-
編輯MySQL配置文件: 打開從服務器的MySQL配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加以下內容:
[mysqld] server-id = 2 relay_log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log read_only = 1
-
重啟MySQL服務:
sudo systemctl restart mysql
-
配置復制: 登錄到MySQL并配置復制:
CHANGE MASTER TO MASTER_HOST='master_ip', # 替換為主服務器的IP地址 MASTER_USER='replicator', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', # 替換為你之前記錄的File值 MASTER_LOG_POS=123; # 替換為你之前記錄的Position值;
-
啟動復制:
START SLAVE;
-
檢查復制狀態:
SHOW SLAVE STATUSG
確保Slave_IO_Running和Slave_SQL_Running都是Yes。如果不是,請檢查錯誤信息并進行相應的調整。
注意事項
- 數據一致性:在配置復制之前,確保主服務器上的數據已經同步到從服務器。
- 防火墻設置:確保兩臺服務器之間的網絡連接沒有被防火墻阻止。
- 定期檢查:定期檢查復制狀態,確保數據的一致性和完整性。
通過以上步驟,你應該能夠在Linux系統中成功配置MySQL的主從復制。如果有任何問題,請參考MySQL官方文檔或相關社區資源進行排查。