跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

如何在Linux利用Lvm-Lvcreate -S为核心数据库逻辑卷创建热备份的物理块级克隆副本卷

LVM快照是基于写时复制(COW)的轻量级时间点视图,创建时不复制数据,仅分配元数据和COW缓存空间;原LV写入时先保存旧块至快照区,故空间需预估变更量,备份后须及时清理。 用
lvcreate -s
创建的不是“物理块级克隆副本卷”,而是基于写时复制(Copy-on-Write, COW)机制的**快照(snapshot)**,它本身不复制全部数据块,而是在原始逻辑卷(LV)发生变更时,按需保存被覆盖前的旧块。因此它属于轻量级、空间高效的只读(或可读写)时间点视图,不是全量物理克隆。 快照的本质与适用场景 快照不是独立副本,而是依赖原LV存在的元数据结构: 创建瞬间不复制数据,仅分配元数据和COW缓存空间(由
-L
指定) 原LV写入某块时,该块内容先被拷贝到快照空间,再允许新写入——所以快照大小必须能容纳备份窗口内所有变更量 默认为只读;如需可写(用于测试/克隆),需加
--permission rw
不能脱离原LV单独导出或挂载到其他主机——不是便携式物理镜像 为数据库LV创建可用快照的关键步骤 假设数据库运行在 LV
/dev/vg_db/data_lv
,目标是获得一个可用于热备份的快照: CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载 确保原LV已停写或进入一致状态 :对 MySQL/PostgreSQL 等,执行
FLUSH TABLES WITH READ LOCK
或使用
pg_start_backup()
;对 Oracle 可用
BEGIN BACKUP
。这是保证快照语义一致的前提 预留足够快照空间 :根据数据库写入强度预估变更量。例如高负载下1小时可能写入2GB,则快照至少分配3GB:
lvcreate -s -L 3G -n data_snap vg_db/data_lv
立即挂载并验证 :
mkdir /mnt/db_snap
mount /dev/vg_db/data_snap /mnt/db_snap
确认文件系统可读、关键目录(如
data/
)结构完整 解除数据库锁(如适用) ,然后启动备份流程(如
tar -cf /backup/db_$(date +%F).tar /mnt/db_snap
) 若真需物理块级克隆副本(非快照) 要获得完全独立、可迁移、不依赖原LV的副本,应使用
dd
或
lvconvert --mirror
,而非
-s
: 用 dd 克隆(离线更安全) :
dd if=/dev/vg_db/data_lv of=/dev/vg_backup/clone_lv bs=4M status=progress
注意:需确保目标LV容量 ≥ 源LV已用空间,且操作期间数据库停止写入 用 LVM 镜像(在线,但开销大) :
lvconvert --mirror -m 1 /dev/vg_db/data_lv /dev/sdc1
完成后拆分镜像:
lvconvert --splitmirrors 1 --name clone_lv /dev/vg_db/data_lv
得到一个与原LV内容一致、完全独立的新LV 快照清理与风险提示 快照不是长期存储方案: 快照空间耗尽会导致原LV I/O 错误甚至只读锁定,务必监控:
lvs -o +snap_percent
备份完成后及时卸载并删除:
umount /mnt/db_snap
lvremove /dev/vg_db/data_snap
不要将快照用于替代传统备份——它无法防范误删、逻辑损坏或存储设备故障

相关文章