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
相关推荐
fd320019 分钟前
达梦数据库更新统计信息后仍走旧执行计划解决方案
数据库
百万蹄蹄向前冲43 分钟前
密码都对Node.js却连不上Linux数据库
linux·mysql
华章酱1 小时前
MySQL幻读是怎么出现的
数据库·mysql·幻读
浅念-1 小时前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql
updayday8541 小时前
离职域账号状态变更与Ping64操作记录核对
大数据·网络·数据库·安全·智能路由器
aramae1 小时前
MySQL内置函数(7)
开发语言·笔记·后端·mysql·其他
Nturmoils2 小时前
只恢复一张表,别把整个库都还回去
数据库
龙腾AI白云2 小时前
大语言模型:从语言理解到通用智能的跃迁
数据库·人工智能·机器学习·知识图谱
SelectDB3 小时前
快手基于 Apache Doris 千亿多模态检索的实践
大数据·数据库·数据分析
SelectDB3 小时前
StarRocks 迁移至 Apache Doris 完整指南:三步完成结构、数据与业务平滑切换
大数据·数据库·数据分析