分库分布的几件小事(二)如何进行分库分表的数据迁移

简介: 如何进行分库分表的数据迁移,如何业务无感知迁移数据

1.停机迁移方案

这是最简单的也是最low的迁移方案了,如果系统就算短期停机也没有关系或者造不成多大的影响,可以选用此方案。

首先停掉机器,将系统全都停掉,不要再有新的数据进来,然后使用之前写好的程序,连接旧的数据库,将旧数据库里面的数据读出来,然后通过数据分发中间件写到分库分好的数据里面去。然后修改系统是数据库连接、分库分表配置,然后重新上线。

2.双写不停机迁移方案

双写迁移方案的核心在双写,首先要修改系统所有需要写库的地方,将虽有对数据的写操作不但要写入就库,也要同时写入新库。

然后使用写好的数据迁移程序,去读取老数据库的数据写入到新的数据库里面去,写的时候要根据数据的最后更新时间去判断数据,如果读出来的数据新库没有直接写入,如果新库也有,查看最后更新时间,旧库的新就覆盖写入,如果新库的新就放弃这条数据。

导完一轮数据之后,有可能数据还是存在不一致,那么就写个程序做一轮校验,对比老库和新库的每条数据,如果存在不一样的,就针对这些不一样的,再次去进行数据同步。反复循环,直到数据完全一致。

接着当数据完全一致了,就ok了,基于仅仅使用分库分表的最新代码,重新部署一次,不就仅仅基于分库分表在操作了么,还没有几个小时的停机时间,很稳。所以现在基本玩儿数据迁移之类的,都是这么干了。

相关文章
|
5月前
|
关系型数据库 MySQL 数据处理
分库分表知识总结(一)之解决问题
分库分表知识总结(一)之解决问题
44 1
|
12月前
|
存储 JavaScript Java
亿级别大表拆分 —— 记一次分表工作的心路历程
亿级别大表拆分 —— 记一次分表工作的心路历程
|
12月前
|
存储 程序员 数据库
如何选择合适的分表分库方案
如何选择合适的分表分库方案
68 0
|
canal 中间件 Java
阿里终面:业务主表读写缓慢如何优化?
阿里终面:业务主表读写缓慢如何优化?
|
存储 SQL 算法
好好的系统,为什么要分库分表?
好好的系统,为什么要分库分表?
239 1
|
SQL 存储 cobar
分库分布的几件小事(一)数据库如何拆分
为何要分库分表、分库分表的方式
|
关系型数据库 MySQL 中间件
|
SQL 关系型数据库 MySQL
|
算法 数据库
|
存储 缓存 数据库
三分钟理解分库分表
这篇文章的脉络如下: 1、分库分表之前出现的问题 2、怎么分库分表? 3、分库分表的规则是什么? 下面按照这个脉络给出今天的文章
255 0