数据库备份,丢掉祖传脚本,docker一键搞定
前面部署了mariadb及redis,我们需要每天都给它备份,毕竟数据无价。
像我自己的一个小日记网站,几千条日记基本上都是保存至数据库中的,所以每天定时给他备份尤为重要。
自从了解了docker,就总想着啥事都用docker搞定,毕竟方便还不占内存,何乐不为呢。
多方查证,找到了使用人数最多的镜像 databack/mysql-backup ,比起以前编写复杂备份脚本及定时任务,确实方便多了。
这也印证了那句话“不学习,毋宁死”,以前费劲心思写的备份脚本突然之间就被一键替代了。
似喜似悲,说的就是这个感态吧。
得得得,废话少说,上结果。
一、编写docker-compose.yml
官网对各项参数都有解释,做个好人,我把它翻译成国人易懂的语言了。
这个镜像支持备份数据到本地、SMB、S3三个。
我这里选择上传到七牛云上,因为它便宜(充值了20元,2年后的今天还有19.9元),而且支持S3。
你可以备份到本地,把数据挂载出来就行了,具体看官网配置。
下面是docker-compose内容
version: '3.3'
services:
backup:
image: databack/mysql-backup
environment:
- DB_DUMP_TARGET=s3://self-note/s3-cn-east-1.qiniucs.com #s3的地址
- AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # 密码
- AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # 密码
- AWS_ENDPOINT_URL=http://s3-cn-south-1.qiniucs.com #七牛地址
- AWS_DEFAULT_REGION=cn-south-1 # 区域
- DB_DUMP_CRON=0 0 3 * * ? * #多久备份,这里是每天凌晨3点
# - RUN_ONCE #只运行一次,与上面的只能存在一个
- DB_USER=root # 数据库用户名
- DB_PASS=123456 #数据库密码
- DB_NAMES=diary #要备份的数据库,把这行注释掉会备份整个数据库
- DB_SERVER=mariadb #数据库地址,我这里用的是docker网里面的,
- COMPRESSION=bzip2 #压缩算法,
- NICE=true # 这还要解释?nice自然备份效果会很nice啦
- DB_PORT=3306 # 端口号,不写默认3306
networks: # docker加入的网络,再这个网络下才能找到mariadb这个地址,不知道的翻一下前面的内容
default:
external: true
name: dbnet
简单说下七牛云的用法,都是中文应该很容易,注册登录,然后进入到对象存储Kodo,点击空间管理,新建空间。
点击空间名称,找到S3域名,点击查看,跟着我那格式来,别填错了。
然后最关键的授权密码那两个,点击头像,密钥管理,没有就新建。
二、运行
老规矩,养成习惯,在opt目录下新建备份目录,再新建docker-compose.yml复制进去,最后运行。
可以先把文件里面的定时那一行注释掉,放开RUN_ONCE,然后看七牛空间里面多了文件没有。
mkdir /opt/dbbackup # 建
cd /opt/dbbackup # 进
vi docker-compose.yml # 复制进去
docker-compose up -d # 运行
运行之后可以使用下面命令查看是否出错
docker-compose logs -f
我这里是成功截图
查看七牛空间文件管理,发现多了一个文件了,将它下载下来,解压桌面备用。
三、测试
登录前面搭建好的adminer,登录进去,点击导入,选择文件,最后执行,数据就都有了。
行吧,现在使用下面命令把容器停了。
docker-compose down
把刚才的RUN_ONCE去掉,把定时备份给换上,重新运行,这样每天凌晨3点就会自动备份数据了。
可以高枕无忧地去写日记了。
收工。