服务器采用 Docker 方式运行服务,省去了还跟多环境配置的问题.

为了数据持久化,在宿主机上跑定时备份任务, 如Shell.

忘记是哪里记录的,这里备忘下.

MySQL

shell脚本 - backup_mysql.sh:

#!/bin/bash

#自动备份、压缩、保留15天

#数据库名
backupDatabase=mydatabases

#存放备份的目录
baseDir=/home/backup/

#数据库名_年月日
#可以根据需要修改 %Y%m%d%H%M%S
fileName=mysql_${backupDatabase}_`date +%Y%m%d`

#备份数据库
docker exec mysql_container_name mysqldump --databases ${backupDatabase} > ${baseDir}${fileName}.sql

#加密压缩 
# targz 不错的压缩率,速度非常快,CPU占用率比较低
# 解压targz命令: openssl des3 -d -k '密码' -salt -in mysql_api_20191126.tar.gz | tar xzf -
tar -zcPvf - ${baseDir}${fileName}.sql | openssl des3 -salt -k '密码' -out ${baseDir}${fileName}.tar.gz

# 7z压缩 非常高的压缩率 速度有点慢 CPU占用率比较高
# 7za a -p '密码' ${baseDir}${fileName}.7z ${baseDir}${fileName}.sql

#删除备份的sql文件
rm -f ${baseDir}${fileName}.sql;

#删除15天前备份的数据(targz和7z只是扩展名有所不同)
find ${baseDir} -mtime +15 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \;
# find ${baseDir} -mtime +15 -name "${backupDatabase}*.7z" -exec rm -rf {} \;

MongoDB

#查看 MongoDB 的容器名
docker ps

#进入 MongoDB 容器
docker exec -it mongo_container_id /bin/bash

#备份
mongodump -h 127.0.0.1 --port 27017 -u=用户名 -p=密码 -d test(数据库名字) -o /dump
mongodump -h 127.0.0.1 --port 27017 -d test -o /dump

#打包备份文件夹,与复制
cd /dump/
tar -zcvf backup.tar.gz
docker cp backup.tar.gz /path/to/localhost


#恢复
tar -zxvf /dump/backup.tar.gz
mongorestore -h 127.0.0.1 --port 27017 --drop -d test /dump/backup

Redis

#!/bin/bash

#自动备份 压缩 保留15天

#存放备份的目录
baseDir=/home/backup/

#数据库名_年月日, 可以根据需要修改 %Y%m%d%H%M%S
fileName=redis_dump_`date +%Y%m%d`

#备份redis
docker exec redis redis-cli save

#复制到宿主机
docker cp redis:/data/dump.rdb ${baseDir}dump.rdb

#加密压缩 
tar -zcPvf - ${baseDir}dump.rdb | openssl des3 -salt -k '密码' -out ${baseDir}${fileName}.tar.gz
# 7za a -p '密码' ${baseDir}${fileName}.7z ${baseDir}dump.rdb

#删除备份的rdb文件
rm -f ${baseDir}dump.rdb

#删除15天前备份的数据
find ${baseDir} -mtime +15 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \;
# find ${baseDir} -mtime +15 -name "${backupDatabase}*.7z" -exec rm -rf {} \;
Last modification:September 15th, 2022 at 02:16 pm