0x00 命令记录
过程中用过的一些命令记录一下,由于服务器空间问题实际上并没有使用整机备份的方法
### 查找大文件
find . -type f -size +800M -print0 | xargs -0 du -h | sort -nr
# 查找大目录
du -hm --max-depth=2 | sort -n
# 整机备份
tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys
# 解压
tar xvpzf backup.tgz -C /
# cvpzf - “创建档案文件”、“保持权限”(保留所有东西原来的权限)、“使用gzip来减小文件尺寸”
0x01 实际迁移过程
由于所有的服务都在docker运行,所以迁移docker的数据即可
# 停掉docker服务
systemctl stop docker
# 打包/var/lib/docker
tar cvpzf docker.tgz /var/lib/docker
# 打包/opt数据文件目录
tar cvpzf opt.tgz /var/lib/opt
# 将压缩包下载到新服务器
scp XXX@xxx.xxx.xxx.xxx:/root/opt.tgz
scp XXX@xxx.xxx.xxx.xxx:/root/docker.tgz
# 在新服务器安装版本一致的docker和docker-compose
yum info docker
yum install docker
# docker-compose也安排上
curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
systemctl start docker
service docker start
systemctl enable docker.service
systemctl status docker.service
# 查看是否安装成功,成功的话,就直接关掉docker
systemctl stop docker
# 删掉目标主机的
rm -rf /var/lib/docker
rm -rf /opt/*
# 解压
tar xvpfz opt.tgz -C /
tar xvpfz docker.tgz -C /
# 启动docker服务
systemctl start docker
0x02 遇到的一些问题
后面发现从容器里面访问不到宿主机的端口,但是可以ping通
# 查看防火墙状态
firewall-cmd --state
# 显示running,于是ifconfig,查看br前缀的虚拟网卡,将其ip在防火墙放行即可
firewall-cmd --zone=trusted --add-source=172.20.0.1/16 --permanent
### 应用防火墙配置
firewall-cmd --reload
docker边运行边打包数据,是不行的,mysql数据会不一致,导致启动失败
# 错误信息
mysqld got signal 11;
stack_bottom = 0 thread_stack 0x46000
# 迁移之前把docker所有服务关闭即可避免该问题