基於Raft的分散式MySQL Binlog儲存系統開源

flike發表於2019-01-04

近期開源了一個自己的專案:kingbus,感興趣的可以看看。 https://github.com/flike/kingbus

kingbus 簡介

kingbus 是一個基於 raft 強一致協議實現的分散式 MySQL binlog 儲存系統。它能夠充當一個 MySQL Slave 從真正的 Master 上同步 binglog,並儲存在分散式叢集中;同時又充當一個 MySQL Master 將叢集中的 binlog 同步給其他 Slave。kingbus 具有如下特性:

  • 相容 MySQL 複製協議,通過 Gtid 方式同步Master 上的 binlog,同時支援 slave 通過 Gtid 方式從 kingbus 拉取 binlog。

  • 跨地域資料複製,kingbus 通過 raft 協議支出跨地域間的資料複製。寫入到叢集的 binlog 資料在多個節點間保證強一致,並保證 binlog 順序與 master 上完全一致。

  • 高可用,由於 kingbus 是構建在 Raft 強一致協議之上,能夠實現叢集中過半數節點存活的情況下,整個 binlog 拉取和推送服務高可用。

為什麼需要 kingbus ?

  1. 降低 Master 的負載和網路傳輸流量。在一主多從的複製拓撲中,Master 需要傳送 binlog 到各個 slave,如果 slave 過多的話,網路流量很有可能達到 Master 的網路卡上限,同時 Master 上負載也會過高。
  2. 簡化主從複製拓撲,不再需要多級複製。
  3. 簡化 Master Failover 流程,只需將其中的一個 Slave 提升為 Master,並將 kingbus 指向新的 Master,其他 slave 複製拓撲保持不變。
  4. 減少 Master 上的 binlog 儲存空間,將 binlog 都儲存到 kingbus 中。
  5. 支援異構複製。其他異構複製元件可以連線在 kingbus 上。

相關文章