![](https://img-blog.csdnimg.cn/20200515000203956.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库
数据库
爱喝咖啡的程序员
这个作者很懒,什么都没留下…
展开
-
分布式环境下,分库分表后的如何生成全局唯一的主键id?
一. 问题分库分表后,多个数据库存在相同的数据表,那么在插入数据时,主键id如何保证唯一呢?二. 解决方案1. 新增一台专门用于创建id的数据库全局范围内新增一台数据库,专门用于创建和提供主键id。其它数据库表在插入数据之前,首先向这台数据库插入一台数据,通过主键自增的方式,获得一个id,接着再插入到自己的数据表内。缺点:1.需要额外创建数据库实例。2.由于所有涉及到创建主键id的写请求操作都需要经过这台数据库,因此请求压力较高,无法满足大并发的场景。适用场景:写请求并发小,写入数据原创 2020-08-11 17:40:56 · 817 阅读 · 0 评论 -
数据库分库分表扩缩容方案
一. 为什么在分库分表的场景下需要扩容需要为数据库集群考虑扩容的原因一般有如下两点:1. 数据库所在服务器的磁盘空间不足。(当然也可以加磁盘)2. 读写请求并发量超过了数据库集群能承载的极限。二. 如何扩容首次进行数据库规划时,尽可能地考虑极限情况。起初可能租用地服务器数量较少,但是我们可以在每一台服务器上部署尽可能多地数据库实例,这点是方便后期扩容的关键。举个例子,比如刚开始我们只租用了4台服务器,但每台服务器上部署了8个数据库实例和32张数据表。假如使用Mysql数据库,原创 2020-08-09 21:11:49 · 1140 阅读 · 0 评论 -
线上运行的系统实现从单库单表迁移至分库分表的实现方案
一. 需要长时间停机的迁移方案迁移过程:1. 将业务服务停机(比如使用Tomcat容器,不在对外提供服务)2. 启动多个分库分表服务,从单库单表的DB中抽取数据,并发送至数据库分库分表中间件,接着由中间件将数据写入到分库分表的DB中。这个过程所耗费的时间与数据量、分库分表服务的个数、是否使用多线程等因素相关。3. 通过修改配置的方式,断开业务服务与单库单表DB的连接,使业务服务连接到数据库分库分表中间件上,并重启业务服务。缺点:整套迁移流程需要一气呵成,当单库单表的数据量较大时,原创 2020-08-09 18:58:37 · 955 阅读 · 2 评论