转载自:​​https://www.cnblogs.com/opsprobe/p/11616562.html​

(1)备份所有的数据库

mysqldump -u username -ppassword --all-databases > bak.sql

(2)备份指定的数据库db1、db2和db3

mysqldump -u username -ppassword --databases db1 db2 db3 > bak.sql

(3)备份db数据库,当仅备份一个数据库时,--databases可以省略

mysqldump --u username -ppassword db4 > bak.sql
mysqldump -u username -ppassword --databases db4 > bak.sql

两者之间的差别在于不使用 --databases 选项,则备份输出信息中不会包含CREATE DATABASE或USE语句。不使用 --databases 选项备份的数据文件,在后期进行数据还原操作时,如果该数据库不存在,必须先创建该数据库。

(4)备份db数据库指定的表tb_name1、tb_name2和tb_name3

mysqldump -u username -ppassword -t db --tables tb_name1 tb_name2 tb_name3 > bak.sql

注意:mysqldump默认会将多条插入语句导出成一条insert语句格式,不方便查看,如:

insert into t values(1),(2),(3);

如果想导出多条insert语句,如:

insert into t values(1);
insert into t values(2);
insert into t values(3);

加上参数 --skip-extended-insert 即可。

mysqldump -u username -ppassword --skip-extended-insert --databases db_name --tables tb_name > tb_name.sql

 

使用mysql命令读取备份文件,实现数据还原功能:

mysql -u username -ppassword < bak.sql
mysql -u username -ppassword db4 < bak.sq1

 

案例:下面将 testDB 数据库中的内容导出成一个文件,并保存到 /home/目录下

[root@192 home]# mysqldump -u username -ppassword testDB > /home/bak.sql

然后进入MySQL数据库,彻底删除 testDB 数据库,然后重新创建 testDB 数据库


mysql> select * from testDB.mybook;
+--------+-------+-------+
| name | price | pages |
+--------+-------+-------+
| Linux2 | 40 | 200 |
| Linux4 | 60 | 400 |
+--------+-------+-------+
2 rows in set (0.00 sec)

mysql> drop database testDB;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

mysql> exit


创建数据库

mysql> create database testDB;
Query OK, 1 row affected (0.00 sec)

mysql> exit
Bye

将备份的数据导入到刚新建的 testDB 数据库中

[root@192 home]# mysql -u username -ppassword testDB < /home/bak.sql

 查看数据是否恢复成功

[root@192 home]# mysql -u root -p
Enter password:

mysql> select * from testDB.mybook;
+--------+-------+-------+
| name | price | pages |
+--------+-------+-------+
| Linux2 | 40 | 200 |
| Linux4 | 60 | 400 |
+--------+-------+-------+
2 rows in set (0.00 sec)