备份的是建表、建库、插入等操作所执行的sql语句。适用于中小型数据库,效率相对较低。
本质:导出sql语句文件
优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句
缺点:速度较慢,导入时可能会出现格式不兼容的突发情况,无法做增量备份和累计增量备份。
一、备份 mysqldump
1.备份全部数据库:
mysqldump -u用户名 -p'密码' [-A | --all-databases] > splname ps:[ | ] 中括号内二选一
ps:远程备份 mysqldump -h 服务器 -u用户名 -p密码 数据库 > 备份文件名.sql
[root@mysql01 opt]# mysqldump -uroot -p1 -A > all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@mysql01 opt]# ll
总用量 872
-rw-r--r-- 1 root root 892412 10月 6 10:03 all.sql
2.备份部分数据库:
mysqldump -u用户名 -p'密码' [-B | --databases] database_name > sqlname ps:可以同时备份多个库
[root@mysql01 opt]# mysqldump -uroot -p1 -B company > company.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@mysql01 opt]# ll
总用量 4
-rw-r--r-- 1 root root 2294 10月 6 10:10 company.sql
3.备份表:
mysqldump -u用户名 -p'密码' database_name table1_name table2_name > sqlname ps:可以同时备份多个表
[root@mysql01 opt]# mysqldump -uroot -p1 company student > student.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@mysql01 opt]# ll
总用量 4
-rw-r--r-- 1 root root 2100 10月 6 10:19 student.sql
4.备份表的结构:
mysqldump -u用户名 -p'密码' -d database_name table_name> sqlname
[root@mysql01 opt]# mysqldump -uroot -p1 -d company student > student_jiegou_sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@mysql01 opt]# ll
总用量 4
-rw-r--r-- 1 root root 1851 10月 6 10:24 student_jiegou_sql
5.备份表数据:
a.首先进入数据库查询是否支持将数据备份到本地以及备份路径
mysql> show variables like "secure%";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_auth | ON |
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
2 rows in set (0.00 sec)
b.备份数据 -----在MySQL内操作
select * from database_name.table_name into outfile '/var/lib/mysql-files/sqlname';
mysql> select * from mysql.user into outfile '/var/lib/mysql-files/a.txt';
Query OK, 5 rows affected (0.00 sec)
ps: 指定导出 以@为间隔 以#为行尾
mysql> select * from mysql.user into outfile '/var/lib/mysql-files/a.txt' fields terminated by'@' lines terminated by '#';
c.前往指定路径查看
[root@mysql01 opt]# cd /var/lib/mysql-files/
[root@mysql01 mysql-files]# ll
总用量 4
-rw-rw-rw- 1 mysql mysql 881 10月 6 10:34 a.txt
二、数据恢复
1.恢复库以及表
方法一:命令行使用
mysql -u用户名 -p'密码' < sqlname
ps:恢复表时需要指定库 ,在<前加上库名。mysql -u用户名 -p'密码' database_name <sqlname
[root@mysql01 opt]# mysql -uroot -p1 < all.sql
方法二 :MySQL内使用 适合小文件
mysql> source /opt/sqlname (sql文件存放路径)
mysql> source /opt/student.sql;
2.恢复表结构
mysql -u用户名 -p‘密码’ -d database_name table_name <sqlname
ps:恢复表结构前需要先在数据库中创建一个库。如:mysql> create database s1;
[root@mysql-server ~]# mysqldump -uroot -p1 -D s1 < /otc/student_jiegou_sql
3.只恢复表中数据 mysql内操作
mysql> load data infile '/var/lib/mysql-files/a.txt' into table table_name;
mysql> load data infile '/var/lib/mysql-files/a.txt' into table user;