前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL物理备份详解:基于数据目录的完整备份方案

MySQL物理备份详解:基于数据目录的完整备份方案

原创
作者头像
神秘泣男子
发布2025-01-04 22:28:40
发布2025-01-04 22:28:40
8800
代码可运行
举报
运行总次数:0
代码可运行

在数据库运维工作中,备份是保障数据安全的重要手段。除了我们常用的逻辑备份工具(如mysqldump)外,物理备份也是一种重要的备份方式。物理备份通过直接复制数据库文件的方式进行,具有备份速度快、恢复效率高的特点,特别适合大规模数据库的备份工作。

  1. 性能优势
    • 直接复制文件,速度快
    • 适合大规模数据库备份
    • 恢复速度比逻辑备份更快
  2. 完整性保证
    • 备份包含所有数据库文件
    • 保留数据库的完整状态
    • 包含配置信息和系统表
  3. 使用场景
    • 数据库迁移
    • 灾难恢复
    • 测试环境搭建

1.首先准备测试数据

数据 创建了test数据库

里边有个person的表单 列表是 id name age 里边有三个测试的数据 具体看我的SQL语句的操作

代码语言:javascript
代码运行次数:0
复制
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

mysql> use test;
mysql> select * from person;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | San  |   19 |
|    2 | mike |   23 |
|    3 | li   |   20 |
+------+------+------+

2. 物理备份步骤

2.1 停止MySQL服务

代码语言:javascript
代码运行次数:0
复制
systemctl stop mysqld

2.2 创建备份

创建完成测试数据之后 我们关闭数据库

代码语言:javascript
代码运行次数:0
复制
# 1. 首先停止MySQL服务
systemctl stop mysqld

# 2. 创建备份目录
mkdir /backup

# 3. 使用tar命令备份整个数据目录
tar zcf /backup/mysql_all-$(date +%F).tar.gz /usr/local/mysql/data/

3. 模拟数据丢失

3.1 安全移除数据

代码语言:javascript
代码运行次数:0
复制
# 1. 停止MySQL服务
systemctl stop mysqld

# 2. 移动现有数据目录(模拟数据丢失) 这样的操作更为安全  也可以删除源目录
mkdir /bak
mv /usr/local/mysql/data/ /bak/
  1. 为什么必须移除原目录
    • 保证数据一致性
    • 避免新旧文件混合
    • 防止文件系统冲突
    • 确保还原后的环境是完全干净的

4. 数据恢复流程

4.1 标准恢复步骤

代码语言:javascript
代码运行次数:0
复制
恢复数据
# 1. 创建恢复目录
mkdir restore

# 2. 解压备份文件到恢复目录
tar zxf /backup/mysql_all-$(date +%F).tar.gz -C restore/

# 3. 将恢复的数据移动到MySQL数据目录
mv restore/usr/local/mysql/data/ /usr/local/mysql/

# 4. 启动MySQL服务
systemctl start mysqld

是不是很疑惑为什么 要创建文件夹 解压进去又要移动过去数据库的目录下(多此一举)

当然 直接解压到目录下也是可以的

  1. 安全性考虑:
    • 直接解压到目标目录可能会覆盖或损坏现有文件
    • 通过中间目录,我们可以先检查解压后的文件是否完整和正确
    • 如果解压过程出现问题,不会直接影响目标目录

检测启动状态

代码语言:javascript
代码运行次数:0
复制
root@localhost ~]# systemctl start mysqld
[root@localhost ~]# ss -nultp | grep 3306
tcp    LISTEN     0      128       *:3306                  *:*                   users:(("mysqld",pid=2854,fd=30))

这下就以及恢复成功了 数据库的所有数据库和相关的表单以及数据

总结

物理备份是MySQL数据库备份的重要方式之一,它通过直接复制数据文件实现完整的数据备份。虽然操作步骤相对简单,但需要注意数据一致性和安全性。通过使用临时目录进行恢复操作,我们可以最大限度地降低风险,确保数据恢复的可靠性。在实际生产环境中,建议结合物理备份和逻辑备份(如mysqldump)制定完整的备份策略,以实现最佳的数据保护。

成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.首先准备测试数据
  • 2. 物理备份步骤
    • 2.1 停止MySQL服务
    • 2.2 创建备份
  • 3. 模拟数据丢失
    • 3.1 安全移除数据
  • 4. 数据恢复流程
    • 4.1 标准恢复步骤
  • 检测启动状态
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档