kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,
致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。
kingshard的性能大约是直连MySQL性能的80%以上。
一.基础功能
支持SQL读写分离(已验证)
支持多个slave,slave之间通过权值进行负载均衡。(已验证)
支持SQL黑名单机制(已验证)
分表(已验证),kingshard支持按整数的hash和range分表,并且支持按日期的分表方式,
sharding(已验证)
sharding支持以下功能:
1.支持按整数的hash和range分表方式。
2.支持按年、月、日维度的时间分表方式。
3.支持跨节点分表,子表可以分布在不同的节点。
4.支持跨节点的count,sum,max和min等聚合函数。
5.支持单个分表的join操作,即支持分表和另一张不分表的join操作。
6.支持跨节点的order by,group by,limit等操作。
7.支持将sql发送到特定的节点执行。
8.支持在单个节点上执行事务,不支持跨多节点的分布式事务。
9.支持非事务方式更新(insert,delete,update,replace)多个node上的子表。
kingshard的性能测试。
影响kingshard性能的因素
1.客服端并发数。并发数过小,不能充分发挥kingshard的性能.具体多大的值合适需要压测。
2.max_conns_limit。 具体设置多大还跟硬件有关,需要压测,官方建议设置为128,根据官方的压测结果获得,
当设置为大于128的时候,性能上升不明显
官方压力测试报告:
https://github.com/flike/kingshard/blob/master/doc/KingDoc/kingshard_performance_test.md
kingshard 官方文档
https://github.com/flike/kingshard/blob/master/README_ZH.md
golang环境的安装
http://www.linuxidc.com/Linux/2015-02/113159.htm
yaml检测
kingshard的守护进程
nohup ./bin/kingshard -config=/etc/ks.yaml &
以下是配置文件样例
####### hash 分表 #######################
---
addr: "0.0.0.0:9696"
blacklist_sql_file: /home/dengwang/software/src/github.com/flike/blacksql/blacklist
log_level: debug
log_path: /home/dengwang/software/src/github.com/flike/kingshard/log
nodes:
-
down_after_noalive: 32
master: "mysql91:3306"
max_conns_limit: 64
name: node1
password: iwjw@2015
slave: "host55:3306@2,host51:3306@2"
user: root
password: kingshard
proxy_charset: gbk
schema:
db: test
default: node1
nodes:
- node1
shard:
-
key: tid
locations:
- 4
nodes:
- node1
table: tt
type: hash
user: kingshard
### range 分表 #####################################################################
---
addr: "0.0.0.0:9696"
blacklist_sql_file: /home/dengwang/software/src/github.com/flike/blacksql/blacklist
log_level: debug
log_path: /home/dengwang/software/src/github.com/flike/kingshard/log
nodes:
-
down_after_noalive: 32
master: "mysql91:3306"
max_conns_limit: 64
name: node1
password: iwjw@2015
slave: "host55:3306@2,host51:3306@2"
user: root
password: kingshard
proxy_charset: utf8
schema:
db: test
default: node1
nodes:
- node1
shard:
-
key: tid
locations:
- 4
nodes:
- node1
table: tt
type: range
table_row_limit: 1000
user: kingshard
############# 分表 中sharding
---
addr: "0.0.0.0:9696"
blacklist_sql_file: /home/dengwang/software/src/github.com/flike/blacksql/blacklist
log_level: debug
log_path: /home/dengwang/software/src/github.com/flike/kingshard/log
nodes:
-
down_after_noalive: 32
master: "host51:3306"
max_conns_limit: 64
name: node1
password: iwjw@2015
slave: "host52:3306"
user: root
-
down_after_noalive: 32
master: "host55:3306"
max_conns_limit: 64
name: node2
password: iwjw@2015
slave: "host56:3306"
user: root
-
down_after_noalive: 32
master: "host53:3306"
max_conns_limit: 64
name: node3
password: iwjw@2015
slave: "host53:3306"
user: root
password: kingshard
proxy_charset: utf8
schema:
db: test
default: node3
nodes:
- node1
- node2
- node3
shard:
-
key: tid
locations:
- 4
- 4
nodes:
- node1
- node2
table: tt
table_row_limit: 1000
type: range
user: kingshard
本文出自 “SQLServer MySQL” 博客,请务必保留此出处http://dwchaoyue.blog.51cto.com/2826417/1754009
原文地址:http://dwchaoyue.blog.51cto.com/2826417/1754009