日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

kingshard--一个支持sharding的MySQL Proxy项目

發布時間:2025/3/20 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kingshard--一个支持sharding的MySQL Proxy项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

kingshard簡介

kingshard(https://github.com/flike/king...)是一個由Go開發高性能MySQL Proxy項目,kingshard在滿足基本的讀寫分離的功能上,致力于簡化MySQL分庫分表操作;能夠讓DBA通過kingshard輕松平滑地實現MySQL數據庫擴容。

主要功能:

1.讀寫分離。 2.跨節點分表。 3.客戶端IP訪問控制。 4.平滑上線DB或下線DB,前端應用無感知。

kingshard sharding介紹

現在開源的MySQL Proxy已經有幾款了,并且有的已經在生產環境上廣泛應用。但這些proxy在sharding方面,都是不能分子表的。也就是說一個node節點只能分一張表。但我們的線上需求通常是這樣的:

**我有一張非常大的表,行數超過十億,需要進行拆分處理。假設拆分因子是512。
如果采用單node單數據庫的分表方式,那其實這512個子表還是存在一個物理節點上,意義不大。

如果采用他們的sharding功能,就需要512個物理節點,也不現實。 面對這種需求,現有的proxy就不能很好地滿足要求了。通常我們希望將512張子表均分在幾個MySQL節點上,從而達到系統的橫向擴展。**

然而kingshard較好地實現了這種典型的需求。簡單來說,kingshard的分表方案采用兩級映射的方式:

1.kingshard將該表分成512張子表,例如:test_0000,test_0001,... test_511。 2.將shardKey通過hash或range方式定位到其要操作的記錄在哪張子表上。 3.子表落在哪個node上通過配置文件設置。

sharding支持的操作

目前kingshard sharding支持insert, delete, select, update和replace語句, 所有這五類操作都支持跨子表。但寫操作僅支持單node上的跨子表,select操作則可以跨node,跨子表。

sharding方式

range方式

基于整數范圍劃分來得到子表下標。該方式的優點:基于范圍的查詢或更新速度快,因為查詢(或更新)的范圍有可能落在同一張子表中。這樣可以避免全部子表的查詢(更新)。缺點:數據熱點問題。因為在一段時間內整個集群的寫壓力都會落在一張子表上。此時整個mysql集群的寫能力受限與單臺mysql server的性能。并且,當正在集中寫的mysql 節點如果宕機的話,整個mysql集群處于不可寫狀態。基于range方式的分表字段類型受限。

hash方式

kingshard采用(shardKey%子表個數)的方式得到子表下標。優點:數據分布均勻,寫壓力會比較平均地落在后端的每個MySQL節點上,整個集群的寫性能不會受限于單個MySQL節點。并且當某個分片節點宕機,只會影響到寫入該節點的請求,其他節點的寫入請求不受影響。分表字段類型不受限。因為任何一個類型的分表字段,都可以通過一個hash函數計算得到一個整數。缺點:基于范圍的查詢或更新,都需要將請求發送到全部子表,對性能有一定影響。但如果不是基于范圍的查詢或更新,則性能不會受到影響。

sharding相關的配置介紹

在配置文件中,有關sharding設置是通過scheam設置:

schemas : -db : kingshardnodes: [node1,node2]rules:default: node1shard:- #分表名字table: test_shard_hash#sharding keykey: id#子表分布的節點名字nodes: [node1, node2]#sharding類型type: hash#子表個數分布,表示[test_shard_hash_0000, test_shard_hash_0001, test_shard_hash_0002, test_shard_hash_003]在node1上。#[test_shard_hash_0004, test_shard_hash_0005, test_shard_hash_0006, test_shard_hash_007]在node2上locations: [4,4]- #分表名字table: test_shard_range#sharding keykey: id#sharding類型type: range#子表分布的節點名字nodes: [node1, node2]#子表個數分布,表示[test_shard_hash_0000, test_shard_hash_0001, test_shard_hash_0002, test_shard_hash_003]在node1上。#[test_shard_hash_0004, test_shard_hash_0005, test_shard_hash_0006, test_shard_hash_007]在node2上locations: [4,4]#每張子表的記錄數。[0,10000)在test_shard_hash_0000上,[10000,20000)在test_shard_hash_0001上。....table_row_limit: 10000

一個kingshard實例只能有一個schemas,從上面的配置可以看出,schema可以分為三個部分:

1.db,表示這個schemas使用的數據庫。2.nodes,表示子表分布的節點名字。3.rules,sharding規則。其中rules又可以分為兩個部分:- default,默認分表規則。所有操作不在shard(default規則下面的規則)中的表的SQL語句都會發向該node。- hash,hash分表方式。- range,range分表方式

kingshard架構圖

基于kingshard的子表遷移方案

通過kingshard可以非常方便地動態遷移子表,從而保證MySQL節點的不至于負載壓力太大。大致步驟如下所述:

  • 通過自動數據遷移工具開始數據遷移。
  • 數據差異小于某一臨界值,阻塞老子表寫操作(read-only)
  • 等待新子表數據同步完畢
  • 更改kingshard配置文件中的對應子表的路由規則。
  • 刪除老節點上的子表。
  • Exaple

    簡單演示一下kingshard的相關操作,感興趣的同學可以自己試一試。:)

    #啟動kingshard kingshard git:(master) ? ./bin/kingshard -config=etc/multi.yaml kingshard 2015/07/19 11:13:43 - INFO - server.go:[205] - [server] "NewServer" "Server running" "netProto=tcp|address=127.0.0.1:9696" conn_id=0#另一個終端連接kingshard mysql -ukingshard -pkingshard -h127.0.0.1 -P9696; Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10001 Server version: kingshard-1.0 HomebrewCopyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>use kingshard; Database changed mysql> select/*master*/ * from kingshard_test_conn; +----+----------+------+-------+------+------+ | id | str | f | e | u | i | +----+----------+------+-------+------+------+ | 1 | a | 3.14 | test1 | NULL | NULL | | 5 | ""''\abc | NULL | NULL | NULL | NULL | | 6 | 中國 | NULL | NULL | NULL | NULL | +----+----------+------+-------+------+------+ 3 rows in set (0.01 sec)mysql> select * from test_shard_hash where id in(6,10); +----+-------+------+-------+------+------+ | id | str | f | e | u | i | +----+-------+------+-------+------+------+ | 10 | world | 2.1 | test1 | 1 | 1 | +----+-------+------+-------+------+------+ 1 row in set (0.03 sec)mysql> show tables; +----------------------------+ | Tables_in_kingshard | +----------------------------+ | kingshard_test_conn | | kingshard_test_proxy_conn | | kingshard_test_proxy_stmt | | kingshard_test_shard_hash | | kingshard_test_shard_range | | kingshard_test_stmt | | test_shard_hash_0000 | | test_shard_hash_0001 | | test_shard_hash_0002 | | test_shard_hash_0003 | | test_shard_range_0000 | | test_shard_range_0001 | | test_shard_range_0002 | | test_shard_range_0003 | +----------------------------+ 14 rows in set (0.00 sec)

    反饋

    非常歡迎您發郵件至flikecn#126.com與作者取得聯系,或者加入QQ群(147926796)交流。

    github:https://github.com/flike/king...

    歡迎關注后端技術快訊公眾號,有關kingshard的最新消息與后端架構設計類的文章,都會在這個公眾號分享。

    總結

    以上是生活随笔為你收集整理的kingshard--一个支持sharding的MySQL Proxy项目的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 人人爽人人射 | 亚洲av无码一区二区三区在线播放 | 久久综合五月 | 午夜av福利 | 亚洲理论在线 | 欧美a图| 精品在线视频观看 | 国产精品免费视频一区 | 欧美另类69 | 成年人在线免费观看网站 | 国产操比视频 | 92精品 | 日韩中文在线观看 | 久久精品国产亚洲AV成人雅虎 | 日本在线网站 | 白峰美羽在线播放 | 日本少妇激情视频 | 国产精品亚洲一区二区三区 | 日韩资源 | 亚洲女同一区 | 免费黄色片网站 | 337p日本欧洲亚洲大胆精筑 | 天天干 夜夜操 | 日日夜夜操操操 | 岛国av免费看| 少妇人妻无码专区视频 | 欧美日韩一区二区三区四区 | 生活片一级片 | 男女午夜视频 | aaa在线视频 | 成人精品福利 | 日本一二三不卡视频 | 日本黄色天堂 | 精品自拍第一页 | 国产嫩草av| 国产视频在线一区 | 亚洲一线二线在线观看 | 成人精品视频 | 中文字幕第88页 | 手机在线中文字幕 | 熟妇人妻中文字幕无码老熟妇 | 6080午夜伦理 | 国产精品18久久久久久vr下载 | 欧美黄片一区二区三区 | 天天想你在线观看完整版电影免费 | xxxx999| 日韩免费精品 | 男生草女生视频 | 免费在线观看亚洲 | 日日噜噜夜夜狠狠久久波多野 | 精品动漫3d一区二区三区免费版 | 毛片在哪里看 | 成人深夜免费视频 | 国产精品一区二区三区在线看 | 亚洲精品久久久久久一区二区 | 这里只有久久精品 | 特一级黄色 | 欧美人妻一区二区 | 欧美永久精品 | 国产精品视频看看 | 在线观看免费视频国产 | 手机看片一区 | 熟女肥臀白浆大屁股一区二区 | 日韩电影一区二区三区 | 免费小视频 | 波多野结衣电影免费观看 | 男人天堂资源 | 久久人人干| 一边摸一边做爽的视频17国产 | 久久人妻无码aⅴ毛片a片app | 男女激情视频网站 | 夜夜爽妓女8888视频免费观看 | 国产精品911 | 一集毛片 | 中文字幕日韩欧美一区二区 | 天天草夜夜 | 先锋av资源网| 亚洲欧洲综合 | 天天澡天天狠天天天做 | 日韩精品免费一区二区夜夜嗨 | 久久亚洲精选 | 亚洲精品无码久久久久久久 | 四虎精品欧美一区二区免费 | 亚洲免费专区 | jizz中国女人 | 成人高潮片免费网站 | 嫩草影院黄色 | 蘑菇福利视频一区播放 | 天天干网 | 黄色一级毛片 | 久久成人福利视频 | 在线免费小电影 | 日日夜精品 | 肉嫁高柳家 高清 | 黄色一级大片在线免费看国产一 | 成人av一区二区在线观看 | 91精品小视频 | 中文字幕在线观看亚洲 | 国产一区二区三区四区视频 |