目录
1.mysqldump简介
2.mysqldump备份数据
2.1 备份所有数据库
2.2 备份一个/多个数据库
2.3 备份指定库中的指定表
3.mysqldump恢复数据
3.1 恢复数据库
3.2 恢复数据表
1.mysqldump简介
mysqldump命令可以将数据库中指定或所有的库、表导出为SQL脚本。表的结构和表中的数据将存储在生成的SQL脚本中。
mysqldump备份恢复原理:通过先查出需要备份的库及表的结构,在SQL脚本中生成CREATE语句。然后将表中的所有记录转换成INSERT语句并写入SQL脚本中。这些CREATE语句和INSERT语句都是还原时使用的:还原数据时可使用其中的CREATE语句来创建表,使用INSERT语句还原数据。
环境准备:如下图所示,共准备了database_test1和database_test2两个数据库,每个数据库中都有两个表table_test1和table_test2(未演示database_test2,同database_test1),每个表中各有一条数据。
2.mysqldump备份数据
备份的形式可以分为以下4种:
- 备份所有数据库(包含库中所有表及数据)
- 备份一个/多个数据库(包含库中所有表及数据)
- 备份指定库中的指定表(指定表及其数据)
下面将分别介绍如何实现这3种形式的数据备份。
2.1 备份所有数据库
语法:mysqldump -u[用户名] -p[密码] --all-databases > /备份路径/备份文件名.sql
#备份全部数据库
mysqldump -uroot -p123456 --all-databases > backup_all_databases.sql
mysqldump
-uroot -p123456 登录MySQL的用户名/密码
--all-databases >
backup_all_databases.sql 备份文件的名称,可加保存路径
2.2 备份一个/多个数据库
语法:mysqldump -u[用户名] -p[密码] --databases DB1 [DB2 DB3...] > /备份路径/备份文件名.sql
#备份一个数据库
mysqldump -uroot -p123456 --databases database_test1 > backup_database_test1.sql
#备份多个数据库
mysqldump -uroot -p123456 --databases database_test1 database_test2 > backup_database_test1_test2.sql
mysqldump
-uroot -p123456 登录MySQL的用户名/密码
--databases
database_test1 database_test2 要备份的数据库,多个以空格间隔
>
backup_*.sql 备份文件的名称,可加保存路径
2.3 备份指定库中的指定表
语法:mysqldump -u[用户名] -p[密码] [database] [table1] [table2] > /备份路径/备份文件名.sql
#备份库中的部分表
mysqldump -uroot -p123456 database_test1 table_test1 table_test2 > backup_tables.sql
mysqldump
-uroot -p123456 登录MySQL的用户名/密码
database_test1 要备份表所在的库名
table_test1 > 要备份的表名,可以有多个,以空格分割
backup_tables.sql 备份文件的名称,可加保存路径
查看备份文件中的内容:
#查看其中一个备份文件
cat backup_tables.sql | grep -v "^--" |grep -v "^/" |grep -v "^$"
cat
backup_database_test1.sql 要查看的文件
| grep -v "^--" |grep -v "^/" |grep -v "^$" 过滤不显示的信息(grep为搜索,-v表示忽略)
3.mysqldump恢复数据
环境准备:登录mysql数据库后删除database_test1和 database_test2
#登录mysql后删除database
drop database database_test1;
drop database database_test2;
3.1 恢复数据库
备份所有数据库和备份制定库的恢复逻辑相同
语法:mysql -u[用户名] -p[密码] < /备份文件路径/备份文件名.sql
#还原数据库
mysql -uroot -p123456 < backup_database_test1_test2.sql
环境准备:登录mysql数据库后删除database_test1库中的table_test1和table_test2(只删除一个或删除任意数据都可以)
#进入database_test1库
use database_test1;
#删除表
drop table table_test1;
drop table table_test2;
3.2 恢复数据表
语法:mysqldump -u[用户名] -p[密码] [database] < /备份文件路径/备份文件名.sql
恢复表的前提是表所在的库必须存在,且可任意指定库进行恢复操作
mysql -u root -p123456 database_test1 < backup_tables.sql
mysql
-uroot -p123456 数据库用户名/密码
database_test1 要恢复的数据库
<
backup_tables.sql 制定的数据库备份文件