數據庫 ID 生成方案:數據庫多主模式

將兩個數據庫組成主從模式的集羣,正常情況下,是可以解決數據庫的可靠性問題,但如果主庫掛掉後,數據沒有及時同步到從庫,這個時候就會出現 ID 重複的問題。

可以使用雙主模式集羣,也就是兩個實例都能單獨的生產自增ID,這樣能夠提高效率,不過就需要單獨給每個數據庫實例配置不同的起始值和自增步長。

第一臺 MySQL 實例配置:

set @@auto_increment_offset = 1;     -- 起始值
set @@auto_increment_increment = 2;  -- 步長

第二臺 MySQL 實例配置:

set @@auto_increment_offset = 2;     -- 起始值
set @@auto_increment_increment = 2;  -- 步長

經過上面的配置後,這兩臺實例生成的 ID 序列如下:

mysql01:起始值爲1,步長爲2,ID 生成的序列爲:1,3,5,7,9,...
mysql02:起始值爲2,步長爲2,ID 生成的序列爲:2,4,6,8,10,...

實行這種方案後,就算其中某一臺實例不能提供正常服務了,也不會完全影響整個系統。

但是,這種方案的擴展性並不太好,如果兩臺實例不夠用,就需要新增新的實例來提高性能。

假設要再增加新的實例,不僅要解決 ID 衝突的問題,而且還需要停止服務才能進行。

爲解決以上問題,後面還會繼續介紹更常見的一些解決方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章