MySQL 主從復(fù)制 (Master-Slave Replication) 是 MySQL 數(shù)據(jù)庫中一種數(shù)據(jù)復(fù)制機制,通過復(fù)制主數(shù)據(jù)庫 (Master) 的數(shù)據(jù)到從數(shù)據(jù)庫 (Slave) 實現(xiàn)數(shù)據(jù)的備份、讀寫分離等操作。主從復(fù)制的實現(xiàn)基于二進制日志 (Binary Log),主數(shù)據(jù)庫進行數(shù)據(jù)變更時,將二進制日志寫入到磁盤上,從數(shù)據(jù)庫通過讀取主數(shù)據(jù)庫的二進制日志,再應(yīng)用到自己的數(shù)據(jù)庫上,達到與主數(shù)據(jù)庫一致的狀態(tài)。
// 創(chuàng)建從數(shù)據(jù)庫
SLAVE STOP;
CHANGE MASTER TO MASTER_HOST = '192.168.0.1', MASTER_USER = 'replication', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'master-bin.00001', MASTER_LOG_POS = 107;
SLAVE START;
上面的代碼表示創(chuàng)建一個從數(shù)據(jù)庫,先停止從數(shù)據(jù)庫的運行,之后配置主數(shù)據(jù)庫的信息,包括主數(shù)據(jù)庫的地址、用戶名、密碼,以及從數(shù)據(jù)庫讀取主數(shù)據(jù)庫二進制日志的位置。最后啟動從數(shù)據(jù)庫即可。
MySQL 主從復(fù)制有很多應(yīng)用場景,比如:
- 數(shù)據(jù)備份:通過從數(shù)據(jù)庫備份主數(shù)據(jù)庫的數(shù)據(jù),達到數(shù)據(jù)的冗余備份效果。
- 讀寫分離:將讀請求轉(zhuǎn)發(fā)到從數(shù)據(jù)庫,將寫請求轉(zhuǎn)發(fā)到主數(shù)據(jù)庫,減輕主數(shù)據(jù)庫壓力,提高讀寫性能。
- 故障恢復(fù):當主數(shù)據(jù)庫出現(xiàn)故障時,可以將從數(shù)據(jù)庫提升為主數(shù)據(jù)庫,繼續(xù)提供服務(wù)。
需要注意的是,MySQL 主從復(fù)制是一種異步復(fù)制,即從數(shù)據(jù)庫復(fù)制主數(shù)據(jù)庫數(shù)據(jù)的過程是異步的,不能保證從數(shù)據(jù)庫數(shù)據(jù)的實時性,因此在應(yīng)用中需要注意這一點。