借助于 mysqldump 命令可以进行数据库的备份。
用法: mysqldump [OPTIONS] database [tables]
或:mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
或:mysqldump [OPTIONS] --all-databases [OPTIONS]
OPTIONS:
OPTION | 默认 | 描述 |
---|---|---|
-A, --all-databases | FALSE | 备份所有数据库 |
-B, --databases | FALSE | 备份指定数据库 |
-n, --no-create-db | FALSE | 不生成建库语句 |
-t, --no-create-info | FALSE | 不备份建表结果 |
-d, --no-data | FALSE | 不备份表数据 |
-c, --complete-insert | FALSE | INSERT 语句中加入列名 |
--no-autocommit | FALSE | 使用 autocommit/commit 语句包围表 |
--add-drop-database | FALSE | 创建数据库之前增加删除操作 DROP DATABASE |
--add-drop-table | TRUE | 创建表之前增加删除操作 DROP TABLE,使用 --skip-add-drop-table 禁用 |
--add-locks | TRUE | 执行 INSERT 语句时加锁,使用 --skip-add-locks 禁用 |
--default-character-set | FALSE | 指定字符集 |
-e, --extended-insert | TRUE | INSERT 语句中批量插入,使用 --skip-extended-insert 禁用 |
--ignore-table=name | FALSE | 忽略指定的表,必须加上数据库名,比如 --ignore-table=database.table |
-l, --lock-tables | TRUE | 用读锁锁定表,使用 --skip-lock-tables 禁用 |
-r, --result-file=name | FALSE | 输入备份内容到文件 |
--single-transaction | FALSE | 在事务中进行备份, |
1、备份所有数据库
mysqldump -uroot -p -A -r result.sql
2、备份指定数据库
mysqldump -uroot -p --databases db1 db2 -r result.sql
3、备份某个表的数据
mysqldump -uroot -p --databases db1 --tables table1 -r result.sql
注:table1 是在 db1 中的表
4、只备份建库语句和表结构
借助 -d 过滤掉表数据
mysqldump -uroot -p --databases db1 db2 -d -r result.sql
5、只导出表数据,防止列顺序不一致,在 INSERT 语句中加入列名
借助 -n - t 去掉建库语句和建表语句,使用 -c 在 INSERT 语句中加入列名
mysqldump -uroot -p --databases db1 db2 -n -t -c -r result.sql