mysqldump的备份和恢复

1.mysqldump的简介

mysqldump工具是mysql数据库自带的、最基础的一款备份工具。它的备份过程首先是从buffer中找到需要备份的数据进行备份,如果buffer中没有,就去磁盘中数据文件查找并缓存到buffer里再进行备份。最后形成一个可编辑的备份文件。

2.mysqldump的参数简介

首先可以通过mysqldump -help  或者mysqldump --help命令查看该命令的使用说明。下面主要介绍几个生产过程中经常用得到的参数。

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

--all-databases (-A)
备份所有的数据库。

--master-data
该参数有1和2两个值,如果是1,就会在备份出来的文件中添加一个change master的语句(后期配置搭建主从架构);如果是2,就会在备份出来的文件中添加一个change master的语句,并且在语句前面添加注释符号(后期配置搭建主从架构)。

--dump-slave
该参数用于在从数据库备份数据,在线搭建新的从库时使用,该参数也有1和2两个值。值是1,是在备份的文件中添加一个change master的语句;值是2时,则会在change master命令前加注释信息。

--no-create-info (-t)
只备份表数据,不备份表结构

--no-data (-d)
只备份表结构,不备份表数据

--complete-insert (-c)
使用完整的insert语句会包含表中的列信息,这么做可以提高插入效率。

--databases (-B)
备份多个数据库,比如,mysqldump -uroot -p123456 --databases db1 db2

--default-character-set
字符集,mysql默认的字符集是utf8

--quick (-q)
相当于加sql_no_query,意味着并不会读取缓存中的数据。

--where=name (-w)
按条件备份数据

3.mysqldump备份数据案例

案例1:备份全库,命令如下

首先先在/usr/local/下面创建一个文件夹backup
mkdir backup

其次执行下面的命令
mysqldump --single-transaction  -uroot -p -A > all_database_20181204.sql

 案例2:恢复全库,命令如下:

mysql -uroot -p12345678 < /usr/local/backup/all_database_20181204.sql

案例3:备份单个库的过程,命令如下,在这里我们备份mysql数据库

mysqldump --single-transaction -uroot -p mysql>/usr/local/backup/mysql_database_20181204.sql

案例4:恢复单库,命令如下

mysql -uroot -p12345678 mysql < /usr/local/backup/mysql_database_20181204.sql 

 如果mysql库存在,则直接恢复,如果已经删除drop掉,则需要在恢复前,先去数据库创建一个mysql库;命令如下:

create database mysql;

案例5:备份mysql数据库中的user表,命令如下:

mysqldump --single-transaction -uroot -p mysql user > /usr/local/backup/mysql_user_20181204.sql

案例6:恢复刚刚备份的表,命令如下:

mysql -uroot -p12345678 mysql < /usr/local/backup/mysql_user_20181204.sql

从上述命令可以看到,在恢复表的时候不需要写表的名字,只需要写上库的名字。

案例7:备份mysql库下表user的表结构,命令如下

mysqldump --single-transaction -uroot -p  mysql user  --no-data  > /usr/local/backup/mysql_user_nodata_20181204.sql

 案例8:备份mysql数据库下表user的表数据信息,命令如下

mysqldump --single-transaction -uroot -p  mysql user  --no-create-info  > /usr/local/backup/mysql_user_nodata_20181204.sql

案例9:按条件进行备份,只备份表user中user为root的数据行,命令如下:

mysqldump --single-transaction -uroot -p mysql user --where="user='root'" > /usr/local/backup/mysql_user_root_20181204.sql

 

 

 注意的是where后面一定加双引号,否则不会被识别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#慧#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值