mysql中间件之kingshard

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中间件之kingshard相关的知识,希望对你有一定的参考价值。


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检测

http://www.yamllint.com/



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: [email protected]

    slave: "host55:[email protected],host51:[email protected]"

    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: [email protected]

    slave: "host55:[email protected],host51:[email protected]"

    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: [email protected]

    slave: "host52:3306"

    user: root

  - 

    down_after_noalive: 32

    master: "host55:3306"

    max_conns_limit: 64

    name: node2

    password: [email protected]

    slave: "host56:3306"

    user: root

  - 

    down_after_noalive: 32

    master: "host53:3306"

    max_conns_limit: 64

    name: node3

    password: [email protected]

    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

以上是关于mysql中间件之kingshard的主要内容,如果未能解决你的问题,请参考以下文章

DBProxy 入门到精通系列:DBProxy概述

小米开源数据库中间件Gaea实战(有彩蛋)

MySQL中间件之MyCat

MySQL中间件之ProxySQL:简介和安装

MySQL中间件之ProxySQL:多层配置系统

MySQL中间件之ProxySQL(15):ProxySQL代理MySQL组复制