mysql如何使用mysqldump备份_mysql逻辑备份方法

来源:这里教程网 时间:2026-02-28 20:30:57 作者:

MySQL 使用

mysqldump
是最常用、最灵活的逻辑备份方式,它导出的是 SQL 语句(CREATE + INSERT),可跨版本、跨平台恢复,适合中小规模数据库或需要可读性、可审计的场景。

基础备份命令

最简单的全库备份:

mysqldump -u root -p database_name > backup.sql

执行后会提示输入密码,导出结果为纯文本 SQL 文件。注意:该命令默认不包含创建数据库的语句(

CREATE DATABASE
),恢复前需手动建库或加
--databases
参数。

推荐的生产级备份参数

实际使用中建议加上这些关键选项,提升一致性、兼容性和恢复可靠性:

--single-transaction:对 InnoDB 表启用一致性快照(不锁表),避免备份过程中数据被修改;MyISAM 不支持,需配合
--lock-all-tables
--routines:导出存储过程和函数 --triggers:导出触发器 --events:导出事件调度器定义 --set-gtid-purged=OFF:若用 GTID 复制且不打算在新实例启用 GTID,避免恢复时报错 --default-character-set=utf8mb4:显式指定字符集,防止乱码(尤其含 emoji 或中文时)

示例(备份单库并保证结构+数据+逻辑对象完整):

mysqldump -u root -p --single-transaction --routines --triggers --events --default-character-set=utf8mb4 myapp > myapp_$(date +%F).sql

多库与排除表备份

备份多个库:

mysqldump -u root -p --databases db1 db2 db3 > multi_db_backup.sql

--databases
会让输出包含
CREATE DATABASE IF NOT EXISTS
语句)

跳过某些大表(如日志表)节省空间和时间:

mysqldump -u root -p myapp --ignore-table=myapp.access_log --ignore-table=myapp.tmp_data > myapp_clean.sql

压缩与定时备份建议

直接管道压缩,减少磁盘占用:

mysqldump -u root -p --single-transaction myapp | gzip > myapp_$(date +%F_%H-%M).sql.gz

搭配 cron 定时(如每天凌晨 2 点):

0 2 * * * /usr/bin/mysqldump -u backup_user -p'pass' --single-transaction --routines myapp | gzip > /backup/myapp_$(date +\%F).sql.gz

⚠️ 注意:密码写在命令行存在泄露风险,建议改用配置文件(
~/.my.cnf
)并设权限
chmod 600

逻辑备份恢复也很简单:

mysql -u root -p database_name ,前提是目标库已存在且字符集匹配。

相关推荐