MySQL是關系型數據庫管理系統中非常常用的一種,在MySQL 5.1版本之后,它就支持了半同步復制的特性。半同步復制被廣泛應用于高可用性,從而保障業務的穩定性以及數據的完整性。
半同步復制有一個非常重要的屬性,那就是“強一致性”。所謂強一致性是指,當一個事務被提交后,它的結果一定會被同步到所有備份的MySQL實例上,只有當所有的實例都成功返回一個確認消息之后,事務才被認為是已經完成的。
與此相對應的是異步復制,這種方式下備份MySQL實例并不需要等待主MySQL實例同步數據之后才返回確認消息,因此異步復制的強一致性較弱,可能會出現數據不一致的情況。
/* 設置主節點 */ CHANGE MASTER TO MASTER_HOST='localhost', MASTER_PORT=3306, MASTER_USER='repluser', MASTER_PASSWORD='replpass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=475; /* 設置從節點半同步 */ INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; /* 使從節點生效 */ SET GLOBAL rpl_semi_sync_slave_enabled=1; SET GLOBAL rpl_semi_sync_master_enabled=1;
在MySQL進行半同步復制時,我們需要注意的是:
1. 在MySQL的主備份實例都需要配置半同步復制插件。
2. 主MySQL實例需要等待所有備份實例的確認消息才能認為一個事務已經被完成。
3. 備份MySQL實例需要返回一個確認消息。