全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名
当前位置: 数据库   >  MySQL 的逻辑备份
admin · 更新于 2021-08-05

1. 什么是逻辑备份

简单的说,逻辑备份就是将数据库中的数据备份为文本文件,备份文件可以查看和编辑。针对中小型系统,逻辑备份要来的简单高效。

2. 常用的逻辑备份场景

MySQL 中,mysqldump 是常用的逻辑备份工具。以下是常用的备份场景:

  • 备份所有数据库
shell> mysqldump [options] --all-databases
代码块
  • 1

实际案例:备份所有数据库

[mysql@localhost ~]$ mysqldump -uroot -p --all-databases > /tmp/all_databases.sql
Enter password: 

[mysql@localhost ~]$ ls -lrt all_databases.sql
-rw-r--r-- 1 mysql mysql 136106866 Jul 23 17:02 all_databases.sql
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 备份一个或多个数据库
shell> mysqldump [options] --databases db_name ...
代码块
  • 1

实际案例:备份数据库 tempdb

[mysql@localhost ~]$ mysqldump -uroot -p --databases tempdb > /tmp/db_tempdb.sql
Enter password: 

[mysql@localhost ~]$ ls -lrt db_tempdb.sql 
-rw-r--r-- 1 mysql mysql 19602842 Jul 23 17:17 db_tempdb.sql
代码块
  • 1
  • 2
  • 3
  • 4
  • 5

实际案例:备份数据库 tempdb 和 test111

[mysql@localhost ~]$ mysqldump -uroot -p --databases tempdb test111 > /tmp/db_tempdb_test111.sql
Enter password: 

[mysql@localhost ~]$ ls -lrt db_tempdb_test111.sql 
-rw-r--r-- 1 mysql mysql 19604085 Jul 23 17:23 db_tempdb_test111.sql
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 备份一个或多个表
shell> mysqldump [options] db_name [tbl_name ...]
代码块
  • 1

实际案例:备份数据库tempdb的表customer

[mysql@localhost ~]$ mysqldump -uroot -p tempdb customer > /tmp/table_customer.sql
Enter password: 

[mysql@localhost ~]$ ls -lrt table_customer.sql 
-rw-r--r-- 1 mysql mysql 2512 Jul 23 17:35 table_customer.sql
代码块
  • 1
  • 2
  • 3
  • 4
  • 5

实际案例:备份数据库 tempdb 的表 customer 和 t1

[mysql@localhost ~]$ mysqldump -uroot -p tempdb customer t1 > /tmp/table_customer_t1.sql
Enter password: 

[mysql@localhost ~]$ ls -lrt table_customer_t1.sql 
-rw-r--r-- 1 mysql mysql 3141 Jul 23 17:37 table_customer_t1.sql
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 备份表结构-不包含数据

实际案例:备份数据库 tempdbd 的表结构:

[mysql@localhost ~]$ mysqldump -uroot -p --databases tempdb -d > /tmp/structure_tempdb.sql
Enter password: 

[mysql@localhost ~]$ ls -lrt structure_db_tempdb.sql 
-rw-r--r-- 1 mysql mysql 9987 Jul 23 17:40 structure_db_tempdb.sql
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

实际案例:备份数据库tempdb表customer的表结构

[mysql@localhost ~]$ mysqldump -uroot -p tempdb customer -d > /tmp/structure_table_customer.sql
Enter password: 

[mysql@localhost ~]$ ls -lrt structure_table_customer.sql 
-rw-r--r-- 1 mysql mysql 2230 Jul 23 17:48 structure_table_customer.sql
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3. 相关参数说明

mysqldump 的选项很多,可以通过 --help 查看帮助:

[mysql@localhost ~]$ mysqldump --help
代码块
  • 1
  • 2

以下为常用的参数(从 MySQL 官方文档摘录)

Option NameDescriptionIntroducedDeprecated
–all-databasesDump all tables in all databases
–databasesInterpret all name arguments as database names
–default-character-setSpecify default character set
–eventsDump events from dumped databases
–forceContinue even if an SQL error occurs during a table dump
–hostHost on which MySQL server is located
–ignore-tableDo not dump given table
–master-dataWrite the binary log file name and position to the output
–no-create-dbDo not write CREATE DATABASE statements
–no-create-infoDo not write CREATE TABLE statements that re-create each dumped table
–no-dataDo not dump table contents
–order-by-primaryDump each table’s rows sorted by its primary key, or by its first unique index
–passwordPassword to use when connecting to server
–portTCP/IP port number for connection
–quickRetrieve rows for a table from the server a row at a time
–routinesDump stored routines (procedures and functions) from dumped databases
–set-gtid-purgedWhether to add SET @@GLOBAL.GTID_PURGED to output
–single-transactionIssue a BEGIN SQL statement before dumping data from server
–socketUnix socket file or Windows named pipe to use
–tablesOverride --databases or -B option

4. 小结

本小节通过常用的逻辑备份案例,介绍了 MySQL 逻辑备份工具 mysqldump 的具体使用方法。逻辑备份适合中小型系统,大型系统请考虑物理备份。


为什么选择汉码未来