MySQL主從復(fù)制是一種將主數(shù)據(jù)庫的數(shù)據(jù)同步到從數(shù)據(jù)庫的機制,可以用于改善系統(tǒng)性能和提高容錯性。主庫可以執(zhí)行寫操作,從庫可以執(zhí)行讀操作,從而分擔主數(shù)據(jù)庫的負載。下面是MySQL主從復(fù)制的幾種方式:
1. 基于二進制日志文件的復(fù)制
首先需要在主庫上開啟二進制日志,然后在從庫上指定主庫的IP地址和二進制日志的名稱和位置,啟動從數(shù)據(jù)庫的復(fù)制線程。此后,在主庫上執(zhí)行的每個修改都將被記錄到二進制日志文件中,從庫根據(jù)日志文件進行同步復(fù)制。 示例代碼: 主庫上開啟二進制日志: mysql>SET GLOBAL binlog_format = 'ROW'; mysql>-- 其他操作 從庫上指定主庫地址和啟動復(fù)制線程: mysql>CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4; mysql>START SLAVE;
2. 基于GTID(Global Transaction ID)的復(fù)制
GTID是MySQL 5.6之后引入的機制,每個事務(wù)擁有唯一的GTID,并且在主庫和從庫之間進行同步時,只需要指定最后一個已同步的GTID值即可實現(xiàn)復(fù)制。這種方式相對于基于二進制日志的復(fù)制,可以降低因二進制日志文件輪替而帶來的復(fù)制延遲。 示例代碼: 主庫上開啟GTID: mysql>SET @@GLOBAL.GTID_MODE=ON; 從庫上指定主庫地址和啟動復(fù)制線程: mysql>CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1; mysql>START SLAVE;
3. 基于半同步的復(fù)制
半同步復(fù)制是指:當向主庫執(zhí)行一個寫操作時,主庫會等待至少一個從庫都復(fù)制了這個寫操作,然后再返回給客戶端執(zhí)行成功。這種方式可以提升系統(tǒng)的數(shù)據(jù)一致性,但是可能會降低系統(tǒng)的性能,因為需要等待至少一個從庫完成復(fù)制。 示例代碼: 主庫上開啟半同步復(fù)制: mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; mysql>SET GLOBAL rpl_semi_sync_master_enabled = ON; 從庫上開啟半同步復(fù)制: mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; mysql>SET GLOBAL rpl_semi_sync_slave_enabled = ON; mysql>CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='replication', MASTER_PASSWORD='password'; mysql>START SLAVE;
以上是MySQL主從復(fù)制的幾種方式,開發(fā)者可以根據(jù)應(yīng)用場景和需求,選擇適合自己的方式進行使用。
下一篇純css畫三角