目录
为什么用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版本。
大数据对当前数据的存储、访问以及管理均带来了前所未有的挑战。而传统关系数据库的ACID原则、结构规整以及表连接操作等特性成为制约海量数据存储和并发访问的瓶颈。
NoSQL数据库就是为了解决海量数据库的存储、并发访问以及扩展而出现的,它具有数据模型灵活、并发访问度高、易于扩展和伸缩、开发效率高以及开发成本低等优点。
下载链接:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-5.0.7.tgz
这里要注意mongo下载的版本,如果你是Ubuntu就选对应的Ubuntu版本,其他虚拟机一样。
使用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/
这个目录是为方便与教师在课程中教授的一致性,你可自行设置。
但压缩包中没有给到日志文件,所以需要手动创建:
cd opt/servers/mongodb_demo/
mkdir -p standalone/data/db/
mkdir standalone/logs/
touch standalone/logs/mongologs.log
vim ~/.bashrc
然后在文件最后一行加入:
export PATH=opt/servers/mongodb_demo/mongodb/bin:$PATH
指令集启动(这里要回到用户的根目录使用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文件步骤。
(原因是没有启动Mongo);
mongo.lock与storage.bson文件与启动产生冲突,可尝试以下几种方式解决:
- 删除以上两个文件
- 找到你安装mongo目录下的data文件,将data文件下的log全部删除(注意,这里可能会影响到你将data目录下的db目录也一起删除,删除之后要去查看一下),最后使用上面副本集的命令启动mongo服务
解决方式尝试与100号错误的方式。
48号与100号这两个错误,一般情况下会在一个错误解决之后,紧接其后。
进入mongodb目录创建
cd opt/servers/mongodb_demo/mongodb
mkdir conf/
vim conf/mongod.conf
将以下内容复制进mongod.conf文件
systemLog:
# MongoDB发送所有日志输出的目标指定为文件
# The Path of the log file to which mongos should send all diagnostic
# logging information
destination: 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.0
port: 27017
#security:
#authorization: enabled
mongod -f opt/servers/mongodb_demo/mongodb/conf/mongod.conf
当要用外部连接时,需启动此服务。
成功后,在命令行输入mongo便可进入。
有关Java、Python连接MongoDB操作会单独出一份文章,大家可浏览:(还未上传)
为减少内存占用空间,这里克隆选择链接克隆,将主虚拟机克隆两个出来。
一直点击下一步即可。
这里需要注意,许多同学无论是使用Centos、Red Hat还是Ubuntu当自己的虚拟机无法安装或操作某款产品,便会克隆(或者说拷取)自己同学的虚拟机,但这是没有用的,当他人的虚拟机克隆(拷取)到另外一台设备时,此虚拟机便是新机状态。
网卡的配置是为了更方便与三台虚拟机互通的便捷性。以自拟的简短主机名实现快速互通。
网络上关于Ubuntu系统网络配置对于最新版的Ubuntu已经不再试用,当你尝试网络上给出的网卡配置的方法,命令敲下去会发现有这么几种情况;
- 空信息
- 只有不到十行
- 特别多的文件内容,跟你要找的网卡配置压根不对成
其次目前是没有找到任何有关Ubuntu的网络配置文件,而网络中有关配置mongo副本集都提到要修改主机名(这里为方便辨认),紧接着设置静态IP地址,然后将副本机的IP地址放入到网络文件中,让三天设备实现互ping的状态。
这个项目就卡了我差不多半天左右的时间,还是放弃网络搜索,自己弄一下吧。
查看目前的主机名:
sudo nmcli g hostname
修改主机名:
sudo nmcli g hostname (这里写你要修改后的主机名)
重启服务
sudo systemctl restart systemd-hostnamed
ifconfig
sudo vim /etc/hosts
将自己三台虚拟机的IP地址放入此文件中,IP地址和主机名要对应好,空格隔开。完成后使用ping命令测试是否能够互通。
ping 主机名 -c 3
若出现字节数,便显示成功。
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
mongo --host 主机名 --port 27017
rs.initiate()
这个命令也是将当前虚拟机升级为主节点的方式。
若显示出以上数据,则表示成功,如果里面显示76号,则是启动方式错误(不是以副本集的方式启动的)。
rs.status()
因为上面已经将一个主机的Mongo升级为主节点,下面的操作均基于主节点的主机操作。
rs.add(“副主机名:27017”)
显示ok则成功,进入副本机查看是否成为副本节点,在副本节点中按回车即可看到输入行前为SECOND则成功。
rs.addArb("主机名:27017")
优先级用来描述一个备份节点成为主节点的优先性问题,优先级的取值范围为[0-100]。
默认为1,数字越大优先级越高,越有可能成为主节点,0表示该节点永远不能成为主节点。
rs.add({_id:0,host:”主机名:27017”,priority:整数取值范围})
config=rs.config()
config.members[0].priority=99
rs.reconfig(config)
# 命令行输入
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.log
touch opt/servers/mongodb_demo/shardcluster/mongos/logs/mongos.log
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
mongod -f opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf
mongo --host 主机名 --port 27022 #启动客户端
vim opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.conf
vim opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.conf
vim 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
mongod -f opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.conf
mongod -f opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.conf
mongod -f opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf
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
运行前需执行shard1、shard2、shad3以及mongodb_config.conf路由配置文件
mongos -f opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf
mongo --host 主机名 --port 27021
以上是关于Ubuntu安装MongoDB的操作流程,若你在操作过程中出现错误,可在评论区留言~