备份与恢复
约 454 字大约 2 分钟
2026-01-06
概述
MySQL 的备份可以根据数据量大小、业务是否允许停机以及对恢复速度的要求,分为 逻辑备份 和 物理备份 两大类
逻辑备份
数据备份
逻辑备份,即将数据库结构和数据导出为 SQL 脚本,适合中小型数据库(数据量 < 50GB)
# 语法:mysqldump -u [用户名] -p [数据库名] [参数] > [备份文件名.sql]
mysqldump -u root -p my_database > my_database_backup.sql参数:
--single-transaction:用于 InnoDB 引擎,可以在不锁表的情况下进行备份,并保证数据一致性- --quick:强制
mysqldump从服务器一行一行地检索表,而不是一次性缓冲整个结果集,极大地降低内存占用 --triggers:备份触发器--routines:备份存储过程和函数
终端执行,备份 backup-test 数据库到 /home/backup/ 下
mysqldump -u root -p backup-test --single-transaction > /home/backup/backup-test.sqlmysqldump -u root -p zetlight-prod --single-transaction > /home/backup/zetlight-prod.sql数据恢复
命令行恢复:
mysql -u root -p [数据库名] < my_database_backup.sql清空 backup-test 数据库,并执行:
mysql -u root -p backup-test < /home/backup/backup-test.sql定时备份
编写脚本,注意 -p 和密码直接不能留空
backup.sh
#!/bin/bash
BACKUP_DIR="/home/backup"
DATE=$(date +%Y%m%d%H%M)
mysqldump -u root -p'你的密码' backup-test --single-transaction > $BACKUP_DIR/backup-test_$DATE.sql
# 删除 4 天前的旧备份
find $BACKUP_DIR -mtime +4 -name "*.sql" -exec rm -rf {} \;crontab -e 设置定时任务,每天凌晨 2 点执行
0 2 * * * /bin/bash /home/backup/backup.sh物理备份
物理备份,即直接复制 MySQL 的磁盘文件
待写
总结
| mysqldump | XtraBackup | |
|---|---|---|
| 优点 | 简单、生成的是 SQL,跨版本兼容好 | 备份和恢复数据快,支持增量备份 |
| 缺点 | 数据量大时恢复慢 | 存储成本高 |
| 场景 | 中小型数据库 | 大型数据库 |
版权所有
版权归属:haipeng-lin