1. 程式人生 > >Mysql資料庫中介軟體 kingshard

Mysql資料庫中介軟體 kingshard

kingshard簡介

kingshard是一個由Go開發高效能MySQL Proxy專案,kingshard在滿足基本的讀寫分離的功能上,致力於簡化MySQL分庫分表操作;能夠讓DBA通過kingshard輕鬆平滑地實現MySQL資料庫擴容。 kingshard的效能是直連MySQL效能的80%以上。線上使用kingshard,

主要功能:

1. 基礎功能

  • 支援SQL讀寫分離。
  • 支援透明的MySQL連線池,不必每次新建連線。
  • 支援平滑上線DB或下線DB,前端應用無感知。
  • 支援多個slave,slave之間通過權值進行負載均衡。
  • 支援強制讀主庫。
  • 支援主流語言(java,php,python,C/C++,Go)SDK的mysql的prepare特性。
  • 支援到後端DB的最大連線數限制。
  • 支援SQL日誌及慢日誌輸出。
  • 支援SQL黑名單機制。
  • 支援客戶端IP訪問白名單機制,只有白名單中的IP才能訪問kingshard(支援IP 段)。
  • 支援字符集設定。
  • 支援last_insert_id功能。
  • 支援熱載入配置檔案,動態修改kingshard配置項(具體參考管理端命令)。
  • 支援以Web API呼叫的方式管理kingshard。
  • 支援多使用者模式,不同使用者之間的表是許可權隔離的,互補感知。

2. sharding功能

  • 支援按整數的hash和range分表方式。
  • 支援按年、月、日維度的時間分表方式。
  • 支援跨節點分表,子表可以分佈在不同的節點。
  • 支援跨節點的count,sum,max和min等聚合函式。
  • 支援單個分表的join操作,即支援分表和另一張不分表的join操作。
  • 支援跨節點的order by,group by,limit等操作。
  • 支援將sql傳送到特定的節點執行。
  • 支援在單個節點上執行事務,不支援跨多節點的分散式事務。
  • 支援非事務方式更新(insert,delete,update,replace)多個node上的子表。

kinshard文件

kingshard安裝和使用

kingshard架構與設計

鳴謝

  • 感謝mixer作者siddontang, kingshard最初的版本正是基於mixer開發而來的。
  • 感謝bigpyer,他對kingshard做了詳細的效能測試,並撰寫了一份非常詳細的測試報告。
  • 感謝以下開源愛好者為kingshard做出的貢獻。

kingshard使用者列表

反饋

kingshard開源以來,經過不斷地迭代開發,功能較為完善,穩定性有較大提升。 目前已有超過50家公司在生產環境使用kingshard作為MySQL代理。 如果您在使用kingshard的過程中發現BUG或者有新的功能需求,請發郵件至flikechen#qq.com與作者取得聯絡,或者加入QQ群(147926796)交流。 歡迎關注後端技術快訊公眾號,有關kingshard的最新訊息與後端架構設計類的文章,都會在這個公眾號分享。

License

kingshard採用Apache 2.0協議,相關協議請參看目錄