mysql 主從復制的配置步驟如下:1. 準備主從庫環境,啟用 binlog,創建復制用戶并授予權限;2. 鎖定主庫表并導出數據,記錄 binlog 文件和位置;3. 配置從庫 server-id,導入數據并設置主庫連接信息;4. 啟動復制進程并檢查狀態,確保 slave_io 和 slave_sql 狀態為 yes。整個過程需注意 server-id 唯一、binlog 正確開啟及網絡權限配置,以確保復制正常運行。
安裝完 mysql 后,如果你想要復制數據,最常見的做法是使用 MySQL 自帶的主從復制(Replication)功能。這不僅能實現數據備份、負載均衡,還能提高系統可用性。下面我們就來一步步看看怎么操作。
1. 確保主庫和從庫環境準備就緒
在開始配置復制之前,需要確認幾個前提條件:
- 主庫和從庫都已安裝并運行 MySQL。
- 主庫開啟了二進制日志(binlog),這是復制的基礎。
- 主庫和從庫之間網絡互通,能通過 IP 和端口連接。
- 創建一個專門用于復制的用戶,并授予 REPLICATION SLAVE 權限。
修改主庫配置文件 my.cnf 或 my.ini:
server-id=1 log-bin=mysql-bin
重啟 MySQL 生效配置。然后創建復制賬號:
CREATE USER 'replica'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES;
2. 獲取主庫當前狀態并導出數據
為了保證主從數據一致性,在導出數據前最好鎖住主庫表(如果是生產環境建議選低峰期):
FLUSH TABLES WITH READ LOCK;
然后查看當前 binlog 文件名和位置:
SHOW MASTER STATUS;
記錄下 File 和 position 的值。接下來使用 mysqldump 導出數據庫:
mysqldump -u root -p --all-databases --master-data > backup.sql
導出完成后解鎖:
UNLOCK TABLES;
3. 配置從庫并導入數據
同樣編輯從庫的配置文件,設置不同的 server-id:
server-id=2
重啟 MySQL 后導入主庫的數據:
mysql -u root -p < backup.sql
然后告訴從庫如何連接主庫進行復制:
CHANGE MASTER TO MASTER_HOST='主庫IP', MASTER_USER='replica', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='記錄下來的File名', MASTER_LOG_POS=記錄下來的Position值;
最后啟動復制進程:
START SLAVE;
4. 檢查復制狀態是否正常
執行以下命令查看從庫復制狀態:
SHOW SLAVE STATUSG
重點關注兩個字段:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
如果都是 Yes,說明復制正常。如果有錯誤,可以根據 Last_Error 字段排查問題。
常見問題包括:
- 網絡不通或防火墻限制
- 用戶權限不對
- binlog 文件或位置寫錯
- server-id 沖突
基本上就這些步驟了。看起來有點多,但只要一步一步來,配置起來并不復雜,只是有些細節容易忽略,比如 server-id 要唯一、主庫必須有 binlog 等。只要注意這些點,一般都能順利搭建好主從復制結構。