GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.1.3' IDENTIFIED BY '1234';
FLUSH PRIVILEGES;
僅授予 REPLICATION SLAVE 權限,遵循最小權限原則。舊版用 FILE 權限並不安全。
mysqladmin -u root -p shutdown
tar -cvf /tmp/mysql.tar /var/lib/mysql
必須在 MySQL 停止狀態下打包資料目錄,確保一致性。
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=vbb # 僅記錄 vbb 資料庫(可省略,記錄全部)
# sql-bin-update-same # 舊版參數,新版已移除
重啟 MySQL:service mysqld start。啟動後 /var/lib/mysql 會出現 mysql-bin.000001、mysql-bin.index 等檔案。
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | vbb | |
+------------------+----------+--------------+------------------+
記下 File 與 Position,Slave 設定時需用到。
cd /var/lib
tar -xvf /tmp/mysql.tar
chown -R mysql:mysql mysql
[mysqld]
server-id=2
master-host=192.168.1.2
master-user=backup
master-password=1234
master-port=3306
master-connect-retry=60
replicate-do-db=vbb
log-slave-updates # 若 Slave 也需做為其他 Slave 的 Master
# relay-log=relay-bin # 建議明確指定 relay log 路徑
注意:MySQL 5.6+ 建議改用 CHANGE MASTER TO 動態設定,而非寫在 my.cnf。
service mysqld start
mysql -u root -p
START SLAVE;
SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.2
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 107
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
關鍵指標:Slave_IO_Running: Yes、Slave_SQL_Running: Yes、Seconds_Behind_Master: 0 表示同步正常。
INSERT INTO vbb.t VALUES (1);,Slave 立即可查到。master.info、relay-log.info 記錄位置)。master.info:記錄 Master 連線資訊、Binlog 讀取位置。relay-log.info:記錄 Relay Log 執行位置。STOP SLAVE; RESET SLAVE ALL; 並刪除上述兩檔,再重新 CHANGE MASTER TO。CHANGE MASTER TO MASTER_HOST='...', MASTER_USER='...', MASTER_PASSWORD='...', MASTER_LOG_FILE='...', MASTER_LOG_POS=...; 取代 my.cnf 靜態參數。binlog_format=ROW,減少非確定性語句導致的主從不一致。REPLICATION SLAVE,密碼強度高、定期輪換。CHANGE MASTER TO MASTER_SSL=1, MASTER_SSL_CA=..., MASTER_SSL_CERT=..., MASTER_SSL_KEY=...;Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running,異常即時告警。pt-table-checksum、pt-table-sync)。