mysqldump是MySQL自带逻辑备份工具,无需额外安装,支持导出SQL文本备份,兼容MySQL5.7、8.0,适用于日常数据备份、迁移、恢复。下面按实际运维场景分步讲解,命令可直接复制使用。

一、基础参数说明

先记线上必备通用参数,InnoDB业务库备份必须带上:

  • -u:指定数据库用户名
  • -p:交互式输入密码(推荐,避免明文泄露)
  • -h:远程数据库IP,本地可省略
  • -P:自定义端口,如-P3307
  • --single-transaction:InnoDB热备,不锁业务表
  • --routines:导出存储过程、自定义函数
  • --triggers:导出触发器
  • --events:导出定时事件
  • --databases:自动生成建库语句,恢复不用手动建库
  • --all-databases:导出实例所有数据库
  • | gzip:备份同时压缩,节省磁盘

二、单数据库备份(最常用)

1、普通无压缩备份

语法:

mysqldump -u账号 -p --single-transaction --routines --triggers --events --databases 库名 > 备份文件名.sql

示例:备份test库

mysqldump -uroot -p --single-transaction --routines --triggers --events --databases test > test_20260712.sql

执行后输入数据库密码,当前目录生成完整备份文件。

2、备份直接压缩(推荐线上使用)

mysqldump -uroot -p --single-transaction --routines --triggers --events --databases test | gzip > test_20260712.sql.gz

3、只备份库内指定几张表

去掉--databases,库名后跟表名:

mysqldump -uroot -p --single-transaction test user order > test_user_order.sql

4、远程服务器备份

mysqldump -uroot -p -h192.168.1.200 -P3306 --single-transaction --databases test > remote_test.sql

三、多个数据库一次性备份

使用--databases,多个库名空格隔开,恢复无需手动建库:

# 同时备份test、log、shop三个库
mysqldump -uroot -p --single-transaction --routines --triggers --events --databases test log shop > multi_db.sql

压缩版本:

mysqldump -uroot -p --single-transaction --routines --triggers --events --databases test log shop | gzip > multi_db.sql.gz

四、整实例全库备份(包含系统库mysql)

适用于服务器整机迁移、重装系统场景:

# 未压缩
mysqldump -uroot -p --single-transaction --routines --triggers --events --all-databases > all_mysql.sql

# 压缩备份
mysqldump -uroot -p --single-transaction --routines --triggers --events --all-databases | gzip > all_mysql.sql.gz

注意:全库备份会导出账号权限表,恢复会覆盖本地MySQL账号,跨服务器迁移谨慎使用。

五、备份文件恢复方法

1、普通sql文件恢复

mysql -uroot -p < test_20260712.sql

或登录MySQL内部执行:

mysql -uroot -p
source /data/backup/test_20260712.sql;

2、压缩包直接恢复,不用解压

gzip -d -c test_20260712.sql.gz | mysql -uroot -p

六、自动定时备份脚本(Linux)

新建脚本mysql_back.sh,实现每日备份、自动清理7天旧备份

#!/bin/bash
user="root"
back_dir="/data/mysql_back"
date=$(date +%Y%m%d)
mkdir -p $back_dir

# 单库定时备份
mysqldump -u$user -p数据库密码 --single-transaction --routines --triggers --events --databases test | gzip > $back_dir/test_$date.sql.gz

# 删除7天前备份
find $back_dir -name "*.sql.gz" -mtime +7 -delete

添加执行权限并配置定时任务:

chmod +x mysql_back.sh
crontab -e
# 每天凌晨2点执行备份
0 2 * * * /bin/bash /data/mysql_back.sh

安全提醒:公网服务器不要在脚本写明文密码,手动交互式执行。

七、常见注意事项

  1. MyISAM引擎不支持--single-transaction,备份会锁表,尽量业务低峰操作;
  2. MySQL8.0若报错认证插件,执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
  3. 缺少--routines --triggers --events会丢失存储过程、触发器;
  4. 不加--databases参数导出的备份,恢复前必须手动创建对应数据库;
  5. 大数据量备份务必开启gzip压缩,减少磁盘占用。# 如何使用mysqldump命令进行数据库备份(单库/多库/全库实操)
    mysqldump是MySQL自带逻辑备份工具,无需额外安装,支持导出SQL文本备份,兼容MySQL5.7、8.0,适用于日常数据备份、迁移、恢复。下面按实际运维场景分步讲解,命令可直接复制使用。

一、基础参数说明

先记线上必备通用参数,InnoDB业务库备份必须带上:

  • -u:指定数据库用户名
  • -p:交互式输入密码(推荐,避免明文泄露)
  • -h:远程数据库IP,本地可省略
  • -P:自定义端口,如-P3307
  • --single-transaction:InnoDB热备,不锁业务表
  • --routines:导出存储过程、自定义函数
  • --triggers:导出触发器
  • --events:导出定时事件
  • --databases:自动生成建库语句,恢复不用手动建库
  • --all-databases:导出实例所有数据库
  • | gzip:备份同时压缩,节省磁盘

二、单数据库备份(最常用)

1、普通无压缩备份

语法:

mysqldump -u账号 -p --single-transaction --routines --triggers --events --databases 库名 > 备份文件名.sql

示例:备份test库

mysqldump -uroot -p --single-transaction --routines --triggers --events --databases test > test_20260712.sql

执行后输入数据库密码,当前目录生成完整备份文件。

2、备份直接压缩(推荐线上使用)

mysqldump -uroot -p --single-transaction --routines --triggers --events --databases test | gzip > test_20260712.sql.gz

3、只备份库内指定几张表

去掉--databases,库名后跟表名:

mysqldump -uroot -p --single-transaction test user order > test_user_order.sql

4、远程服务器备份

mysqldump -uroot -p -h192.168.1.200 -P3306 --single-transaction --databases test > remote_test.sql

三、多个数据库一次性备份

使用--databases,多个库名空格隔开,恢复无需手动建库:

# 同时备份test、log、shop三个库
mysqldump -uroot -p --single-transaction --routines --triggers --events --databases test log shop > multi_db.sql

压缩版本:

mysqldump -uroot -p --single-transaction --routines --triggers --events --databases test log shop | gzip > multi_db.sql.gz

四、整实例全库备份(包含系统库mysql)

适用于服务器整机迁移、重装系统场景:

# 未压缩
mysqldump -uroot -p --single-transaction --routines --triggers --events --all-databases > all_mysql.sql

# 压缩备份
mysqldump -uroot -p --single-transaction --routines --triggers --events --all-databases | gzip > all_mysql.sql.gz

注意:全库备份会导出账号权限表,恢复会覆盖本地MySQL账号,跨服务器迁移谨慎使用。

五、备份文件恢复方法

1、普通sql文件恢复

mysql -uroot -p < test_20260712.sql

或登录MySQL内部执行:

mysql -uroot -p
source /data/backup/test_20260712.sql;

2、压缩包直接恢复,不用解压

gzip -d -c test_20260712.sql.gz | mysql -uroot -p

六、自动定时备份脚本(Linux)

新建脚本mysql_back.sh,实现每日备份、自动清理7天旧备份

#!/bin/bash
user="root"
back_dir="/data/mysql_back"
date=$(date +%Y%m%d)
mkdir -p $back_dir

# 单库定时备份
mysqldump -u$user -p数据库密码 --single-transaction --routines --triggers --events --databases test | gzip > $back_dir/test_$date.sql.gz

# 删除7天前备份
find $back_dir -name "*.sql.gz" -mtime +7 -delete

添加执行权限并配置定时任务:

chmod +x mysql_back.sh
crontab -e
# 每天凌晨2点执行备份
0 2 * * * /bin/bash /data/mysql_back.sh

安全提醒:公网服务器不要在脚本写明文密码,手动交互式执行。

更多推荐