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
相关推荐
harmony&4 分钟前
ETCD 存储系统实战:从单节点部署到 Kubernetes 高可用集群
数据库·kubernetes·etcd
2601_9620664914 分钟前
【玩转全栈】----Django模板的继承
数据库·django·sqlite
一只小bit1 小时前
Redis哨兵机制、主从复制与集群搭建与维护
数据库·redis·bootstrap
zlwool8 小时前
图纸管理选型避坑指南
数据库·erp·设备erp·非标机械
小灰灰搞电子9 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
软件聚导航11 小时前
「聚小软 AI 助手」技术升级:从数据库检索到 RAG 知识库问答
前端·数据库·mysql·微信小程序·小程序·ai编程·rag
2601_9609067211 小时前
1X发布自己的世界模型1XWM
mysql·mongodb·rabbitmq·memcached
学习星球11 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
GoppViper12 小时前
RDF资源描述框架深度解析:语义Web的数据基石与实战逻辑
前端·数据库
2601_9621741712 小时前
Redis 简介
数据库·redis·wpf