如何使用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
安全提醒:公网服务器不要在脚本写明文密码,手动交互式执行。
七、常见注意事项
- MyISAM引擎不支持
--single-transaction,备份会锁表,尽量业务低峰操作; - MySQL8.0若报错认证插件,执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; - 缺少
--routines --triggers --events会丢失存储过程、触发器; - 不加
--databases参数导出的备份,恢复前必须手动创建对应数据库; - 大数据量备份务必开启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
安全提醒:公网服务器不要在脚本写明文密码,手动交互式执行。
更多推荐


所有评论(0)