最近在调整公司的研发流程,我引入了confluence用来编写产品需求和技术文档,yapi用来存放接口文档,同时也被领导提出了一个问题,要求数据备份。本身部署的服务器是有RAID1的,可以不用担心磁盘损坏的问题,但是还是要考虑服务器中毒和容灾相关的问题,于是我便开始着手备份工作。
confluence和yapi,我都是通过docker compose部署的,这样比较快捷,confluence是本体服务+mysql,yapi是本体服务+mongo,我首先考虑到的是把两个服务的docker compose部署文件同步到备份服务器,这样如果服务器出问题,以前的服务不能用了,在恢复和重新部署时,我可以找到当时使用的容器和版本,这样有利于数据的恢复。
我首先在备份服务器上创建了两个备份文件夹
mkdir confluence-backup yapi-backup
然后把docker部署文件夹复制到备份服务器
scp -r /home/confluence root@192.168.1.123:/home/confluence-backup
scp -r /home/yapi root@192.168.1.123:/home/yapi-backup
#!/bin/bash
cd /home
# 备份mongo数据
docker exec -it yapi-mongo /bin/bash -c "mongodump --out /tmp/dump"
# 从docker拷贝到本地
docker cp yapi-mongo:/tmp/dump ./dump
# 删除docker内的数据
docker exec -it yapi-mongo /bin/bash -c "rm -rf /tmp/dump"
# 同步到备份服务器
rsync -av --delete dump root@192.168.1.123:/home/yapi-backup
# 删除本地数据
rm -rf dump
#!/bin/bash
cd /home
# 备份mysql数据
docker exec -it mysql-confluence /bin/bash -c "mysqldump -uroot -pxxxx --all-databases > /tmp/dump.sql"
# 从docker拷贝到本地
docker cp mysql-confluence:/tmp/dump.sql .
# 删除docker内的数据
docker exec -it mysql-confluence /bin/bash -c "rm -rf /tmp/dump.sql"
# 同步到备份服务器
rsync -av --delete dump.sql root@192.168.1.123:/home/confluence-backup
# 删除本地数据
rm -rf dump.sql
在crontab里面加入定时任务,执行sh就可以了
如果执行crontab,发现没备份成功,查看日志遇到the input device is not a TTY
报错,把docker exec -it命令去掉t,变成docker exec -i即可
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。