MySQL復制是用于向多個數(shù)據(jù)庫服務器分發(fā)相同數(shù)據(jù)的技術。復制技術可用于將來自主服務器的數(shù)據(jù)副本分發(fā)到一個或多個從屬服務器,在從屬服務器中更新和查詢這些數(shù)據(jù)。MySQL自帶有多種復制方式。
1. 基于語句的復制:主服務器將所有操作語句(例如INSERT、UPDATE和DELETE語句)記入二進制日志,并將二進制日志傳輸?shù)綇膶俜掌?。從屬服務器將收到的語句應用于自己的數(shù)據(jù)庫中。
mysql>SHOW MASTER STATUS\G
*************************** 1. row ***************************
File: mysql-bin.000004
Position: 106
Binlog_Do_DB: test
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
2. 基于行的復制:主服務器將所有更改應用到自己的數(shù)據(jù)庫,并將更改復制記錄為二進制日志。從屬服務器請求并獲取他們所需的所有更改記錄,然后將它們應用到自己的數(shù)據(jù)庫中。
mysql>SHOW @@GLOBAL.GTID_EXECUTED;
+--------------------------------------+
| @@GLOBAL.GTID_EXECUTED |
+--------------------------------------+
| b726e15c-a924-11e4-a4af-0800273b3e3b:1 |
| b726e15c-a924-11e4-a4af-0800273b3e3b:2 |
+--------------------------------------+
2 rows in set (0.00 sec)
3. 混合復制:混合復制結合了基于語句和行的復制。MySQL 5.1.7或以上支持混合復制。
此外,還有多個配置選項可用于調整MySQL復制的行為和各個復制方式的工作方式。這些選項可以在啟動 MySQL 服務器時通過命令行,選項文件或SQL運行時動態(tài)設置。
無論使用哪種復制方式,都需要仔細考慮不同數(shù)據(jù)庫上的數(shù)據(jù)一致性問題,以便在使用時可以避免出現(xiàn)問題。