记录下docker mongodb搭建过程

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 最近有个内部项目需要用到mongodb,去阿里云看了下最少的一年也要2000多,想着省钱的原则准备在服务器自己搭建个mongodb。

网络异常,图片无法展示
|


最近有个内部项目需要用到mongodb,去阿里云看了下最少的一年也要2000多,想着省钱的原则准备在服务器自己搭建个mongodb。

安装部署


准备

  • 准备一台服务器,最好是centos的
  • 在服务器上安装docker并启用
sudo yum install docker
sudo systemctl start docker

安装运行

  • 拉取对应mongodb的docker镜像,
sudo docker pull mongo:4.2
  • 在宿主机中新建mongodb/ect(配置文件目录),mongodb/data(存储目录),mongodb/logs(日志),mongodb/backup(备份)
  • 启动mongodb镜像并且将docker中mongodb的配置文件,数据存储目录,数据备份目录,日志目录挂载至宿主机方便后续维护处理。
sudo docker run  -p $port:27017 --name $MONGONAME  ****
  • 为了方便后续的安装将整个流程整理为shell脚本,完整的脚本如下
  • 功能一:自定义用户端口号输入
  • 功能二:根据用户输入的端口初始化mongodb所需要的文件
  • 功能三:获取mongodb v4.2版本镜像
  • 功能四:创建mongodb容器并运行且容器的端口号映射至输入的端口号,并挂载相关的目录
read -p '请输端口号(只支持5位数字): ' -n 5 port
echo "您输入的端口号为:$port"
MONGONAME=mongo$port
ROOTDIR=/home/workspace/mongodb$port
# docker拉取mongodb 4.2版本镜像
sudo docker pull mongo:4.2
# docker运行镜像:配置文件挂载到宿主机
# 创建mongodb目录
if [ ! -d $ROOTDIR ];then
    sudo mkdir $ROOTDIR
    sudo mkdir $ROOTDIR/etc
    sudo cp ./mongodb.conf $ROOTDIR/etc
    # 创建mongodb数据存放目录
    sudo mkdir $ROOTDIR/data
    # 创建mongodb数据备份目录
    sudo mkdir $ROOTDIR/backup
    # 创建mongodb日志目录
    sudo mkdir $ROOTDIR/logs
else
   echo "$ROOTDIR目录已经存在,请检查目录!"
   exit
fi
# 创建容器
echo "容器名称:${MONGONAME}"
sudo docker run  -p $port:27017 --name $MONGONAME  --restart=always -v $ROOTDIR/data:/data/db -v $ROOTDIR/etc:/data/conf -v $ROOTDIR/backup:/data/backup  -v $ROOTDIR/logs:/data/log -d mongo:4.2 
# 查看容器情况
echo "正在运行的容器如下:"
sudo docker ps

数据备份


数据库是整个服务的重中之重,数据备份必不可少,数据丢失的问题是我们难以承受的。docker启动的mongodb和我们正常启用的区别不是很大,甚至是比我们正常启动更简单。但是用docker部署的mongodb我们需要使用docker来进行备份。具体分为以下几个步骤:

  • 宿主机新建备份文件保存的目录
  • 进入运行的mongo docker容器,在docker容器中备份数据
  • 执行备份命令,将备份文件挂载到宿主机
  • 将上述步骤整理到shell脚本,使用linux crontab定时启动该备份
# $1:容器id或容器名车 $2: 是否挂载备份文件夹,0未挂载 1挂载
# 日期
DATE=`date +%Y_%m_%d_%H_%M`
echo "今天是:$DATE,开始执行数据备份"
# 初始化宿主机备份文件目录
if [ ! -d /home/workspace/backup ];then
   echo "新建宿主机backup目录"
   sudo mkdir /home/workspace/backup
   sudo chmod 777 /home/workspace/backup
else 
   echo "宿主机backup目录已存在"
fi
# 进入运行的容器,执行备份命令并将文件保存至宿主机/home/workspace/backup/目录下
if [ "$2" = '1' ];then
   echo "开始执行mongodb备份,文件保存至/home/workspace/backup/$DATE.gz"
   sudo docker exec -it $1  sh -c 'mongodump --archive' > /home/workspace/backup/$DATE.gz
else if [ "$2" = '2' ];then
   echo "开始执行mongodb恢复,文件保存至/home/workspace/backup/$3"
   sudo docker exec -it $1  sh -c 'mongostore --archive' > /home/workspace/backup/$3
fi
exit

总结


数据库可以说是编程中的难点之一,在大型项目中数据基本都会有专门的DB来维护,程序员做的基本都是增删改查,但这并不意味着我们不用去学习他,要知道整个互联网中小型项目还是占比大部分的,我们要想在这个职业可持续发展,那了解当前主流数据库并掌握一门主流数据库是必不可少的。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
3月前
|
存储 NoSQL MongoDB
docker安装Mongodb
这篇文章详细说明了如何使用Docker安装MongoDB,包括拉取镜像、创建并运行容器、数据持久化存储以及访问容器内的MongoDB服务的具体步骤。
306 1
|
7月前
|
NoSQL MongoDB Docker
windows下基于docker安装mongodb
windows下基于docker安装mongodb
187 1
|
8月前
|
NoSQL Unix MongoDB
【docker 】docker-compose 部署mongoDB
【docker 】docker-compose 部署mongoDB
242 1
|
8月前
|
NoSQL MongoDB 数据库
docker部署mongoDB
docker部署mongoDB
239 0
|
8月前
|
NoSQL 网络协议 MongoDB
docker安装mongodb(单点)图文详解
该文档提供了一个快速搭建MongoDB环境的指南,适用于开发和学习,但不适用于生产。主要步骤包括:1) 使用Docker创建数据卷`mongo_data_db`和`mongo_data_configdb`。2) 拉取`mongo`镜像并运行名为`mymongo`的容器,映射端口并挂载数据卷。3) 初始化管理员账号,创建具有`root`权限的用户`admin`,密码为`adminpwd`。4) 防火墙开放端口27017。最后,提到了使用第三方客户端进行连接。
399 0
|
8月前
|
NoSQL MongoDB Docker
docker安装MongoDB
docker安装MongoDB
154 0
|
8月前
|
NoSQL MongoDB Docker
百度搜索:蓝易云【Scrapy框架之Docker安装MongoDB教程。】
现在,你已经成功在Scrapy框架中使用Docker安装并配置了MongoDB。你可以在Scrapy爬虫中使用MongoDB进行数据存储和处理。
249 0
|
14天前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
51 15
|
22天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。