mysqldump 使用详解
mysqldump是一个功能强大的命令行工具,用于导出MySQL数据库的结构和数据至一个转储文件,该转储文件包含了创建表和/或加载表数据的SQL语句,这些语句可以用来创建数据库的一个副本,或将数据转移到另一个SQL服务器。
命令格式:
mysqldump [选项] 数据库名 [表名] > 脚本名
或
mysqldump [选项] databases [选项] DB1 [DB2 DB3...]
或
mysqldump [选项] alldatabases [选项] > 脚本名
常用选项说明:
参数名 | 缩写 | 含义 | |
host | h | 服务器IP地址 | |
port | P | 服务器端口号 | |
user | u | MySQL用户名 | |
password | p | MySQL密码 | |
databases | 指定要备份的数据库 | ||
alldatabases | 备份mysql服务器上的所有数据库 | ||
compact | 压缩模式,产生更少的输出 | ||
comments | 添加注释信息 | ||
completeinsert | 输出完成的插入语句 | ||
locktables | 备份前,锁定所有数据库表 | ||
nocreatedb/nocreateinfo | 禁止生成创建数据库语句 | ||
force | 当出现错误时仍然继续备份操作 | ||
defaultcharacterset | 指定默认字符集 | ||
addlocks | 备份数据库表时锁定数据库表 |
1、备份所有数据库:
`````bash
mysqldump uroot p alldatabases > /backup/mysqldump/all.db
```
2、备份指定数据库:
````bash
mysqldump uroot p test > /backup/mysqldump/test.db
```
3、备份指定数据库指定表(多个表以空格间隔):
````bash
mysqldump uroot p mysql db event > /backup/mysqldump/2table.db
```
4、备份指定数据库排除某些表:
````bash
mysqldump uroot p test ignoretable=test.t1 ignoretable=test.t2 > /backup/mysqldump/test2.db
```
在使用mysqldump备份的数据进行还原之前,需要确保目标数据库已经创建,并且与备份文件中的数据库名称相同。
1、系统命令行:
````bash
mysql uroot p create db_name && mysql uroot p db_name < /backup/mysqldump/db_name.db
```
2、MySQL命令行:
````sql
use db_name;
source /path/to/backup/script.sql;
```
1、Q: 使用mysqldump备份的数据如何还原到不同名称的数据库?
A: 在还原之前,需要在MySQL中手动创建新名称的数据库,并使用sed
命令将备份文件中的数据库名替换为新的数据库名,然后再执行还原操作。
```bash
mysql uroot p new_db_name < <(sed 's/old_db_name/new_db_name/g' /backup/mysqldump/old_db_name.db)
```
2、Q: mysqldump是否可以用于增量备份?
A: 是的,mysqldump可以通过添加masterdata
选项进行增量备份,此选项会在备份文件中记录二进制日志的位置,使得可以执行基于时间点的恢复。
```bash
mysqldump uroot p alldatabases masterdata=2 > /backup/mysqldump/incremental.db
```