Mysql

Percona XtraDb 集群自動增量

  • April 20, 2018

請幫助我澄清一個我找不到答案的非常重要的問題。它只能通過測試來證明。

假設我們有具有三個節點的 XtraDB 集群(或 Galera 集群)。我們有具有自動增量主鍵的主使用者表。

  • 第一個節點上此表中的 ID 類似於 1,4,7,10…
  • 在第二個節點 - 2,5,8,11…
  • 在第三個節點 - 3,6,9,12…

一段時間後,我們發現第一個節點有 10000 次插入,因此其自增值約為 30000。但另外兩個節點負載較少,因此它們只有約 100 次插入,其自增值約為 300。

現在我們決定在集群中再添加兩個節點。現在自動增量偏移量等於 5。顯然,兩個負載較小的節點不能用它們的新偏移量填充從 300 到 30000 的數字,對吧?

那麼表在每個節點上的自增會發生什麼呢?集群將如何表現?

它是否會為每個節點從 30000 開始自動增量,並且從 300 到 30000 的未填充 id 將保持未填充?

感謝您的時間和經驗。

很高興知道你已經找到了訣竅。

順便說一句,回答你的第二個問題。PXC 有一個配置 (wsrep_auto_increment_control) 可以幫助您恢復類似於獨立的 auto_increment 行為。

如果您的工作負載沒有並行寫入表,那麼您當然可以使用它。

(在這裡查看更多資訊http://galeracluster.com/documentation-webpages/mysqlwsrepoptions.html#wsrep-auto-increment-control

您也可以嘗試一下,看看它是如何工作的。

我們做了一些測試。事實證明,自動增量的工作方式完全不同,所以我的擔憂毫無意義。

每個插入表的三個節點都會完全更新表的自增索引。所以你總是沒有使用值,只有在來自不同節點的兩個插入同時出現的後面情況下,id 才能一個接一個出現。

這讓我們想到了另一個想法。如果我們有五個節點,我們將比普通的非集群表快五倍於 INT(11)。

引用自:https://dba.stackexchange.com/questions/204395