前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker安装mongodb并备份

docker安装mongodb并备份

作者头像
Ryan-Miao
发布2019-04-01 11:31:49
发布2019-04-01 11:31:49
1.5K0
举报
文章被收录于专栏:Ryan Miao

安装

官方镜像地址: https://hub.docker.com/_/mongo?tab=description

可以查看对应的dockerfile, 通过观察docker-entrypoint.sh可以看出,docker版的mongo移除了默认的/etc/mongo.conf, 修改了db数据存储路径为 /data/db.

代码语言:javascript
复制
 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

代码语言:javascript
复制
 docker exec -it mongod mongo admin
 
 >db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

设置一个其他用户

代码语言:javascript
复制
 db.auth("admin", "admin123456")
 db.createUser({ user: 'yapi', pwd: 'yapi123456', roles: [ { role: "readWrite", db: "yapi" } ] });

远程登陆

我们从一个其他的服务器去登陆刚才创建的mongo。

先来获取刚才创建的mongo的host,可以通过docker inspect,也可以

代码语言:javascript
复制
 docker exec -it mongod cat /etc/hosts

先用docker创建另一个mongo_client并连接我们的mongo

代码语言:javascript
复制
 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,重新跑,看我们的数据是否丢失。

代码语言:javascript
复制
 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

代码语言:javascript
复制
 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} $REMOTE_USER@$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点全量备份

代码语言:javascript
复制
 0 2 * * * sh /data/opt/mongodb/backup/backup-mongodb.sh

同时,远程备份服务器的定时清理脚本

代码语言:javascript
复制
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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 设置账号和密码
  • 远程登陆
  • 备份
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档