关于lvm快照结合rsync实现MySQL数据卷的远程备份教程

 更新时间:2025年05月29日 10:11:46   作者:学亮编程手记  
这篇文章主要介绍了关于lvm快照结合rsync实现MySQL数据卷的远程备份教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

关于lvm快照结合rsync实现MySQL数据卷的远程备份

lvcreate -s -n temp_snap -L 20G /dev/vg00/mysql_data  # 1. 创建临时快照(时间点冻结)
mount -o nouuid /dev/vg00/temp_snap /mnt/snap                  # 2. 挂载快照(访问冻结状态)
rsync -a /mnt/snap/ backup-server:/mysql_backups/    # 3. 将冻结状态数据独立化
umount /mnt/snap                                     # 4. 卸载
lvremove -f /dev/vg00/temp_snap                      # 5. 删除临时快照(释放资源)

-o nouuid:忽略 UUID 冲突(快照和原卷 UUID 相同,必须忽略)

上述命令通过 rsync 将 LVM 快照的数据传输到另一台服务器,实际上是在创建一份真正独立的备份。这与仅保留 LVM 快照有本质区别,具体作用和优势如下:

1. 核心作用:实现数据独立化

解除对原始卷的依赖

  • LVM 快照本身仍依赖原始卷的物理存储(通过 COW 机制),而 rsync 后的数据是完全独立的副本。
  • 即使原始服务器硬盘损坏,备份服务器上的数据依然安全。

避免快照空间耗尽风险

  • 快照空间有限,长期保留可能导致失效。
  • rsync 后,备份数据不受快照空间限制,可长期存储。

2. 典型应用场景

① 灾难恢复

  • 如果原服务器遭遇硬件故障、勒索软件攻击或误删除,可直接从备份服务器恢复数据。
  • 恢复示例
# 在备份服务器上直接使用数据
rsync -a /backup/mysql_backups/ /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql

② 数据迁移

  • 将数据迁移到新服务器或云环境时,无需停机。
  • 迁移示例
# 在新服务器上直接拉取备份数据
rsync -a backup-server:/mysql_backups/ /var/lib/mysql/

③ 测试与开发

  • 用备份数据搭建测试环境,不影响生产系统。
  • 用法示例
# 将备份数据挂载到测试容器
docker run -v /backup/mysql_backups:/var/lib/mysql mysql:latest

3. 为什么比单纯快照更可靠?

风险仅保留 LVM 快照rsync 到备份服务器
原始卷物理损坏快照无法使用数据完好无损
快照空间耗尽快照自动失效不影响备份数据
误删原始卷快照连带丢失备份数据独立保留
需要长期存档不适合(空间增长不可控)可长期保存

4. 操作流程的深层意义

完整命令链:

lvcreate -s -n temp_snap -L 20G /dev/vg00/mysql_data  # 1. 创建临时快照(时间点冻结)
mount /dev/vg00/temp_snap /mnt/snap                  # 2. 挂载快照(访问冻结状态)
rsync -a /mnt/snap/ backup-server:/mysql_backups/    # 3. 将冻结状态数据独立化
umount /mnt/snap                                     # 4. 卸载
lvremove -f /dev/vg00/temp_snap                      # 5. 删除临时快照(释放资源)

本质

通过快照获得一致性的时间点镜像 → 用 rsync 将其转化为真正的备份 → 最后清理临时资源。

5. 进阶建议

校验备份完整性

传输后对比校验和:

# 在原服务器生成校验文件
find /mnt/snap -type f -exec md5sum {} + > /tmp/checksum_origin

# 在备份服务器验证
ssh backup-server "find /mysql_backups -type f -exec md5sum {} +" | diff - /tmp/checksum_origin

结合增量备份

首次全量同步后,后续可通过 rsync --link-dest 实现增量备份,节省空间。

自动化脚本示例

#!/bin/bash
SNAPSHOT_NAME=mysql_$(date +%Y%m%d)
lvcreate -s -n $SNAPSHOT_NAME -L 20G /dev/vg00/mysql_data
mount /dev/vg00/$SNAPSHOT_NAME /mnt/snap
rsync -az --delete /mnt/snap/ backup-server:/mysql_backups/
umount /mnt/snap
lvremove -f /dev/vg00/$SNAPSHOT_NAME

总结

rsync 到另一台服务器的操作,本质是将 LVM 快照的临时一致性状态转化为永久独立备份,解决了快照的固有局限性,是专业备份方案的关键步骤。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Ubuntu虚拟机开机黑屏系列解决方法总结

    Ubuntu虚拟机开机黑屏系列解决方法总结

    ubuntu虚拟机玩的好好的,突然不知怎么着图形界面就卡住了,等待了好一会也不见恢复,没辙只能考虑强行关断虚拟机,一关掉虚拟机又完全卡死了,紧接着重启vmware,发现一进入就是黑屏,所以本文总结了Ubuntu虚拟机开机黑屏系列解决方法,需要的朋友可以参考下
    2024-07-07
  • 阿里云CentOS 7系统挂载SSD云盘的教程

    阿里云CentOS 7系统挂载SSD云盘的教程

    最近在阿里云购买了块云盘,但悲催的发现阿里云购买的第2块云盘默认是不自动挂载的,需要手动配置挂载上。所以只能求助万能的百度了,通过查找网上的资料,和自己的实践终于将云盘挂载成功了,现在将步骤分享给大家,有同样需要的朋友们可以参考借鉴。
    2016-11-11
  • Apache服务器中.htaccess文件的实用配置示例集锦

    Apache服务器中.htaccess文件的实用配置示例集锦

    这篇文章主要介绍了Apache服务器中.htaccess文件的实用配置示例集锦,囊括了防盗链重定向及强制浏览器下载指定的文件类型等例子,很黄很暴力,需要的朋友可以参考下
    2016-03-03
  • Linux下nginx生成日志自动切割的实现方法

    Linux下nginx生成日志自动切割的实现方法

    这篇文章主要介绍了 Linux下nginx生成日志自动切割的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能看,需要的朋友可以参考下
    2017-10-10
  • Linux文件编辑命令vi详细整理(总结)

    Linux文件编辑命令vi详细整理(总结)

    本篇文章主要介绍了Linux文件编辑命令详细整理(总结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • linux mpstat命令使用详解

    linux mpstat命令使用详解

    这篇文章主要介绍了linux mpstat命令使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • win10 装centos7 虚拟机

    win10 装centos7 虚拟机

    虚拟机安装网上教程很多,碰到问题也容易解决,这里就记录下便于自己翻越,有不足之处还请指明,不吝赐教
    2019-01-01
  • 详解从Linux源码看Socket(TCP)的bind

    详解从Linux源码看Socket(TCP)的bind

    本文从Linux源码的角度看Server端的Socket在进行bind的时候到底做了哪些事情(基于Linux 3.10内核)
    2021-06-06
  • 让Apache 2支持.htaccess并实现目录加密的方法

    让Apache 2支持.htaccess并实现目录加密的方法

    这篇文章主要介绍了让Apache 2支持.htaccess并实现目录加密的方法,文中给出了详细的方法步骤,并给出了示例代码,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-02-02
  • linux获取进程执行时间方法示例

    linux获取进程执行时间方法示例

    linux获取进程执行时间有两种方法可以获取,第一种是用time命令,time 进程。第二种是通过在程序中进行记录,首先利用sysconf函数获取时钟滴答数,再用times获取tms结构,详细看下面的示例代码
    2013-12-12

最新评论