服务器采用 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 {} \;