Mysql資料庫中介軟體 kingshard
阿新 • • 發佈:2018-12-17
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協議,相關協議請參看目錄