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所有服务关闭即可避免该问题