MySQL數(shù)據(jù)庫同步機制是指將主數(shù)據(jù)庫上的數(shù)據(jù)同步到從數(shù)據(jù)庫的過程,讓從數(shù)據(jù)庫數(shù)據(jù)與主數(shù)據(jù)庫實時同步,保證數(shù)據(jù)的一致性。
MySQL數(shù)據(jù)庫同步機制有兩種方式:主從同步和多主同步。
主從同步是指一個主數(shù)據(jù)庫可以有多個從數(shù)據(jù)庫,主數(shù)據(jù)庫上的數(shù)據(jù)會在同步到從數(shù)據(jù)庫上。主從同步采用了二進制日志文件(Binary Log)實現(xiàn),主數(shù)據(jù)庫會將所有修改寫入 Binary Log 文件中,從數(shù)據(jù)庫會通過 Relay Log 文件復制主數(shù)據(jù)庫中的 Binary Log 文件,實現(xiàn)數(shù)據(jù)同步。
多主同步是指多個主數(shù)據(jù)庫可以同步到其余的數(shù)據(jù)庫,它需要使用到環(huán)形復制(Circular Replication)。在多主同步中,所有的主數(shù)據(jù)庫都是對等的,寫任何一臺主數(shù)據(jù)庫都能夠被自動同步到其他主數(shù)據(jù)庫以及從數(shù)據(jù)庫。
下面是主從同步的配置案例: 主數(shù)據(jù)庫配置: # 修改配置文件 my.cnf [mysqld] log-bin=mysql-bin # 開啟二進制日志功能 server-id=1 # 主數(shù)據(jù)庫使用的編號 從數(shù)據(jù)庫配置: # 修改配置文件 my.cnf [mysqld] server-id=2 # 從數(shù)據(jù)庫使用的編號 # 在SQL命令行中執(zhí)行以下SQL語句 CHANGE MASTER TO MASTER_HOST='主數(shù)據(jù)庫IP地址', MASTER_USER='同步用戶名', MASTER_PASSWORD='同步用戶密碼', MASTER_LOG_FILE='主數(shù)據(jù)庫的 binary log 文件名', MASTER_LOG_POS=4(假設是從庫同步過來的最新位置)
主從同步需要注意一些細節(jié),比如需要注意主從庫的時區(qū)是否一致、注意在主庫上設置讀寫分離等,這些細節(jié)都可以通過閱讀 MySQL 官方文檔得到詳細解釋。