mysql 雙向同步的鍵值沖突問題的解決方法分享
更新時間:2011年09月26日 14:31:09 作者:
多主互備和主從復(fù)制有一些區(qū)別,因為多主中都可以對服務(wù)器有寫權(quán)限,所以設(shè)計到自增長重復(fù)問題
出現(xiàn)的問題(多主自增長ID重復(fù))
1:首先我們通過A,B的test表結(jié)構(gòu)
2:掉A,在B上對數(shù)據(jù)表test(存在自增長ID)執(zhí)行插入操作,返回插入ID為1
3:后停掉B,在A上對數(shù)據(jù)表test(存在自增長ID)執(zhí)行插入操作,返回的插入ID也是1
4:然后 我們同時啟動A,B,就會出現(xiàn)主鍵ID重復(fù)
解決方法:
我們只要保證兩臺服務(wù)器上插入的自增長數(shù)據(jù)不同就可以了
如:A查奇數(shù)ID,B插偶數(shù)ID,當然如果服務(wù)器多的話,你可以定義算法,只要不同就可以了
在這里我們在A,B上加入?yún)?shù),以實現(xiàn)奇偶插入
A:my.cnf上加入?yún)?shù)
auto_increment_offset = 1
auto_increment_increment = 2
這樣A的auto_increment字段產(chǎn)生的數(shù)值是:1, 3, 5, 7, …等奇數(shù)ID了
B:my.cnf上加入?yún)?shù)
auto_increment_offset = 2
auto_increment_increment = 2
這樣B的auto_increment字段產(chǎn)生的數(shù)值是:2, 4, 6, 8, …等偶數(shù)ID了
可以看出,你的auto_increment字段在不同的服務(wù)器之間絕對不會重復(fù),所以Master-Master結(jié)構(gòu)就沒有任何問題了。當然,你還可以使用3臺,4臺,或者N臺服務(wù)器,只要保證auto_increment_increment = N 再設(shè)置一下auto_increment_offset為適當?shù)某跏贾稻涂梢粤?,那樣,我們的MySQL可以同時有幾十臺主服務(wù)器,而不會出現(xiàn)自增長ID 重復(fù)。
1:首先我們通過A,B的test表結(jié)構(gòu)
2:掉A,在B上對數(shù)據(jù)表test(存在自增長ID)執(zhí)行插入操作,返回插入ID為1
3:后停掉B,在A上對數(shù)據(jù)表test(存在自增長ID)執(zhí)行插入操作,返回的插入ID也是1
4:然后 我們同時啟動A,B,就會出現(xiàn)主鍵ID重復(fù)
解決方法:
我們只要保證兩臺服務(wù)器上插入的自增長數(shù)據(jù)不同就可以了
如:A查奇數(shù)ID,B插偶數(shù)ID,當然如果服務(wù)器多的話,你可以定義算法,只要不同就可以了
在這里我們在A,B上加入?yún)?shù),以實現(xiàn)奇偶插入
A:my.cnf上加入?yún)?shù)
auto_increment_offset = 1
auto_increment_increment = 2
這樣A的auto_increment字段產(chǎn)生的數(shù)值是:1, 3, 5, 7, …等奇數(shù)ID了
B:my.cnf上加入?yún)?shù)
auto_increment_offset = 2
auto_increment_increment = 2
這樣B的auto_increment字段產(chǎn)生的數(shù)值是:2, 4, 6, 8, …等偶數(shù)ID了
可以看出,你的auto_increment字段在不同的服務(wù)器之間絕對不會重復(fù),所以Master-Master結(jié)構(gòu)就沒有任何問題了。當然,你還可以使用3臺,4臺,或者N臺服務(wù)器,只要保證auto_increment_increment = N 再設(shè)置一下auto_increment_offset為適當?shù)某跏贾稻涂梢粤?,那樣,我們的MySQL可以同時有幾十臺主服務(wù)器,而不會出現(xiàn)自增長ID 重復(fù)。
相關(guān)文章
django2.2版本連接mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了django2.2版本如何連接mysql數(shù)據(jù)庫,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10phpmyadmin報錯:#2003 無法登錄 MySQL服務(wù)器的解決方法
通過phpmyadmin連接mysql數(shù)據(jù)庫時提示:“2003 無法登錄 MySQL服務(wù)器”。。。很明顯這是沒有啟動mysql服務(wù),右擊我的電腦-管理-找到服務(wù),找到mysql啟動一下2012-04-04Windows Server 2003 下配置 MySQL 集群(Cluster)教程
這篇文章主要介紹了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本文先是講解了原理知識,然后給出詳細配置步驟和操作方法,需要的朋友可以參考下2015-06-06Navicat for MySql可視化導(dǎo)入CSV文件
這篇文章主要為大家詳細介紹了Navicat for MySql可視化導(dǎo)入CSV文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05mysql8.0.20安裝與連接navicat的方法及注意事項
這篇文章主要介紹了mysql8.0.20安裝與連接navicat的方法及注意事項,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05