前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >服务器备份mysql和mongo

服务器备份mysql和mongo

原创
作者头像
若水xii
修改2025-02-20 10:23:56
修改2025-02-20 10:23:56
1130
举报

引言

最近在调整公司的研发流程,我引入了confluence用来编写产品需求和技术文档,yapi用来存放接口文档,同时也被领导提出了一个问题,要求数据备份。本身部署的服务器是有RAID1的,可以不用担心磁盘损坏的问题,但是还是要考虑服务器中毒和容灾相关的问题,于是我便开始着手备份工作。

备份部署文件

confluence和yapi,我都是通过docker compose部署的,这样比较快捷,confluence是本体服务+mysql,yapi是本体服务+mongo,我首先考虑到的是把两个服务的docker compose部署文件同步到备份服务器,这样如果服务器出问题,以前的服务不能用了,在恢复和重新部署时,我可以找到当时使用的容器和版本,这样有利于数据的恢复。

我首先在备份服务器上创建了两个备份文件夹

代码语言:sh
复制
mkdir confluence-backup yapi-backup

然后把docker部署文件夹复制到备份服务器

代码语言:sh
复制
scp -r /home/confluence root@192.168.1.123:/home/confluence-backup

scp -r /home/yapi root@192.168.1.123:/home/yapi-backup

备份mongo数据

代码语言:sh
复制
#!/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

备份mysql数据

代码语言:sh
复制
#!/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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 备份部署文件
  • 备份mongo数据
  • 备份mysql数据
  • 异常情况`
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档