Mysql数据库备份与恢复

一、备份概述

1.1 为什么需要备份

数据是企业的核心资产,数据库备份的重要性不言而喻。常见的数据丢失原因包括:

风险类型 描述
硬件故障 磁盘损坏、服务器宕机
软件错误 Bug导致数据损坏、误操作
人为错误 误删数据、错误更新
安全事件 黑客攻击、勒索软件
自然灾害 火灾、水灾、断电

1.2 备份类型对比

类型 说明 优点 缺点
物理备份 直接复制数据库文件 速度快、恢复简单 跨平台性差、占用空间大
逻辑备份 导出SQL语句 可读性强、跨平台 备份/恢复速度慢
全量备份 备份所有数据 恢复简单完整 占用空间大、耗时长
增量备份 备份自上次备份后的变化 节省空间和时间 恢复复杂
差异备份 备份自上次全量备份后的变化 介于全量和增量之间 恢复较复杂
热备份 在线备份,不锁表 不影响业务 需要事务支持
冷备份 停机备份 一致性好 影响业务

1.3 备份策略设计原则

python

复制代码
备份策略原则 = [
    "RPO(恢复点目标):可容忍的数据丢失量",
    "RTO(恢复时间目标):可容忍的恢复时间",
    "3-2-1原则:至少3份备份,2种介质,1份异地",
    "定期测试恢复:备份的有效性必须验证",
    "备份加密:保护敏感数据",
    "备份保留周期:根据合规要求设定"
]

二、逻辑备份与恢复

2.1 mysqldump基础用法

bash

复制代码
# 基本语法
mysqldump -u [用户名] -p [选项] [数据库名] > 备份文件.sql

# 备份单个数据库
mysqldump -u root -p school > school_backup.sql

# 备份多个数据库
mysqldump -u root -p --databases school blog > multiple_db.sql

# 备份所有数据库
mysqldump -u root -p --all-databases > all_db.sql

# 只备份表结构,不备份数据
mysqldump -u root -p --no-data school > school_structure.sql

# 只备份数据,不备份表结构
mysqldump -u root -p --no-create-info school > school_data.sql

# 备份指定表
mysqldump -u root -p school students teachers > school_tables.sql

2.2 mysqldump常用选项

bash

复制代码
# 常用选项详解

# 1. 事务一致性(InnoDB推荐)
mysqldump -u root -p --single-transaction school > backup.sql

# 2. 锁定所有表(MyISAM推荐)
mysqldump -u root -p --lock-all-tables school > backup.sql

# 3. 备份存储过程和函数
mysqldump -u root -p --routines school > backup.sql

# 4. 备份触发器
mysqldump -u root -p --triggers school > backup.sql

# 5. 备份事件
mysqldump -u root -p --events school > backup.sql

# 6. 添加DROP语句
mysqldump -u root -p --add-drop-database school > backup.sql

# 7. 完整备份(包含所有对象)
mysqldump -u root -p \
    --single-transaction \
    --routines \
    --triggers \
    --events \
    --add-drop-database \
    --databases school > full_backup.sql

# 8. 压缩备份
mysqldump -u root -p school | gzip > school_backup.sql.gz

# 9. 带条件的备份
mysqldump -u root -p school students \
    --where="age > 18" > adult_students.sql

# 10. 排除某些表
mysqldump -u root -p school \
    --ignore-table=school.logs \
    --ignore-table=school.temp > backup.sql
相关推荐
weixin_459753946 小时前
MySQL主从同步跳过错误影响一致性_使用pt-table-sync修复
jvm·数据库·python
kexnjdcncnxjs6 小时前
如何解决Oracle 12c以上版本的ORA-65096_C##公共用户前缀限制
jvm·数据库·python
zhoutongsheng6 小时前
MySQL触发器无法触发的原因分析_MySQL触发器排查指南
jvm·数据库·python
愈努力俞幸运6 小时前
function calling与mcp
android·数据库·redis
2301_779622416 小时前
不同品牌SSD对HTML函数工具加载速度影响大吗_存储测试汇总【汇总】
jvm·数据库·python
dinglu1030DL7 小时前
golang如何实现告警分级与升级_golang告警分级与升级实现步骤
jvm·数据库·python
xcLeigh7 小时前
Python开篇:撬动未来的万能钥匙 —— 从入门到架构的全链路指南
数据库·python·架构·教程·应用·网页
m0_463672207 小时前
Golang如何做图片处理缩放_Golang图片处理教程【收藏】
jvm·数据库·python
m0_748554817 小时前
SQL批量更新状态机字段_使用CASE表达式一次性处理
jvm·数据库·python
m0_624578597 小时前
安装宝塔面板提示缺少必要的依赖包_批量安装系统库
jvm·数据库·python