MySQL 常见数据拆分办法

 更新时间:2016年07月16日 22:43:35   投稿:mdxy-dxy  
在生产环境中,由于业务的增长或者业务的拆分,DBA经常需要拆库操作。那么我们常见的拆库手段有哪些呢

在生产环境中,由于业务的增长或者业务的拆分,DBA经常需要拆库操作。那么我们常见的拆库手段有哪些呢?

我这里提供几种解决办法:

1. 使用mysqldump 把表逻辑倒出,然后再source 到其它地方
2. 使用xtrabackup 把表、或者库逻辑备份出,然后再recovery出一个实例
3. 使用MySQL自带的表空间转移(Transport)[这个需要MySQL 5.6.6 以上版本支持]

I: 先来看一下MySQL 的 Transport 表空间的特性吧

比如我们要把  tab_test1 从 db_A 移动到 db_B ,那么我们需要做这么一系列动作:

Step 1: use db_A; show create table tab_test1;(首先,拿到需要的表结构)
Step 2: use db_B; create table tab_test1; alter tale tab_test1 discard tablespace;(discard tablespace 就是把ibd文件删掉,只留下.frm文件)(其次,到目标库删除掉idb文件)
Step 4: use db_A; flush table test122 for export;(把相关表的内存数据写入到数据库)
Step 5: 拷贝 tab_test1.ibd 文件到 db_B/   目录下;(操作系统层执行拷贝ibd文件操作)
Step 6: use db_A; unlock tables; (源库上解锁表)
Step 7: use db_B; alter table tab_test1 import tablespace;(目标库执行表空间导入)

执行完上边几个步骤,我们就完成了 在库之间迁移 某些个表的操作了。


II: 再来看一下 xtrabackup 导出部分表,以达到迁移目的

 Step 1: 我们需要使用xtrabackup 备份部分表

nohup perl /home/ddb/tmp/xtrabackup/bin/innobackupex-1.5.1 --ibbackup=/home/tmp/xtrabackup/bin/xtrabackup_55 --user=root --password=123 --defaults-file=/home/my.cnf  --slave-info  --tables-file=/mnt/back_tables.txt /mnt/backup_1 
 
Step 2:  应用日志,进行恢复操作

nohup perl /home/tmp/percona-xtrabackup-2.1.9-Linux-x86_64/bin/innobackupex-1.5.1 --ibbackup=/home/tmp/percona-xtrabackup-2.1.9-Linux-x86_64/bin/xtrabackup_55 --export --apply-log --defaults-file=/home/node-1-1/backup-my.cnf /home/node-1-1/ > /tmp/r.log 2>&1 &
 
Step 3: 重新起实例,配置复制关系,只复制部分表

    my.cnf 文件配置: Replicate_Wild_Do_Table/Replicate_Wild_Ignore_Table
 
执行完上边几个步骤,我们就完成了表的迁移操作,并且新起了个实例,达到了分库的目的。
 

III:最后我们就看一下 mysqldump 的姿势吧

    额, 这个就不多啰嗦了吧, mysqldump 做的事情就是 一些逻辑的导出, 倒出来的数据我们是可以用人肉可见的。    这个需要注意的一点就是  --single-transcation 选项
 
关于以上几种办法,我们在实际工作中需要 考虑 服务器的资源、内存容量等, 需要结合实际情况来使用 合适的办法进行拆库操作。

相关文章

  • Mysql的慢SQL优化思路和规范详解

    Mysql的慢SQL优化思路和规范详解

    这篇文章主要介绍了Mysql的慢SQL优化思路和规范详解,官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度,需要的朋友可以参考下
    2023-05-05
  • Mysql关于数据库是否应该使用外键约束详解说明

    Mysql关于数据库是否应该使用外键约束详解说明

    MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表,外键所在的表就是从表。外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性
    2021-10-10
  • MySQL优化总结-查询总条数

    MySQL优化总结-查询总条数

    这篇文章主要介绍了MySQL优化总结-查询总条数的相关内容,文中进行简单的测试对比,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • 实现MySQL回滚的Python脚本的编写教程

    实现MySQL回滚的Python脚本的编写教程

    这篇文章主要介绍了实现MySQL回滚的Python脚本的编写教程,文中的回滚针对的是DELETE语句的数据库误操作,需要的朋友可以参考下
    2015-11-11
  • 关于SQL Update的四种常见写法

    关于SQL Update的四种常见写法

    这篇文章主要介绍了关于SQL Update的四种常见写法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • MySQL InnoDB 二级索引的排序示例详解

    MySQL InnoDB 二级索引的排序示例详解

    这篇文章主要给大家介绍了关于MySQL InnoDB 二级索引的排序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Mysql错误Cannot find or open table x/x from the internal问题解决方法

    Mysql错误Cannot find or open table x/x from the internal问题解决方法

    这篇文章主要介绍了Mysql错误Cannot find or open table x/x from the internal问题解决方法,需要的朋友可以参考下
    2014-06-06
  • MySQL 如何连接对应的客户端进程

    MySQL 如何连接对应的客户端进程

    这篇文章主要介绍了MySQL 如何连接对应的客户端进程,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-11-11
  • 详解Centos7 修改mysql指定用户的密码

    详解Centos7 修改mysql指定用户的密码

    本篇文章主要介绍了Centos7 修改mysql指定用户的密码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。
    2016-12-12
  • mysql8.0.2离线安装配置方法图文教程

    mysql8.0.2离线安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql8.0.2离线安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05

最新评论