centos镜像更新后如何迁移数据
小樊
42
2025-12-17 18:20:07
迁移前的准备与总体策略
- 明确目标:是做原地升级系统(保留系统盘数据)还是更换系统镜像后迁移数据(重建系统盘,仅迁移业务数据)。原地升级适合希望尽量保留现有系统与配置的场景;更换镜像后迁移数据更干净,适合跨大版本或系统盘需要重建的情况。
- 完整备份:先对关键数据与配置做全量备份(如 tar、rsync、快照/云盘克隆),并在非生产时段操作,避免业务写入导致不一致。
- 资源与限制评估:若采用云厂商提供的迁移工具(如SMC),需预留资源(内存≥600 MiB;/usr≥250 MiB;/var≥4 GiB;/boot≥100 MiB),并注意架构与软件限制(如i386 包不支持、部分 epel-modular 不可用等)。
- 迁移方式选型:小数据量可用 scp;大量/增量数据优先 rsync;跨环境/跨平台可用 tar 归档配合传输;虚拟机与宿主机/本地之间可用 NFS/Samba/SSHFS 共享目录。
原地升级并保留系统盘数据
- 适用场景:希望保留系统盘上的数据与大部分配置,仅将 CentOS 7/8 等系统原地转换为兼容发行版(如 AnolisOS、Alibaba Cloud Linux 等)。
- 基本流程:
- 在云厂商控制台选择操作系统迁移工具(如服务器迁移中心 SMC),确认源/目标系统与架构在支持列表内;
- 检查并清理不兼容项(如 i386 包、部分 epel-modular 源);
- 预留资源并停止非必要业务,避免迁移过程资源不足;
- 执行迁移并监控进度,迁移完成后做业务与数据校验。
- 重要提示:迁移会改变内核与基础工具链,对依赖内核接口的业务(如 OOT 模块、硬件使能)可能不兼容,需提前评估与回归测试。
更换镜像后迁移数据
- 新实例准备:基于新的 CentOS 镜像创建实例,挂载与原环境一致的数据盘(若使用云盘,建议用快照/克隆保持一致性)。
- 方式一 rsync 在线迁移(推荐):
- 在旧实例上执行(保持目录尾部斜杠一致,避免拷贝到错误层级):
- rsync -avzP /var/www/ user@new-centos-ip:/var/www/
- rsync -avzP /home/ user@new-centos-ip:/home/
- rsync -avzP /etc/ user@new-centos-ip:/etc.bak/
- 如需增量同步,可在窗口期再次执行相同命令,仅同步差异。
- 方式二 tar 归档迁移(适合一次性搬运):
- 旧实例打包:tar czvf backup_20251217.tar.gz -C /var/www .
- 传到新实例:scp backup_20251217.tar.gz user@new-centos-ip:/tmp/
- 新实例解包:tar xzvf /tmp/backup_20251217.tar.gz -C /var/www
- 方式三 共享目录/块存储挂载:
- 虚拟机与宿主机/本地可用 NFS/Samba/SSHFS 挂载共享目录,直接把数据拷入共享目录完成迁移。
- 应用与权限校验:
- 校验关键目录权限与属主(如 /var/www、/home、数据库数据目录);
- 启动服务前先检查配置文件中路径、端口、用户等是否变更;
- 数据库建议用逻辑/物理备份在目标库恢复,避免直接拷贝数据文件导致不一致。
目录迁移与挂载点调整
- 场景:将 /data 从系统盘迁移到新磁盘/新分区,并更新为持久挂载。
- 步骤:
- 查看磁盘与分区:fdisk -l、df -h、df -T
- 分区并格式化新盘(示例):
- parted /dev/vdb mklabel gpt
- parted /dev/vdb mkpart primary ext4 0% 100%
- mkfs.ext4 /dev/vdb1
- 临时挂载并迁移数据:
- mkdir -p /mnt/data
- mount /dev/vdb1 /mnt/data
- rsync -avxP /data/ /mnt/data/
- 备份原目录并切换挂载点:
- mv /data /data.bak
- mkdir -p /data
- umount /mnt/data
- mount /dev/vdb1 /data
- 写入 /etc/fstab 持久化(建议使用 UUID):
- blkid /dev/vdb1 → 得到 UUID
- echo “UUID=xxxx-xxxx /data ext4 defaults 0 0” >> /etc/fstab
- 校验并清理:df -h、ls -ld /data;确认无误后删除 /data.bak。
验证与回滚
- 数据一致性:对关键目录做校验和/条目数比对(如 find /data -type f -exec md5sum {} + | sort,或 rsync -avnc 做干跑校验)。
- 服务与权限:逐项启动服务(Nginx、数据库、应用),核对配置文件路径、端口、用户/属主、SELinux/防火墙策略。
- 回滚预案:保留旧实例与旧盘一段时间;若采用更换镜像方案,确保快照/克隆可用;发现问题立即切回旧环境并排查。