6.5 不同mysql版本之間的同步兼容性
最早的二進制格式是在mysql 3.23中開發出來的。在mysql 4.0中改進了,mysql 5.0又改進了。在配置同步時需要升級服務器的話,它們之間的因果關系在"6.6 upgrading a replication setup"中描述了。
如果只關心同步,任何mysql 4.1.x版本和mysql 4.0.x是一樣的,因為它們都使用相同格式的二進制日志。所以,這些版本是互相兼容的,它們之間可以無縫地運行同步。一個例外的情況是,mysql 4.0.0到4.0.2由于開發的較早,無法和后來的版本互相兼容,所以不要使用它們(它們是4.0版本的alpha系列。它們之間的兼容性在發布包的手冊中均有相關文檔)。
下表展示了不同版本的mysql之間的master/slave同步兼容性。
| master | master | master | ||
| 3.23.33 and up | 4.0.3 and up or any 4.1.x | 5.0.0 | ||
| slave | 3.23.33 and up | yes | no | no |
| slave | 4.0.3 and up | yes | yes | no |
| slave | 5.0.0 | yes | yes | yes |
一個通常的規則是,我們建議使用最近的mysql版本,因為同步兼容性一直在改善。我們也建議master和slave都使用同一個版本。
6.6 升級同步
如果升級服務器時涉及到配置同步,升級設置的步驟跟當前版本以及升級后的版本不同而異。
6.6.1 升級同步到 4.0 或 4.1
本節適用于從mysql 3.23升級到4.0或者4.1的情況。4.0的服務器必須是4.0.3或者更高,"6.5 replication compatibility between mysql versions"中提到了。
把master從mysql 3.23升級到4.0或4.1時,首先要確認這個master的所有slave都已經是4.0或4.1了,否則的話,要先升級slave:挨個關閉,升級,重啟,重啟同步等。
通過以下步驟可以實現安全地升級,假定master要升級到3.23,而slave已經是4.0或4.1了。注意,master升級后,不要重啟使用任何舊的二進制日志的同步,因為它會干擾到4.0或4.1 slave的同步。
在master上執行 flush tables with read lock 語句,阻止所有的更新。
等到所有的slave都跟上了master的數據更新。在master上執行 show master status 語句取得二進制日志以及偏移位置。然后,再slave用這些值執行 select master_pos_wait() 語句,它會阻止slave上的同步且返回它已經同步的偏移位置。然后在slave上執行 stop slave 語句。
關閉master,將它升級到mysql 4.0或4.1。
重啟master,記下它的新的二進制文件名。可以在master上執行 show master status 語句來取得這些信息。然后在每個slave上都執行如下語句:
mysql> change master to master_log_file='binary_log_name',
-> master_log_pos=4;
mysql> start slave;
6.6.2 升級同步到 5.0
本節適用于從mysql 3.23,4.0或4.1升級到5.0的情況。4.0的服務器必須是4.0.3或者更高,"6.5 replication compatibility between mysql versions"中提到了。
首先,注意到mysql 5.0還是alpha發布系列。它在各方面都比舊版本好(更容易升級一些同步中重要的會話變量,例如 sql_mode;詳情請看"c.1.3 changes in release 5.0.0 (22 dec 2003: alpha")。不過,它還沒經過廣泛測試。由于是alpha版本,我們不建議用于任何生產環境(現在已經可以用于生產了,譯者注)。
把master從mysql 3.23,4.0或4.1升級到5.0.0時,首先要確認這個master的所有slave都已經是5.0.0了,否則的話,要先升級slave:挨個關閉,升級,重啟,重啟同步等。5.0.0的slave可以讀取升級前寫入的執行語句的中繼日志。升級完后的slave創建的中繼日志就是5.0格式了。
當所有的slave都升級完了,關閉master,升級到5.0.0,然后重啟。5.0.0的master也可以讀取舊格式的二進制日志。slave能識別舊的格式并且合理處理它們。master上新建的二進制日志都是5.0.0格式的。slave也能識別這格式。
新聞熱點
疑難解答