逻辑备份就是把数据库里的结构和数据,转换成可读的 SQL 语句(比如 CREATE TABLE 和 INSERT INTO),存成文本文件。它不复制原始数据文件,而是通过查询数据库来“读出来再写进去”,所以兼容性好、便于检查和修改,适合中小规模库、跨版本迁移或开发测试场景。
用 mysqldump 做基础逻辑备份
mysqldump 是 MySQL 自带最常用的逻辑备份工具,无需额外安装,命令简洁:
备份全部数据库:mysqldump -u root -p --all-databases > all.sql备份单个库:
mysqldump -u root -p mydb > mydb.sql备份某库中的几张表:
mysqldump -u root -p mydb tb1 tb2 > tables.sql只导出表结构(不含数据):
mysqldump -u root -p -d mydb > schema.sql只导出数据(跳过建表语句):
mysqldump -u root -p -t mydb > data.sql
保证一致性:加 --single-transaction 参数
对 InnoDB 表做逻辑备份时,加上 --single-transaction 可避免锁表,让备份过程不影响线上写入。它利用事务快照机制,在备份开始时刻获取一个一致视图:
命令示例:mysqldump -u root -p --single-transaction mydb > consistent.sql注意:该参数仅对 InnoDB 有效;MyISAM 表仍会全局锁表 若备份期间有 DDL 操作(如 ALTER TABLE),可能引发不一致,建议避开高峰期操作
按需筛选:支持条件导出与排除
逻辑备份灵活,能精准控制内容范围:
导出满足条件的部分数据:mysqldump -u root -p mydb users --where="status=1" > active_users.sql跳过某个大表(如日志表):
mysqldump -u root -p mydb --ignore-table=mydb.log_table > clean.sql压缩备份文件节省空间:
mysqldump -u root -p mydb | gzip > mydb.sql.gz
恢复逻辑备份很简单
把 SQL 文件重新导入 MySQL 即可,前提是目标库已存在(或先执行
CREATE DATABASE): 标准恢复:
mysql -u root -p mydb恢复压缩包:
gunzip注意权限问题:恢复前确认 MySQL 对数据目录有写权限(如
/var/lib/mysql下文件不可写会导致启动失败)
