MySQL分库分表分库准备(6th)

  • A+
所属分类:MySQL

前言

随着业务的发展单库中的分表的数量越来越多, 使用在单库上存放过多的表这样是不合理的。因此,我们就需要考虑将数据根据数据库进行拆分。

一般mysql不建议表的数量超过1000个。当然,这不能一概而论,还需要根据你的数据量,和硬件来确定然后根据自己的服务器调整几个mysql '%open%' 参数,从而来确定你的库应该不超过几张表性能能在可接受范围内。

分库思路

在分库前我们需要确定一下我们应该如何去分库:

1、我们是根据用户ID来进行分库,和分表的思路一样。

2、我们需要在用户表中标记一下用户的数据是在哪个库。

3、在系统设置表中应该记录下当前最大分库数量。

4、在系统设置表中应该记录现在所有分库的库名。

5、在系统设置表中应该记录每个分库的数据库连接描述符信息。

分库规则

我们以 '数字' 为分库标识最终分库的名称如:test_1、test_2、test_3 ...

在新增加库的时候,我们在新库中创建的表的数量是在系统设置表中的最大分表数。如在系统设置表中 name='max_sharding_table_num' 的 value='10',这时我们会初始化每个分表的个数为10个。

数据迁移

和分表一样我们应该很清楚哪些表是需要进行分库,我们需要分库的表有 buy_order_n、goods_n、sell_order_n、order_goods_n。

我们应该将之前的数据的库名进行统一。如之前test库的数据要先迁移到 test_1 上

提醒:数据迁移慎重,不是说迁移就迁移的。其实也可以不用迁移的,如果不迁移之后的自动分库的代码就需要做多一点的判断。这为了统一我就做了迁移。

数据迁移SQL

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
HH

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: