MySQL Replication 透過定義 Master(主庫)與 Slave(從庫)關係,將二進位日誌事件即時重放至從庫,實現資料近乎同步的備份。適用於:讀寫分離、異地災備、報表查詢分流等場景。MySQL 3.23 起支援,4.1 後功能大幅增強。
| 角色 | 版本 | OS | IP |
|---|---|---|---|
| Master | MySQL 4.1.12 | RedHat 9.0 | 192.168.0.217 |
| Slave | MySQL 4.1.12 | RedHat 9.0 | 192.168.10.244 |
# tar zxvf mysql-4.1.12.tar.gz
# cd mysql-4.1.12
# ./configure --prefix=/var/eyou/mysql
# make && make install
# chown -R root /var/eyou/mysql
# chown -R mysql /var/eyou/mysql/var
# chgrp -R mysql /var/eyou/mysql
# scripts/mysql_install_db
# cp support-files/my-medium.cnf /etc/my.cnf
# /var/eyou/mysql/bin/mysql -u root -p
mysql> GRANT FILE, REPLICATION SLAVE ON *.* TO 'rep'@'192.168.10.244' IDENTIFIED BY 'eyou';
mysql> FLUSH PRIVILEGES;
# cd /var/eyou/mysql/var
# tar czvf reptest.tar.gz reptest # 打包需同步的資料庫
關鍵點:MySQL 4.1.12 要求 Slave 同時擁有 FILE 與 REPLICATION SLAVE 兩項權限。
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=reptest
[mysqld]
server-id=2
master-host=192.168.0.217
master-user=rep
master-password=eyou
master-port=3306
master-connect-retry=60
replicate-do-db=reptest
# 將 Master 打包檔傳至 Slave 並解壓
# tar xzvf reptest.tar.gz -C /var/eyou/mysql/var
# service mysqld start
# mysql -u root -p
mysql> SLAVE START;
mysql> SHOW SLAVE STATUS\G
重點檢查 Slave_IO_Running: Yes 與 Slave_SQL_Running: Yes,以及 Seconds_Behind_Master: 0。
pt-table-checksum 或 mysqlbinlog 修復。