目录

为什么用NoSQL数据库?

一、Ubuntu 利用文件启动Mongo

1、前期准备

1)、创建日志文件

2)、设置环境变量

3)、测试是否安装成功

2、数字错误

1号错误

100号错误

48号错误

3、创建mongod.conf文件

开启服务

二、Ubuntu创建mongo副本集

1、克隆虚拟机

2、网卡配置

1)、更改主机名

2)、查看IP地址

3)、实现主机映射

2、以副本集启动mongo(回到根目录cd ~)

1)、启动

2)、检查是否以副本集形式启动

​编辑

三、配置副本集

1、查看目前的副本集

2、插入副本集

​编辑

3、添加仲裁者

4、优先级设置

1)、添加节点时设置优先级

2)、已有节点设置优先级

四、分片搭建

1、三台主机建立路径和log文件

2、三台主机建立启动文件

3、三台主机启动Config Server

启动客户端(测试)

4、配置Config Server服务器的主节点

5、运行刚刚配置的文件

6、Config Server(路由)配置

7、运行路由

8、进入路由


学期结束,刚好整理这一学期在NoSQL数据库中的所学作一终结,也希望能够帮助步入学习NoSQL数据库的你。

本系列文章的编撰基于Ubuntu20.04版本。


为什么用NoSQL数据库?

大数据对当前数据的存储、访问以及管理均带来了前所未有的挑战。而传统关系数据库的ACID原则、结构规整以及表连接操作等特性成为制约海量数据存储和并发访问的瓶颈。

NoSQL数据库就是为了解决海量数据库的存储、并发访问以及扩展而出现的,它具有数据模型灵活并发访问度高易于扩展和伸缩开发效率高以及开发成本低等优点。


一、Ubuntu 利用文件启动Mongo

  • 下载Ubuntu版mongorgz文件

下载链接:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-5.0.7.tgz

这里要注意mongo下载的版本,如果你是Ubuntu就选对应的Ubuntu版本,其他虚拟机一样。

1、前期准备

使用sercet CRT(若没有此软件可直接将在Windows下载的压缩包拖拽至虚拟机下。) 将下载的mongo.tgz文件放到Ubuntu的桌面上显示(一定要知道它的位置,在下面tar命令解压时需要用到),为美观简洁,将mongo压缩包更名为mongodb.tgz

创建目录(在根目录输入):

mkdir -p opt/servers/mongodb_demo/
tar -zxvf mongodb.tgz -C opt/servers/mongodb_demo/

这个目录是为方便与教师在课程中教授的一致性,你可自行设置。

1)、创建日志文件

但压缩包中没有给到日志文件,所以需要手动创建:

cd opt/servers/mongodb_demo/mkdir -p standalone/data/db/mkdir standalone/logs/touch standalone/logs/mongologs.log

2)、设置环境变量

vim ~/.bashrc

然后在文件最后一行加入:

export PATH=opt/servers/mongodb_demo/mongodb/bin:$PATH

3)、测试是否安装成功

指令集启动(这里要回到用户的根目录使用cd ~):

Mongod --dbpath=opt/servers/mongodb_demo/standalone/data/db/ --logpath=opt/servers/mongodb_demo/standalone/logs/mongologs.log --logappend --fork

若控制台出现:child process started successfully,parent exiting

表示启动成功,直接使用mongo进入

查看是否启动(出现了上面的提示,就无需再做下面这一步):

ps -aux|grep mongo

当然,这里的安装仅仅只是安装好了基本mongo,若你需要远程连接请查看创建mongod.conf文件步骤。

2、数字错误

1号错误

(原因是没有启动Mongo);

100号错误

mongo.lock与storage.bson文件与启动产生冲突,可尝试以下几种方式解决:

  1. 删除以上两个文件
  2. 找到你安装mongo目录下的data文件,将data文件下的log全部删除(注意,这里可能会影响到你将data目录下的db目录也一起删除,删除之后要去查看一下),最后使用上面副本集的命令启动mongo服务

48号错误

解决方式尝试与100号错误的方式。

48号与100号这两个错误,一般情况下会在一个错误解决之后,紧接其后。


3、创建mongod.conf文件

进入mongodb目录创建

cd opt/servers/mongodb_demo/mongodbmkdir conf/vim conf/mongod.conf

将以下内容复制进mongod.conf文件

systemLog:# MongoDB发送所有日志输出的目标指定为文件# The Path of the log file to which mongos should send all diagnostic# logging informationdestination: file# mongod发送所有诊断日志记录信息的日志文件的路径path: "opt/servers/mongodb_demo/standalone/logs/mongologs.log"# 当mogod重启时,mongod会将新条目附加到现有日志文件的末尾logAppend: true
storage:dbPath: "opt/servers/mongodb_demo/standalone/data/db/"journal:# 启用或禁用持久性日志,以确保文件保持有效和可恢复enabled: true
processManagement:# 启用在后台运行mongod的守护进程模式fork: true
#添加用户访问权限
net:bindIp: 0.0.0.0port: 27017
#security:#authorization: enabled 

开启服务

mongod -f opt/servers/mongodb_demo/mongodb/conf/mongod.conf

当要用外部连接时,需启动此服务。

成功后,在命令行输入mongo便可进入。

有关Java、Python连接MongoDB操作会单独出一份文章,大家可浏览:(还未上传)


二、Ubuntu创建mongo副本集

1、克隆虚拟机

为减少内存占用空间,这里克隆选择链接克隆,将主虚拟机克隆两个出来。

 

一直点击下一步即可。

这里需要注意,许多同学无论是使用Centos、Red Hat还是Ubuntu当自己的虚拟机无法安装或操作某款产品,便会克隆(或者说拷取)自己同学的虚拟机,但这是没有用的,当他人的虚拟机克隆(拷取)到另外一台设备时,此虚拟机便是新机状态。


2、网卡配置

网卡的配置是为了更方便与三台虚拟机互通的便捷性。以自拟的简短主机名实现快速互通。

网络上关于Ubuntu系统网络配置对于最新版的Ubuntu已经不再试用,当你尝试网络上给出的网卡配置的方法,命令敲下去会发现有这么几种情况;

  1. 空信息
  2. 只有不到十行
  3. 特别多的文件内容,跟你要找的网卡配置压根不对成

其次目前是没有找到任何有关Ubuntu的网络配置文件,而网络中有关配置mongo副本集都提到要修改主机名(这里为方便辨认),紧接着设置静态IP地址,然后将副本机的IP地址放入到网络文件中,让三天设备实现互ping的状态。

这个项目就卡了我差不多半天左右的时间,还是放弃网络搜索,自己弄一下吧。

1)、更改主机名

查看目前的主机名:

sudo nmcli g hostname

修改主机名:

sudo nmcli g hostname (这里写你要修改后的主机名)

重启服务

sudo systemctl restart systemd-hostnamed

2)、查看IP地址

ifconfig

ifconfig

3)、实现主机映射

sudo vim /etc/hosts

将自己三台虚拟机的IP地址放入此文件中,IP地址和主机名要对应好,空格隔开。完成后使用ping命令测试是否能够互通。

ping 主机名 -c 3

若出现字节数,便显示成功。


2、以副本集启动mongo(回到根目录cd ~)

mongod --replSet itcast --dbpath=opt/servers/mongodb_demo/standalone/data/db/ --logpath=opt/servers/mongodb_demo/standalone/logs/mongologs.log --port 27017 --bind_ip 当前主机名 --logappend --fork

1)、启动

mongo --host 主机名 --port 27017

2)、检查是否以副本集形式启动

rs.initiate()

这个命令也是将当前虚拟机升级为主节点的方式。

若显示出以上数据,则表示成功,如果里面显示76号,则是启动方式错误(不是以副本集的方式启动的)。


三、配置副本集

1、查看目前的副本集

rs.status()

因为上面已经将一个主机的Mongo升级为主节点,下面的操作均基于主节点的主机操作。

2、插入副本集

rs.add(“副主机名:27017”)

显示ok则成功,进入副本机查看是否成为副本节点,在副本节点中按回车即可看到输入行前为SECOND则成功。

3、添加仲裁者

rs.addArb("主机名:27017")

4、优先级设置

优先级用来描述一个备份节点成为主节点的优先性问题,优先级的取值范围为[0-100]。

默认为1,数字越大优先级越高,越有可能成为主节点,0表示该节点永远不能成为主节点。

1)、添加节点时设置优先级

rs.add({_id:0,host:”主机名:27017”,priority:整数取值范围})

2)、已有节点设置优先级

config=rs.config()config.members[0].priority=99rs.reconfig(config)

四、分片搭建

1、三台主机建立路径和log文件

# 命令行输入
mkdir -p opt/servers/mongodb_demo/shardcluster/configServer/{configFile,data,logs}mkdir -p opt/servers/mongodb_demo/shardcluster/shard/{configFile,shard1_data,shard2_data,shard3_data,logs}mkdir -p opt/servers/mongodb_demo/shardcluster/mongos/{configFile,logs}touch opt/servers/mongodb_demo/shardcluster/shard/logs/{shard1.log,shard2.log,shard3.log}touch opt/servers/mongodb_demo/shardcluster/configServer/logs/config_server.logtouch opt/servers/mongodb_demo/shardcluster/mongos/logs/mongos.log

2、三台主机建立启动文件

vim opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf

将以下的内容放入mongodb_config.conf文件中


dbpath=opt/servers/mongodb_demo/shardcluster/configServer/data
logpath=opt/servers/mongodb_demo/shardcluster/configServer/logs/config_server.log
port=27022    # 端口号
bind_ip=IP地址    # IP地址
logappend=true
fork=true
maxConns=5000
replSet=configs
configsvr=true

3、三台主机启动Config Server

mongod -f opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf

启动客户端(测试)

mongo --host 主机名 --port 27022   #启动客户端

4、配置Config Server服务器的主节点

vim opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.confvim opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.confvim opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf

每个文件内的信息如下:

dbpath=opt/servers/mongodb_demo/shardcluster/shard/shard1_data
logpath=opt/servers/mongodb_demo/shardcluster/shard/logs/shard1.log
port=27019
bind_ip=nosql01    # 主机名
logappend=true
fork=true
maxConns=5000
shardsvr=true
replSet=shard1

5、运行刚刚配置的文件

mongod -f opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.confmongod -f opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.confmongod -f opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf

6、Config Server(路由)配置

vim opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf

将以下内容添加进文件,三天主机均需执行这项操作

logpath=opt/servers/mongodb_demo/shardcluster/mongos/logs/mongos.log
logappend=true
port=27021
bind_ip=nosql01
#fork=true
#指定配置服务器(Config Server)地址
configdb=configs/主机1名:27022,主机2名:27022,主机3名:27022
maxConns=20000

7、运行路由

运行前需执行shard1、shard2、shad3以及mongodb_config.conf路由配置文件

mongos -f opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf

8、进入路由

mongo --host 主机名 --port 27021

以上是关于Ubuntu安装MongoDB的操作流程,若你在操作过程中出现错误,可在评论区留言~

Ubuntu20.04安装MongoDB相关推荐

  1. 优麒麟Ubuntu20.04安装各种问题

    优麒麟Ubuntu用了六年了,版本旧了,所以按照20.04版. 1.adobe-flashplugin的安装极其慢 慎重啊!需要好几个小时,无法忍受啊! 2.dpkg被中断的解决方法 关闭掉Ubunt ...

  2. ubuntu20.04 安装 Qt5.12步骤

    转载链接:ubuntu20.04 安装 Qt5.12_仙海寻波的博客-CSDN博客_ubuntu20.04安装qt第一步 下载 Qt5.12.9安装包使用清华镜像进行下载:https://mirror ...

  3. 了解Docker、Ubuntu20.04安装docker教程

    Docker 的前世今生 https://my.oschina.net/u/4126211/blog/4517028 Ubuntu20.04安装docker教程 https://blog.csdn.n ...

  4. ubuntu20.04安装ROS及常见问题

    ubuntu20.04安装ROS及常见问题 一.ubuntu安装参考(双系统) 1.ios镜像官网下载地址: https://releases.ubuntu.com/?_ga=2.239339907. ...

  5. Ubuntu20.04安装,并Linux微信等

    Ubuntu20.04安装,并Linux微信等 一.Ubuntu20.04双硬盘双系统安装 电脑状况:256G+260G双固态硬盘,其中256G(sda)分C.D盘安装win10,460G(sdb)硬 ...

  6. ubuntu20.04安装小鹤双拼输入法挂接音形改简体中文Rime

    ubuntu20.04安装小鹤双拼输入法挂接音形改简体中文Rime 方案1,按照这个挂接方法,原始的繁体等其他的也还在: 替换方案 方案2 修改成默认简体中文: 更改皮肤 设置-区域与语言-改成中文- ...

  7. 微星主板 Ubuntu20.04安装以及配置

    1 设置U盘启动 1)插入使用软碟通制作好的U盘,开机按del键进入BIOS: 2)Boot Option 中 选择U盘启动: 3)设置硬盘BBS(我也不知道是什么): 4)点击左边Settings, ...

  8. Ubuntu20.04安装NVIDIA显卡驱动、CUDA、CUDNN及突破NVENC并发限制

    1.查看当前系统版本 cat /proc/version 显示为: 2.查看当前显卡型号: sudo lshw -numeric  -C display 显示我的显卡型号为:GM107M[GeForc ...

  9. Ubuntu20.04安装yum

    Ubuntu20.04安装yum 1打开终端,备份你原来Ubuntu默认的源地址 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup ...

最新文章

  1. 隔年增长的题_行测资料分析:一起聊聊隔年增长
  2. 查询提升200倍,ClickHouse你值得拥有!
  3. python入门(13)获取函数帮助和调用函数
  4. batch normalization_常用的 Normalization 方法:BN、LN、IN、GN
  5. ASP.NET Page执行顺序如:OnPreInit()、OnInit()
  6. CVPR 2021 | 双图层实例分割,大幅提升遮挡处理性能
  7. boost::gregorian模块实现自出生以来的天数的测试程序
  8. 新电脑怎么分盘_电脑新系统装了杀毒软件之后,原本非常流畅,怎么突然变卡了?...
  9. 【CCF】201712-2游戏
  10. lvs web服务器不响应,lvs web服务器不响应
  11. python 深浅拷贝案例_python(深浅拷贝)
  12. mysql 联合主键_Mysql 创建联合主键
  13. 二、Python自动化运维入门(函数、模块)
  14. 深入浅出SCSI子系统(五)SCSI设备探测
  15. mysql添加字段 说明_MYSQL数据库MSSQL 添加字段说明
  16. 堪比熊猫烧香!中国新型蠕虫病毒大爆发!电脑瞬间报废
  17. 谷歌浏览器任何页面崩溃解决方法
  18. ES pinyin 插件 拼音搜索 原理 match_phase
  19. 谈谈EventTime以及Watermark
  20. CSS3 背景和边框

热门文章

  1. 抖音平台对短视频流量扶持力度大,现在加入来得及吗
  2. Android5g手机,Android 11为5种不同状态的5G手机做准备
  3. 绿标2.0达标秘笈之隐私安全问题破解
  4. IO多路转接 ——— select、poll、epoll
  5. 中国大学MOOC第10周编程题在线测试
  6. c语言编程题素数和,程序设计入门——C语言 第4周编程练习 1 素数和(5分)
  7. #1408 : The Lastest Time
  8. 指尖江湖李忘生鸿蒙初开,剑网3指尖江湖李忘生技能怎么搭配_李忘生技能搭配_3DM手游...
  9. SpringBoot +Vue前后端分离(笔记)
  10. python object的实例是什么_python中的type和object详解