MySQL 主從復制是一種常見的 MySQL 數(shù)據(jù)庫架構。在該架構下,有一個主節(jié)點和多個從節(jié)點。主節(jié)點用于寫入和更新數(shù)據(jù),從節(jié)點則用于讀取數(shù)據(jù)。
在主從架構中,主節(jié)點會將其所有的數(shù)據(jù)更改寫入二進制日志中,例如類似于以下的 SQL 語句: INSERT INTO users (name, age, gender) VALUES('John', 25, 'male'); 從節(jié)點會連接到主節(jié)點并請求復制二進制日志。主節(jié)點會將這些二進制日志發(fā)送給從節(jié)點,從節(jié)點便可以將其存儲到自己的數(shù)據(jù)中。這樣,即使主節(jié)點崩潰,從節(jié)點仍然能夠繼續(xù)進行讀操作。 主從復制可以極大地提高系統(tǒng)的可用性,并且還可以提高讀取性能。 當讀取流量增加時,可以輕松地向系統(tǒng)添加更多的從節(jié)點,以平衡讀的負載。
維護 MySQL 主從架構的關鍵是配置正確的復制設置和確保數(shù)據(jù)一致性。
1.配置 MySQL 主節(jié)點: server-id=1 log-bin=mysql-bin binlog-do-db=mydb binlog-ignore-db=mysql replication-user=myuser replication-password=mypassword - server-id 設置用于標識不同 MySQL 服務器的唯一 ID。 - log-bin 啟用二進制日志。 - binlog-do-db 將二進制日志記錄限制為特定的數(shù)據(jù)庫。 - binlog-ignore-db 忽略不需要復制的數(shù)據(jù)庫(例如系統(tǒng)庫)。 - replication-user 和 replication-password 為授權從節(jié)點訪問主節(jié)點的用戶提供憑據(jù)。 2.配置 MySQL 從節(jié)點: server-id=2 replicate-do-db=mydb replicate-ignore-db=mysql replicate-user=myuser replicate-password=mypassword master-host=master-host-ip master-user=myuser master-password=mypassword master-port=3306 master-connect-retry=60 - server-id 設置用于標識不同 MySQL 服務器的唯一 ID - replicate-do-db 僅復制指定的數(shù)據(jù)庫。 - replicate-ignore-db 忽略不需要復制的數(shù)據(jù)庫(例如系統(tǒng)庫)。 - replicate-user 和 replicate-password 為授權從節(jié)點訪問主節(jié)點的用戶提供憑據(jù)。 - master-host,master-user,master-password 和 master-port 用于指定主節(jié)點的位置和憑據(jù)。 - master-connect-retry 用于指定從節(jié)點嘗試與主節(jié)點重新建立連接的時間間隔。 重要提示:配置 MySQL 主從復制時要確保主節(jié)點和所有從節(jié)點的 mysql 版本相同,且復制賬戶的權限足夠用于復制數(shù)據(jù)。