简述MySQL分片中快速数据迁移_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 了解更多!

时间: 2024-09-20 08:49:59

简述MySQL分片中快速数据迁移_Mysql的相关文章

如何在Java程序中访问mysql数据库中的数据并进行简单的操作_Mysql

在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据并进行简单的操作,具体详情请看下文. 创建一个javaProject,并输入如下java代码: package link; import java.sql.*; /** * 使用JDBC连接数据库MySQL的过程 * DataBase:fuck, table:person: * 使用myeclipse对mysql数据库进行增删改查的基本操作. */ public

保护MySQL数据库中重要数据的注意事项

本文介绍了保护MySQL数据库中重要数据受外部攻击的六个注意事项,以减少面临的风险. 与自动的数据库备份不同,对系统管理员来说,保护数据免受未授权用户的侵犯需要采取一定的行动.如果你用的是MySQL,就可以使用一些方便的功能来保护系统,来大大减少机密数据被未授权用户访问的风险. 企业最有价值的资产通常是其数据库中的客户或产品信息.因此,在这些企业中,数据库管理的一个重要部分就是保护这些数据免受外部攻击,及修复软/硬件故障. 在大多数情况下,软硬件故障通过数据备份机制来处理.多数数据库都自带有内置

hbase-如何将mysql数据库中的数据存到hadoop上

问题描述 如何将mysql数据库中的数据存到hadoop上 求助如何将mysql数据库中的数据存到hadoop上,又如何进行查询? 解决方案 http://www.2cto.com/database/201412/359232.html 解决方案二: http://www.iteye.com/news/27625 解决方案三: 可以使用Kettle Spoon对数据进行抽取和转移,是图形化界面,可以支持几乎所有的数据库,包括关系型数据库Oracle.MySQL和非关系型数据库HBase等,也支持

Android开发中怎样调用mysql数据库中的数据

问题描述 Android开发中怎样调用mysql数据库中的数据 Android开发中怎样调用mysql数据库中的数据,数据库可以是本地也可以是联网的. 解决方案 Android本地是不能直接调用MySQL的,因为很简单,你的Android手机上面不可能安装MySQL服务的.你只能借助于网络通信, 让手机和电脑通过网络连接起来,这样你想在Android端访问MySQL数据库时,就可以通过一定的方式发送一些网络消息请求, 让电脑端去查询数据库,再通过网络把数据返回给Android端.当然,最简单的网

mapreduce-MapReduce 查询mysql表中的数据,打印记录数,并转储回mysql表

问题描述 MapReduce 查询mysql表中的数据,打印记录数,并转储回mysql表 http://www.hadoop1234.com/?p=230 解决方案 package com.laoxiao.mr02; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.sql.PreparedStatement; import java.sql.ResultSet

sqlserver-关系型数据库(sql server, oracle, mysql)中的数据Load到HBasez中

问题描述 关系型数据库(sql server, oracle, mysql)中的数据Load到HBasez中 我现在的数据是在关系型数据库(如sql server, oracle, mysql)中,且主键为复合主键,我现在想把这些数据导入到HBase中该怎么做啊?各位大神帮帮忙啊 解决方案 用Kettle抽数工具,很方便支持各种数据库之间的数据转换 解决方案二: 试试这个 数据抽取工具V3.0 http://download.csdn.net/detail/haonengbao/766908

将数据插入到MySQL表中的详细教程_Mysql

将数据插入到MySQL表,需要使用SQL INSERT INTO命令.可以将数据插入到MySQL表使用mysql>提示符下或使用任何脚本,如PHP.语法: 下面是通用的SQL语法INSERT INTO命令来插入数据到MySQL表: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 要插入的字符串数据类型,所有的值需要双或单引号,例如: - "value"

从MySQL到Redis 提升数据迁移的效率

场景是从MySQL中将数据导入到Redis的Hash结构中.当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中.这样可能没什么错,但是速度会非常慢.而如果能够使MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可能就省事多了. 根据测试800w的数据迁移,时间从90分钟缩短到2分钟. 具体案例如下: MySQL数据表结构: CREATE TABLE events_all_time ( id int(11) unsigned NOT NULL AUTO_IN

云存储中的数据迁移分析

如今, 由于数据成本的不断飙升.技术管理人员的水平参差不齐等原因,云存储已经成为了各个机构数据存储的重要举措和发展方向.云存储作为云中的一项重要服务, 它通过集群应用.网格技术或分布式文件系统等将各种存储设备通过应用软件集合起来, 对外提供数据存储和业务访问.对于数据存储, 当我们从一个物理环境和单个阵列过渡到完全虚拟化的.高度动态的的存储环境时,需要面对很多问题.而数据迁移作为采用云存储方案中最为基础.关键的步骤.它将历史数据进行清洗,转换, 并装载到新系统,它是保证数据系统平滑升级和更新的重