docker安装mongodb并备份
Posted adjk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker安装mongodb并备份相关的知识,希望对你有一定的参考价值。
安装
官方镜像地址: https://hub.docker.com/_/mongo?tab=description
可以查看对应的dockerfile, 通过观察docker-entrypoint.sh可以看出,docker版的mongo移除了默认的/etc/mongo.conf, 修改了db数据存储路径为 /data/db.
docker run --name mongod -p 27017:27017 -v /data/opt/mongodb/data/configdb:/data/configdb/ -v /data/opt/mongodb/data/db/:/data/db/ -d mongo:4 --auth
设置账号和密码
登陆镜像,设置admin
docker exec -it mongod mongo admin
>db.createUser( user: ‘admin‘, pwd: ‘admin123456‘, roles: [ role: "userAdminAnyDatabase", db: "admin" ] );
设置一个其他用户
db.auth("admin", "admin123456")
db.createUser( user: ‘yapi‘, pwd: ‘yapi123456‘, roles: [ role: "readWrite", db: "yapi" ] );
远程登陆
我们从一个其他的服务器去登陆刚才创建的mongo。
先来获取刚才创建的mongo的host,可以通过docker inspect,也可以
docker exec -it mongod cat /etc/hosts
先用docker创建另一个mongo_client并连接我们的mongo
docker run -it --name mongo mongo:4 mongo -host 172.17.0.5 -u yapi -p yapi123456
> db
test
> use yapi
switched to db yapi
> show collections
test
> db.test.find();
"_id" : ObjectId("5c9dca2b4d225a0ca0fb29c9"), "name" : "ryan"
备份
创建mongodb服务的时候已经导出了我们的数据文件,现在干掉docker,重新跑,看我们的数据是否丢失。
docker kill mongod
docker rm mongod
docker run --name mongod -p 27017:27017 -v /data/opt/mongodb/data/configdb:/data/configdb/ -v /data/opt/mongodb/data/db/:/data/db/ -d mongo:4 --auth
去登陆查看数据,发现没有丢失
接下来就是备份我们的/data/opt/mongodb/data 目录即可。当然,这是全量备份,想要增量备份,参照官方文档进行备份。
全量备份/data/opt/mongodb/data
创建备份目录/data/opt/mongodb/backup/data
创建备份日志目录: /data/log/backup/mongodb
创建备份脚本backup-mongodb.sh
source /etc/profile
LOG_DIR=/data/log/backup/mongodb
SOURCE_DIR=/data/opt/mongodb/data
BACKUP_DIR=/data/opt/mongodb/backup/data
REMOTE_IP=192.168.1.98
REMOTE_USER=root
REMOTE_DIR=/data/opt/backup/mongodb
function log()
echo "[ `date ‘+%Y-%m-%d %H:%M:%S‘` ] $1"
# 备份
function main()
d=`date "+%Y%m%d%H%M%S"`
fname=$BACKUP_DIR/backup_$d.tgz
log "开始备份 $fname"
tar -zcf $fname $SOURCE_DIR
scp $fname [email protected]$REMOTE_IP:$REMOTE_DIR
log "备份到远程成功"
log "开始删除7天前的备份"
find $BACKUP_DIR -type f -atime +7 |xargs -t -i rm
log "删除完毕"
main >> $LOG_DIR/backup.log 2>&1
创建定时任务,每天2点全量备份
0 2 * * * sh /data/opt/mongodb/backup/backup-mongodb.sh
同时,远程备份服务器的定时清理脚本
source /etc/profile
BACKUP_DIR=/data/opt/backup
LOG_DIR=/data/log/backup
function log()
echo "[ `date ‘+%Y-%m-%d %H:%M:%S‘` ] $1"
#
function main()
log "开始删除7天前的备份"
find $BACKUP_DIR -type f -atime +7 |xargs -t -i rm
log "删除完毕"
main >> $LOG_DIR/clean_backup.log 2>&1
以上是关于docker安装mongodb并备份的主要内容,如果未能解决你的问题,请参考以下文章