MySQL rpl是MySQL的復(fù)制機(jī)制,也叫做MySQL的主從復(fù)制。主從復(fù)制是MySQL提供的一種高可用性和可擴(kuò)展性的方案。實(shí)現(xiàn)主從復(fù)制有兩種方式:基于語句級別和基于行級別。當(dāng)然,基于語句級別的復(fù)制方式已經(jīng)被官方廢棄,我們應(yīng)該使用基于行級別的復(fù)制方式。
# 配置基于行級別的復(fù)制,需要以下步驟: # 1、在主從服務(wù)器上都配置以二進(jìn)制日志為基礎(chǔ)的數(shù)據(jù)復(fù)制復(fù)制 # 主庫上修改my.cnf配置 log-bin=mysql-bin server_id=1 # 從庫上修改my.cnf配置 log-bin=mysql-bin server_id=2 # 2、在主庫上創(chuàng)建用于數(shù)據(jù)同步的用戶,并授權(quán) GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%' identified by 'password'; # 或者 CREATE USER 'replica'@'%' identified by 'password'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%'; # 3、在從庫上,連接主庫并開始同步數(shù)據(jù) CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='replica', MASTER_PASSWORD='password', MASTER_LOG_FILE='binlog.00001', # 備份時(shí)的binlog文件名,需自己修改 MASTER_LOG_POS=980; # 備份時(shí)的binlog偏移量,需自己修改 # 4、啟動(dòng)從庫的復(fù)制進(jìn)程 # 可以使用兩個(gè)命令啟動(dòng): start slave; # 或 slave start; # 如果你想停止從庫的復(fù)制進(jìn)程,使用命令: stop slave;
當(dāng)然,在使用MySQL rpl時(shí),我們也需要注意一些事項(xiàng):
- 在切換主庫時(shí),需要使用FLUSH TABLES WITH READ LOCK來鎖住表,避免在切換過程中產(chǎn)生臟讀現(xiàn)象。
- 如果主庫崩潰,從庫將不再同步主庫,此時(shí)需要重新連接主庫,并使用SHOW SLAVE STATUS查看主從復(fù)制狀態(tài)。
- 當(dāng)從庫中的數(shù)據(jù)不再與主服務(wù)器同步時(shí),需要使用RESTORE MASTER將數(shù)據(jù)還原到某個(gè)時(shí)間點(diǎn)。
總之,使用MySQL rpl是一種非常好的主從復(fù)制方案。只要我們注意上面提到的幾點(diǎn)小問題,就可以保證我們的MySQL數(shù)據(jù)庫正常運(yùn)行。