mysqldump备份
前言: mysqldump 是 MySQL 系统自带的逻辑备份工具,主要用于转储数据库。 是最常用的 MySQL数据库备份方法。
mysqldump 的各种使用方法:
# 备份全部数据库
mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases > /tmp/all_database.sql
# 要求记录 binlog 位点信息 可用于搭建从库
mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases --master-data=2 > /tmp/all_database.sql
# 备份指定数据库(单个)
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 > /tmp/db1.sql
# 备份指定数据库(多个)
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 db2 > /tmp/db1_db2.sql
# 备份单表
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 > /tmp/tb1.sql
# 备份部分表
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 tb2 tb3 > /tmp/tb.sql
# 导出某个表,数据以单行insert显示
mysqldump -uroot -pxxxxxx --single-transaction --skip-extended-insert db1 tb1 > /tmp/tb1.sql
# 导出单表的部分数据
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where=" create_time >= '2021-06-01 00:00:00' " > /tmp/tb1.sql
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where='id < 10' > /tmp/tb1.sql
# 排除某些表导出
mysqldump -uroot -pxxxxxx --single-transaction --databases db1 --ignore-table=db1.tb1 --ignore-table=db1.tb2 > /tmp/db1.sql
# 只导出结构
mysqldump -uroot -pxxxxxx db1 --no-data > /tmp/db1_jiegou.sql
# 只导出数据
mysqldump -uroot -pxxxxxx db1 --no-create-info > /tmp/db1_data.sql
# 只导出某个库的存储过程及自定义函数
mysqldump -uroot -pxxxxxx -d -t -R db1 > /tmp/db1_routine.sql
# 远程导出 即MySQL服务端不在本地
mysqldump -uroot -pxxxxxx -hxxx.xxx.xx -P3306 --single-transaction --databases db1 > /tmp/db1.sql
以下是从从 MySQL 官方文档整理的mysqldump 工具的参数。
参数名 | 缩写 | 含义 |
---|---|---|
–user | -u | MySQL用户名 |
–pasword | -p | (小写)MySQL密码 |
–host | -h | MySQL 的ip地址 |
–port | -P | (大写)MySQL 端口号 |
–databases | -B | 指定要备份的数据库 |
–all-databases | -A | 备份MySQL服务器上的所有数据库 |
–add-drop-databases | 每个创建库之前添加drop语句(默认不开启) | |
–add-drop-table | 每个创建表之前添加drop语句(默认开启) | |
–events | -E | 导出事件(默认不开启) |
–routines | -R | 导出存储过程和自定义函数(默认不开启) |
–triggers | 导出触发器(默认开启) | |
–extended-insert | -e | 使用具有多个VALUES列的INSERT 语法(默认开启) |
–ignore-table | 不导出指定表,指定忽略多个表时,需要重复多次 | |
–no-data | -d | 不导出任何数据,指导出数据库表结构 |
–no-create-info | -t | 只导出数据,而不添加CREATE TABLE 语句 |
–force | -f | 在导出过程中忽略出现的SQL错误(默认不开启) |
–tz-utc | 在导出顶部设置时区TIME_ZONE=‘00:00’(默认开启) | |
–where | -w | 只转储给定的where条件选择的纪录 |
–set-gtid-purged | 是否添加SET@@GLOBAL.GTID_PURGED 输出 | |
–single-transaction | 通过在一个事务中导出所有表而创建一个一致性的快照,适用于 innodb引擎 | |
–master-data | 该选项将当前服务器的binlog的位置和文件名追加到输出文件中。如果为1,则输出CHANGE MASTER 命令,如果为2,则输出CHANGE MASTER 命令前添加注释信息 |