前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【MySQL】删库别着急跑路(二)--mysqldump的使用

【MySQL】删库别着急跑路(二)--mysqldump的使用

作者头像
MySQL数据库技术栈
发布2020-08-05 17:06:30
3550
发布2020-08-05 17:06:30
举报

上篇文章我们一起学习了Xtrabackup的备份原理和使用方法,今天一起聊下mysqldump的使用。mysqldump是MySQL数据库自带的一个备份命令,它支持数据库全备也可以指定库进行备份,它备份的文件以SQL语句的形式存储。它在备份时会先从buffer中寻找需要备份的数据,如果buffer中没有就要去磁盘查找并调回buffer里面在进行备份。

1. mysqldump参数

+

下面我们介绍几个mysqldump的核心参数,

1. --single-transaction:用于保证innodb备份数据时的一致性,配合RR隔离级别一起使用,当发起一个事务时,会读取当前的数据快照,知道备份结束,都不会读取到本事务开始之后提交的数据。

2. --all-databases(-A):备份所有数据库。

3. --master-data:该参数为1时,表示备份出来的文件中添加一个CHANGE MASTER语句,该值为2时,表示会在CHANGE MASTER命令前端增加注释信息。

4. --database(-B):备份多个数据库。

5. --no-create-info(-t):备份过程中,只备份数据,不备份表结构。

6. --no-data(-d):备份过程中,只备份表结构,不备份表数据。

7. --dump-slave:该参数用于在从库端备份,在线搭建新的从库时使用。该参数也有两个值1和2,该参数为1时,表示备份出来的文件中添加一个CHANGE MASTER语句,该值为2时,表示会在CHANGE MASTER命令前端增加注释信息。

8. --add-drop-database:在CREATE DATABASE语句前添加DROP DATABASE语句。

9. --add-drop-table:在CREATE TABLE语句前添加DROP TABLE。

10. --complete-insert(-c):使用包括列名的完整的INNSERT语句。

11. --flush-log(-F):开始转储前刷新MySQL的日志。该选项要求RELOAD权限。

12. --default-character-set:字符集选项,MySQL目前默认的字符集是UTF-8(MySQL8.0默认 utf8mb4),要与备份出来的表的字符集保持一致。

13. --quick(-q):不缓冲查询,直接输出到stdout。

14. --where=name(-w):按条件备份想要的数据。

2. mysqldump备份演示

+

(1) 备份所有数据库:

代码语言:javascript
复制
shell> mysqldump -uuser_name -p --single-transaction --all-databases > all.sql

(2) 备份数据库 test:

代码语言:javascript
复制
shell> mysqldump -uuser_name -p --single-transaction test > test.sql

(3) 备份数据库 test 下的表 emp:

代码语言:javascript
复制
shell>mysqldump -uuser_name -p --single-transaction test emp > emp.sql

(4) 备份存储过程

代码语言:javascript
复制
shell>mysqldump -uuser_name -p -R -d -t database_name>triggers.sql

(5) 只导出数据库结构

代码语言:javascript
复制
shell>mysqldump -uuser_name -p -d  database_name > outfile.sql

(6) 备份后压缩

代码语言:javascript
复制
shell> mysqldump -uuser_name -p --single-transaction --all-databases|gzip >all.gz

(7) 备份test数据库t表中id>3的记录

代码语言:javascript
复制
shell> mysqldump -uuser_name -p --single-transaction test t –where=”id>3” > test.sql

3. 数据恢复

+

mysqldump工具备份的数据可以通过以下方式恢复。

1. 使用mysql命令还原

代码语言:javascript
复制
mysql –uuser_name –p dbname <outfile.sql

其中dbname是数据库名,outfile.sql是我们用mysqldump命令备份出来的文件。

2. 通过source命令还原

首先要登录到mysql服务器,选择要恢复的数据库,然后执行source命令。

代码语言:javascript
复制
Mysql>use dbname
Mysql>source outfile.sql

4. 小结

+

mysqldump速度较慢,针对数据不是太大的库或者表可以选择采用mysqldump的方式备份,如果数据量比较大建议采用Xtrabackup等物理备份方式。mysqldump备份时会从磁盘读取数据到buffer中,占用内存及磁盘I/O,不建议日间业务高峰期进行此操作。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL数据库技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档