8.3 使用mysqldump工具(小程序)进行数据备份



mysqldump工具,是最流行的MySQL数据库的备份工具之一。

开发、运维DBA,都会用过。

如果开发,想要跟DBA运维要数据,DBA在50%甚至以上,都会用它。

一、mysqldump工具(小程序)

1.1 OUTFILE命令的改进

  • 如果想备份整个数据库,使用OUTFILE命令就必须每一张表,就select一次。
  • 比如,InnoDB支持事务,或支持MVCC。
  • 输出的只是孤零零的数据,但不能还原。------------------------------ 最大的痛点

dump:

倾倒

1.2 mysqldump特点

  • MySQL server自带,那就好说了,还不用安装
  • 平衡了还原和阅读,是分别针对OUTFILE命令、后续要讲的xtrabackup来说的

1.3 mysqldump原理

本质:就是往MySQL中发SQL指令,查询到数据并导出到系统中的一个文件中。

  • 即对select语句的结果不进行缓存,因为白白占用了server层的空间,同时,又不是热指令,使用频率很低

二、mysqldump的使用方法

mysqldump本身就是个程序,不是进入MySQL客户端才去操作的。

2.1 理论:保存为sql语句

  • --single-transaction,即使用Repeatable Read可重复读的隔离级别,可以确保我们从备份第一张表,到最后一张表,备份的内容都是同一时刻的。用MVCC实现。
  • 进入MySQL的客户端,直接执行一下这sql文件即可还原

2.2 演示

1.

使用新建的d1这个库:

里面有Z这个数据表:

查询一下该表:就三行数据

2.

退出数据库,进入Linux系统中:

查看mysqldump的使用说明:

3.

  • 因为mysqldump本身就是一个程序,跟MySQL平级的,所以要通过用户名、密码,来登录

备份文件如下:

4.

用cat命令,打开上述备份文件:

  • 自动写了一个建表语句;
  • 备份的时候不用加锁,但是还原的时候要加锁,保证数据一致性。插入数据的同时,还有自动的加锁、释放锁;
  • 如果想还原:进入MySQL客户端,用source命令,执行下

其实,做技术也好,还是做用户体验也好:

其实技术早就已经实现了,但是别人做的没有这么好。你稍微改进下,你就能称为最流行的那个。

2.3 注意事项

2.4 不足

  • 因为原理:是向MySQL数据库,发送SQL命令。然后,MySQL对其进行解析、查询硬盘上的数据页(B+树)、组织好数据返回给你、处理成Insert语句写到文本文件中。流程很长,一定不会太快,且会影响其他的select性能。
  • 因为只要是通过SQL语句进行备份、还原,那么就一定会走MySQL。

三、小结

  • 热备:运行过程中就能实现备份,不影响正常业务。如果使用InnoDB存储引擎,可以可重复读的事务的隔离级别,用MVCC功能,把这一时刻的数据给dump下来
  • SQL:不只是干干的数据,能人类阅读,还能还原使用
  • 因为原理决定了,必须走MySQL 的解析、查询、执行

声明:Jerry's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 8.3 使用mysqldump工具(小程序)进行数据备份


Follow excellence, and success will chase you.