简述MySQL分片中快速数据迁移

推荐阅读:MySQL 数据库跨操作系统的最快迁移方法

mysql 备份与迁移 数据同步方法

操作实践背景:

travelrecord表定义为10个分片,尝试将10个分片中的2个分片转移到第二台MySQL上,并完成记录, 要求最快的数据迁移做法,中断业务时间最短

思路一利用mysqldump:

在这里我们只针对mysql innodb engine,而且配置bin-log的数据库进行分析。因为是将10个分片中的两个分片进行迁移,其实就是数据库的迁移过程,就是将10个数据库中的两个数据迁移到另外一台机器;中断业务最短的做法就是:

1) 准备mycat新的配置文件备用,以便快速切换配置文件。

2) 在业务地峰期间,如凌晨,使用mysqldump进行数据库的全量备份(附带--flush-logs);

3) 将两个分片数据库的全量备份第二台机器上进行全量恢复;

4) 停止mycat服务器,

5) 停止第一台机器的mycat实例(假设原来的分片在一个mysql实例)

6) 拷贝第一台机器的binlog文件到第二台机器,并使用mysql的mysqlbinlog工具进行这两个数据库的增量数据的恢复。

7) 启动第一台数据实例,校验迁移的两个分片数据正确性(主要看记录数)

8) 替换mycat的配置文件并启动mycat实例

在该方案中,业务中断的时间主要是处理mysqlbinlog的增量数据恢复。

思路二利用mysql的ms机制做级联复制

在这里二个片比如第一个分片db11,第二个分片db21,我在db11上面再做个级联主从,db11-->db16,在db21上面做个级联主从db21->db26,这样到时候数据实时同步,中断业务比较短的做法是:

1)准备mycat新配置文件备用,以便快速切换配置文件。

2)在业务低峰期间,比如凌晨时分,开始操作,停止mycat服务器

3)进行db11-db16主备切换,进行db21-db26主备切换

4)停止第一台机器的mycat实例

5)在主备切换过程中,旧的主db11、db21上面的binlog中如果有新的dml、ddl操作,就用mysqlbinlog解析出来,在新的主db16和db26上面重做一遍

6)使用mk-table-checksum工具检查新主从db16->db11、db26->db21的数据一致性。

7)替换mycat的配置文件并启动mycat实例

好了,关于MySQL分片中快速数据迁移相关知识就给大家介绍到这里,希望对大家有所帮助,更多有关mysql数据迁移知识请登录www.jb51.net 了解更多!

(0)

相关推荐

  • MySQL下海量数据的迁移步骤分享

    公司数据中心计划将海量数据做一次迁移,同时增加某时间字段(原来是datatime类型,现在增加一个date类型),单表数据量达到6亿多条记录,数据是基于时间(月)做的partition由于比较忙,一直没有总结,所以很细节的地方都记不清楚了,此处只是简单总结下当时的情形,备忘 乱打乱撞 最初接到任务,没有明确的入手点,直接就是select * from db limit 10000,动态修改翻页数量,通过控制台看耗时情况,慢 复制代码 代码如下: SELECT IR_SID,IR_HKEY,IR_

  • mysql 备份与迁移 数据同步方法

    不过最近发现这个可视化操作有点点问题,就是当数据条数超过一定数目EMS SQL Manager就挂了,也不知道是否是软件问题--当然该开始我是将大的数据库文件分拆成小份小份的,多次导入. 刚才发现同事用了mysql 自带的mysqldump 工具就不存在这个问题. (羞愧,不过我平时极少接触数据库) 这里记录下操作方式: 1. 进入bin目录,执行命令: mysqldump -hlocalhost -uroot -padmin local_db > a.sql 2. 这时发现在bin目录生成了

  • MySQL 数据库跨操作系统的最快迁移方法

    数据库文件很大,约有70G, 如果普通的迁移,需要在原始数据库导出数据,然后在新数据库导入数据 经仔细考虑,是否MySQL的数据库文件存储格式在不同的操作系统相同呢? 测试过程如下: 在64位SUN机器上安装64位版的MySQL 停止MySQL服务 复制Windows上的32位MySQL的数据文件(全部,除了system和日志等)到64位机器上, 修改相应的文件和目录权限, 文件为 chmod 660 目录为 chmod 700 然后重启MySQL服务,运行正常. 总结: 别以为这个看上去很简单

  • 如何把sqlserver数据迁移到mysql数据库及需要注意事项

    在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据迁移到MySQL.下面是小编日常整理的一种sqlserver数据库迁移的方法. 一.SQL Server中常用数据类型与MySQL不同的地方 二.将SQL Server数据迁移到MySQL需要注意的一些问题 1.唯一索引的不同,sql server的唯一索引的字段只能允许存在一个null值,而mysql,一直oracle中唯一索引对应的字段都允许存在多个n

  • 一句命令完成MySQL的数据迁移(轻量级数据)

    用管道符将mysqldump的输出流和mysql的输入流串接在一起,管道符真是一个伟大的发明. 复制代码 代码如下: mysqldump -uXXX -pYYY -h192.168.4.98 -P3306 DBNAME --skip-lock-tables | mysql -uroot -h127.0.0.1 DBNAME 首先要保证本地可以连接服务器上的3306端口,如果win2003系统相同直接复制数据库文件夹即可.

  • mysql数据迁移到Oracle的正确方法

    在mysql数据库里有一个表student,它的结构如下: 在Oracle数据库里有一个表from_mysql,它的结构如下: 现在要把数据从mysql的student转移到Oracle的from_mysql中去,这里笔者借助kettle的spoon工具,可以快速的实现这个功能. 首先,打开spoon,新建一个转换,命名为表输入到表输出.然后在核心对象中的输入那里找到表输入,拖到编辑界面中,再从输出那里找到输出拖到编辑界面中,连接表输入和表输出,如图所示: 右击表输入,选择编辑步骤,弹出如下窗口

  • Python中MySQL数据迁移到MongoDB脚本的方法

    MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB是一个文档数据库,在存储小文件方面存在天然优势.随着业务求的变化,需要将线上MySQL数据库中的行记录,导入到MongoDB中文档记录. 一.场景:线上MySQL数据库某表迁移到MongoDB,字段无变化. 二.Python

  • mysql中用于数据迁移存储过程分享

    复制代码 代码如下: DELIMITER $$ USE `servant_591up`$$ DROP PROCEDURE IF EXISTS `sp_move_data`$$ CREATE PROCEDURE `sp_move_data`() BEGIN DECLARE v_exit INT DEFAULT 0; DECLARE v_spid BIGINT; DECLARE v_id BIGINT; DECLARE i INT DEFAULT 0; DECLARE c_table INT; DE

  • 从MySQL到Redis的简单数据库迁移方法

    从mysql搬一个大表到redis中,你会发现在提取.转换或是载入一行数据时,速度慢的让你难以忍受.这里我就要告诉一个让你解脱的小技巧.使用"管道输出"的方式把mysql命令行产生的内容直接传递给redis-cli,以绕过"中间件"的方式使两者在进行数据操作时达到最佳速度. 一个约八百万行数据的mysql表,原本导入到redis中需要90分钟,使用这个方法后,只需要两分钟.不管你信不信,反正我是信了. Mysql到Redis的数据协议 redis-cli命令行工具有

  • 关于MySQL数据迁移--data目录直接替换注意事项的详解

    近日更换服务器,要做数据库迁移,将数据库内的数据从服务器A迁移到服务器B.由于数据量较大,直接做dump耗时太长,故而采用如下方式处理:首先,在服务器B上安装了与服务器A同版本的MySQL,停止MySQL服务,将安装后的data目录删除:然后,服务器A锁住全部表,从服务器A将整个data目录和数据文件直到拷贝到服务器B上,修改服务器B上MySQL的my.cnf文件中的datadir指向新的data目录.最后,启动服务器B上的MySQL服务.结果启动失败,报出 "无法启动MySQL服务"

随机推荐