mysql kingshard 扩容_kingshard--一个支持sharding的MySQL Proxy项目

Kingshard是一个用Go语言开发的高性能MySQL Proxy,它提供了读写分离和分库分表功能,便于数据库扩容。本文介绍了Kingshard的主要特性,包括其两级映射的分表方案,支持的SQL操作,以及如何配置和使用Kingshard进行数据迁移。
摘要由CSDN通过智能技术生成

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集群的写能力受限与单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值