在MySQL中,逻辑备份的最大优点是各种存储引擎都可以用同样的方法进行备份,使用MySQLDump可以将数据库中的数据备份为一个文本文件,该文本文件可以被查看和编辑,通过使用命令mysqldump --help查看mysqldump的各种命令参数及选项信息。
使用MySQLdump,可以:
1)备份指定数据库或此数据库中的某些表;
mysqldump [OPTIONS] database [tables]
2)备份指定的一个或多个数据库;
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
3)备份所有数据库;
mysqldump [OPTIONS] --all-databases [OPTIONS]
示例:
1、备份所有数据库;
[root@strong ~]# mysqldump -uroot -p --all-databases > all.sql
Enter password:
[root@strong ~]# ll all.sql
-rw-r--r--. 1 root root 788190 Mar 13 18:48 all.sql
[root@strong ~]#
--可以指定-v显示备份过程信息。
2、备份数据库test;
[root@strong ~]# mysqldump -uroot -p test > test.sql
Enter password:
[root@strong ~]# ll test.sql
-rw-r--r--. 1 root root 2123 Mar 13 18:50 test.sql
3、备份数据库test下的t_mm表;
[root@strong ~]# mysqldump -uroot -p test t_mm > t_mm.sql
Enter password:
[root@strong ~]# ll t_mm.sql
-rw-r--r--. 1 root root 2123 Mar 13 18:54 t_mm.sql
[root@strong ~]# more t_mm.sql
4、备份数据库test下的t_mm和t_emp表;
[root@strong ~]# mysqldump -uroot -p test t_mm t_emp > mm_emp.sql
Enter password:
[root@strong ~]# ll mm_emp.sql
-rw-r--r--. 1 root root 2857 Mar 13 18:57 mm_emp.sql
[root@strong ~]# more mm_emp.sql
5、备份数据库test下的所有表为逗号分隔的文本;
mysql> use test;
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t_emp |
| t_mm |
+----------------+
2 rows in set (0.01 sec)
[root@strong ~]# mysqldump -uroot -p test -T /usr/local/mysql/mysql-files/ --fields-terminated-by=','
Enter password:
[root@strong ~]# ll /usr/local/mysql/mysql-files/
total 16
-rw-r--r--. 1 root root 1437 Mar 13 20:13 t_emp.sql
-rw-rw-rw-. 1 mysql mysql 58 Mar 13 20:13 t_emp.txt
-rw-r--r--. 1 root root 1435 Mar 13 20:13 t_mm.sql
-rw-rw-rw-. 1 mysql mysql 171 Mar 13 20:13 t_mm.txt
[root@strong ~]# more /usr/local/mysql/mysql-files/t_emp.txt
1,张三,2018-03-13 18:53:44
3,李四,2018-03-13 18:53:44
[root@strong ~]# more /usr/local/mysql/mysql-files/t_emp.sql
注:该种导出模式需要设置参数secure_file_priv,否则会出以下错误:
mysqldump: Got error: 1290: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement when executing 'SELECT INTO OUTFILE',设置参数如下:
mysql> show variables like '%secure_file_priv%';
+------------------+-------------------------------------------------------------+
| Variable_name | Value |
+------------------+-------------------------------------------------------------+
| secure_file_priv | /usr/local/mysql-5.7.21-linux-glibc2.12-x86_64/mysql-files/ |
+------------------+-------------------------------------------------------------+
1 row in set (0.30 sec)