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

3次阅读

mysqldump 是最常用逻辑备份方式,导出 sql 语句,支持跨版本跨平台恢复;推荐使用 –single-transaction、–routines、–triggers 等参数保障一致性与完整性,并建议通过 配置文件 管理密码、管道压缩及 cron 定时备份。

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

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,前提是目标库已存在且字符集匹配。

站长
版权声明:本站原创文章,由 站长 2025-12-18发表,共计1369字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources