迁移数据常用

1、导出文件 - mysqldump 命令 

‍mysqldump 是 Mysql 自带的逻辑备份工具。其备份原理是通过协议连接到 Mysql 数据库,将需要备份的数据查询出来转换成对应的 insert 语句。当需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。

常用命令:

mysqldump -uroot -p123456 --all-databases  >/tmp/all.sql
mysqldump -uroot -p123456 --databases  db  >/tmp/db.sql
mysqldump -uroot -p123456 --databases  db  --tables a >/tmp/a.sql
mysqldump -uroot -p123456 --databases db --tables a --where='id=1' >/tmp/a.sql
mysqldump -uroot -p123456 --no-data --databases db  >/tmp/db.sql

2、导入文件 - source 命令

source 命令可以将导出的 sql 文件导入进指定数据库。

操作步骤:

  • use 数据库;

  • soucre 已导出的 sql 文件。

迁移思路

1. 数据库A历史数据迁移到 hdfs(一种分布式文件系统)上进行归档;

2. 删除数据库A已归档的表,使用 drop 命令;

3. 数据库A上新建表,用于数据库B迁移;

4. 数据库B中除未完成单外都迁移至数据库A;

5. 脚本进行删除数据库B上已迁移数据。

阿丁开讲

1、参数介绍

在 Innodb 存储引擎中,innodb_file_per_table 参数是用来控制表数据的存储方式的。

当参数为 OFF 的时候,所有数据都存放于默认路径下名为 ibdata* 的共享表空间里,即将数据库所有的表数据及索引文件存放到一个文件中。在删除数据表的时候,ibdata* 文件不会自动收缩。

当参数为 ON 的时候,每一个表都将存储在一个以 .ibd 为后缀的文件中。这样每个表都有了自己独立的表空间,通过 drop table 命令就可以将表空间进行回收。

从 Mysql 5.6.6 版本开始,innodb_file_per_table 默认为 ON 状态。

2、参数设置

通过 show variables like '%per_table%' 命令,可以查看 innodb_file_per_table 参数的当前状态:

如果想修改参数的状态,可通过 SET GLOBAL 动态地修改为 ON 或 OFF,也可以在 中做永久性修改。需要注意的是,在 中修改后生效的话需要重启 mysqld 服务。

疑问:如果之前参数为 OFF 状态,设置为 ON 状态后,表空间如何分配?

答案是仅对后续操作生效。

什么意思呢?修改前的数据还维持原状,也就是说之前的数据继续存放于 ibdata* 文件中,修改后的使用独立表空间。

所以建议在开始就将该参数设置为 ON 状态。

第二天

阿丁二次开讲

在这之前要先介绍下 Innodb 存储数据所用的 B+ 树结构,画个图你理解下:

在图中,P 代表一页数据,R 代表一行数据。

假设我们要删掉 R2 这条记录,InnoDB 引擎只会将其标记为删除状态,并不会真正把这行数据所占的空间释放掉,也就是说这个坑位还留着。如果后续所插入的数据在 R1 与 R3 之间的话,这个空间是可以被使用上的。

假设我们恰好删除了 R1、R2、R3 这三条记录,也就是说 P1 这一页的数据都被删掉了,那么 P1 所在的空间都会被标记为可复用。如果插入的数据需要使用新页的话,P1 的坑位就可以被利用起来了。

那么你可能会问了,我插入的数据恰好巧妙的避开了这些位置呢。那我还能说啥,骚呗。这样会造成很多空间被浪费,如果删除大量的数据的话,被浪费的空间也会是巨大的。

optimize table 的本质是 ALTER TABLE xxx ENGINE = InnoDB;

在版本之前,重建表的过程是这样的:

然后用临时文件替换旧表,这样便实现了表的重建。

注意

1、控制迁移速度,防止主从延迟导致线上故障;

2、创建大表时,使用下面的建表语句可节省 50% 左右的空间:

ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8

3、使用 optimize table 压缩表时,需要留够一定的空间。

关于作者

作者:大家好,我是莱乌,BAT搬砖工一枚。从小公司进入大厂,一路走来收获良多,想将这些经验分享给有需要的人,因此创建了公众号「IT界农民工」。定时更新,希望能帮助到你。

diskgenius 数据迁移_活见鬼,明明删除了数据,空间却没减少! - *IT界农民工*相关推荐

  1. mysql 删除数据 降低_活见鬼,明明删除了数据,空间却没减少!

    原标题:活见鬼,明明删除了数据,空间却没减少! 作者 |莱乌 来源 |IT界农民工 迁移数据常用 1.导出文件 -mysqldump 命令 ‍mysqldump‍是 Mysql 自带的逻辑备份工具.其 ...

  2. iphone换机数据迁移_苹果手机换华为、小米怎么同步数据?来了!

    将「雷科技Lite」收藏为我的小程序,不再错过精彩内容 雷科技数码3C组编辑 | MoFirLee 苹果.安卓手机之间同步数据其实不算太难,难的是没有找对方法.当然,游戏数据无法互通,这里面的问题就复 ...

  3. mysql如何不停机迁移_如何实现真正的不停机数据迁移?

    各位周三好. 明天是大年三十了,西瓜哥也要过年了.今年是最后一天探讨存储技术.正愁不知道和大家分享啥,收到一个网友的投稿,简述如何实现不停机迁移数据的一个比较好的方法,决定选登出来,供大家参考. -- ...

  4. mysql 数据迁移_【AWS 功能】Mysql 数据库迁移至Amazon RDS方案

    今天,我们讲讲如何使用源MySQL数据库执行数据库迁移到MySQL数据库的目标Amazon RDS的方案,同时由于(源和目标数据库引擎是相同的)--模式结构.数据类型和数据库代码在源和目标数据库之间是 ...

  5. hdfs 数据迁移_基于JindoFS+OSS构建高效数据湖

    作者:孙大鹏,花名诚历,阿里巴巴计算平台事业部 EMR 技术专家,Apache Sentry PMC,Apache Commons Committer,目前从事开源大数据存储和优化方面的工作. 为什么 ...

  6. 一部分 数据 迁移_软件测试员12小时惊魂记:数据库迁移出大事故,如何测试?...

    信息时代,随着用户数量不断增加,业务量不断增长,企业原有数据库不足以有效支撑业务的发展,在此情况下,企业更多的是寻求一款更加稳定的数据库进行替代. 本文以Sybase数据库和Oracle数据库为例.O ...

  7. flyway数据迁移_使用Flyway在Java EE中进行数据库迁移

    flyway数据迁移 任何Java EE应用程序的数据库模式都会随着业务逻辑一起发展. 这使得数据库迁移对于任何Java EE应用程序都很重要. 您是否还在执行应用程序时手动执行它们? 它仍然是一个锁 ...

  8. 一部分 数据 迁移_从虚机到容器,知名架构师告诉你如何平滑进行业务迁移

    [小宅按]近期,短视频产品"秒拍"完成了一个"大动作"--将原来部署在虚拟机上的主体业务迁移到华为云,同时将公司的技术体系承载在下一代虚拟技术容器(Docker ...

  9. ecs服务器数据迁移_免费服务器迁移上云实践分享!一键迁云,自动同步

    导读:云服务器ECS(Elastic Computing Service)是每个阿里云用户上云的"第一步". 本次分享将为大家介绍免费的服务器迁移上云最佳实践方案和新功能特性,包括 ...

最新文章

  1. Java Swing Awt
  2. 技巧/诀窍:在ASP.NET中重写URL
  3. html设置excel打开新窗口,怎么在excel的大页面上设置第几页第几页的
  4. 日期和毫秒值 例子
  5. python安装与开发环境搭建_Python安装和开发环境搭建
  6. ISO 20088耐低温泄漏的测定_ISO20088-1/ISO20088-2/ISO20088-3
  7. postman构造post请求用于接口测试
  8. Windows下载执行命令大全
  9. 浏览器访问IPv6地址
  10. Linux 系统中如何恢复已删除的文件?
  11. 访问不了共享文件夹提示“网络错误“的解决方法
  12. Numpy 中某个矩阵的平方距离计算方法
  13. 社会网络分析法(Social Network Analysis)中矩阵二值化阈值的确定
  14. c语言other用法,other的用法总结
  15. Logstash:从grok到5.X版本的dissect
  16. 拉丁超立方抽样的Python实现
  17. nRF52832 定时器REPEATED模式,导致异常重启的问题排查全过程
  18. python 日期格式月份不加前导,Python datetime时间格式化去掉前导0
  19. mac 删除Provisioning Profiles(描述文件)
  20. 段永平抄底腾讯:高手不是最完美的,而是最淡定的

热门文章

  1. 打开浏览器不是主页_对于360浏览器的一些小小改善
  2. python arduino c_从Python向Arduino LCD发送一个字符串
  3. android搭建opencv开发环境,Android Studio搭建opencv开发环境
  4. linux下qq怎么截图,ubuntu 12.04使用QQ截图安装教程
  5. java 流式_Java开发笔记(七十二)Java8新增的流式处理
  6. android学习之-Style样式的定义
  7. VS中C++ 项目重命名
  8. EL与JSTL注意事项汇总
  9. Linux学习之FTP服务
  10. ProFTPD 初探