关于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 快照的临时一致性状态转化为永久独立备份,解决了快照的固有局限性,是专业备份方案的关键步骤。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论