0x00 命令记录

过程中用过的一些命令记录一下,由于服务器空间问题实际上并没有使用整机备份的方法

  1. ### 查找大文件
  2. find . -type f -size +800M -print0 | xargs -0 du -h | sort -nr
  3. # 查找大目录
  4. du -hm --max-depth=2 | sort -n
  5. # 整机备份
  6. tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys
  7. # 解压
  8. tar xvpzf backup.tgz -C /
  9. # cvpzf - “创建档案文件”、“保持权限”(保留所有东西原来的权限)、“使用gzip来减小文件尺寸”

0x01 实际迁移过程

由于所有的服务都在docker运行,所以迁移docker的数据即可

  1. # 停掉docker服务
  2. systemctl stop docker
  3. # 打包/var/lib/docker
  4. tar cvpzf docker.tgz /var/lib/docker
  5. # 打包/opt数据文件目录
  6. tar cvpzf opt.tgz /var/lib/opt
  7. # 将压缩包下载到新服务器
  8. scp XXX@xxx.xxx.xxx.xxx:/root/opt.tgz
  9. scp XXX@xxx.xxx.xxx.xxx:/root/docker.tgz
  10. # 在新服务器安装版本一致的docker和docker-compose
  11. yum info docker
  12. yum install docker
  13. # docker-compose也安排上
  14. curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  15. chmod a+x /usr/local/bin/docker-compose
  16. systemctl start docker
  17. service docker start
  18. systemctl enable docker.service
  19. systemctl status docker.service
  20. # 查看是否安装成功,成功的话,就直接关掉docker
  21. systemctl stop docker
  22. # 删掉目标主机的
  23. rm -rf /var/lib/docker
  24. rm -rf /opt/*
  25. # 解压
  26. tar xvpfz opt.tgz -C /
  27. tar xvpfz docker.tgz -C /
  28. # 启动docker服务
  29. systemctl start docker

0x02 遇到的一些问题

后面发现从容器里面访问不到宿主机的端口,但是可以ping通

  1. # 查看防火墙状态
  2. firewall-cmd --state
  3. # 显示running,于是ifconfig,查看br前缀的虚拟网卡,将其ip在防火墙放行即可
  4. firewall-cmd --zone=trusted --add-source=172.20.0.1/16 --permanent
  5. ### 应用防火墙配置
  6. firewall-cmd --reload

docker边运行边打包数据,是不行的,mysql数据会不一致,导致启动失败

  1. # 错误信息
  2. mysqld got signal 11
  3. stack_bottom = 0 thread_stack 0x46000
  4. # 迁移之前把docker所有服务关闭即可避免该问题