命令如图:mongod --keyFile /data/key/keyfile --replSet rs --bind_ip localhost,prod
二.Mongodb在服务器上的配置keyfile
这个keyfile怎么生成的我也没试过,官网有一些解释但是没说具体怎么生成如图:
我们需要把这个文件放在:
这些添加好就可以互相添加服务了如图:
其实就是各个容器是不互相影响的,如何让他们在互通就需要互相添加你要用的服务
这个名称如果不配置就用默认的,看你要不要配置
Prod:
Master:
Slave:
三.Mongodb集群测试是否成功:
参考文献: https://www.yiibai.com/mongodb/mongodb_quick_guide.html
四.Mongodb管理界面mongo-express搭建
成功日志:
五.Mongodb整合对外端口搭建haproxy
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。
www.mongodb.org/downloads
首先下载 brew官网中的mongodb规则,
下载成功时会有如下类似字眼:
在这里,我们安装mongodb的4.4版本,可使用如下命令安装:
安装成功后会有如下类似提示:
根据提示可知道,后台运行mongodb的方式:
停止后台服务:
前台运行的方式如下:
查看运行中的mongodb:
由以上可知道,已在运行中。
配置文件,/usr/local/etc/mongod.conf
日志目录:/usr/local/var/log/mongodb
数据目录:/usr/local/var/mongodb
可以直接在命令行下进入shell交互窗口
以json数组形式导出kk库的col集合的所有数据到mon.json文件中
以json数组的形式把mon.json里面的数据导入到kk库的 kcol集合中
查询中有一些特殊的操作符需要注意:
概括下查询相关的操作符 1.常规的比较查询操作符
2.常规的查询操作符
3.元数据查询操作符
4.聚合操作符
说明: 第一条命令,是往集合中添加一条数据;
第二条命令,是往集合中添加多条数据,insertMany的参数是数组形式;
说明: 第一条命令,是把值为1的x更改为值加3,x=4
第二条命令,是把所有值为1的x更改为值加3,x=4
第三条命令,是把值为1的x更改y,改的是key,值不变
更新相关的操作符
说明: 第一个命令是删除ac值为d的数据
第二个命令是删除ac值为a开头的数据,这里使用了mongo 的关键词“$regex”,意思后面的值是正则表达式
最后一个是删除collection下面的所有数据
安装成功后:
运行结果如下:
主从复制作用:数据备份、读写分离双机热备份:部署两个节点的MongoDB服务,配置一主一从,主节点添加数据,将自动备份到从节点上面,保证主机宕机后数据不丢失,同时可以继续提供数据读取服务(主服务挂掉,从服务将无法在进行写入数据,只能提供数据读取服务)
一主多从:部署多个节点的MongoDB服务,配置一主多从,数据也会自动备份到所有从节点上面,保证主机宕机后数据不丢失,同时可以根据从节点的优先级进行选取新的主节点,继续提供读写服务(主从关系跟服务设置的优先级有直接关系 优先级参数:priority 数字越大优先级越高)
使用上面的方式,在不同服务器上安装并启动MongoDB服务
将启动时使用的配置文件mongodb.conf中添加下面的副文本集名称配置,将权限控制参数改为false(auth=false),然后将服务进行重新启动即可(testrs是自定义的副本集名称)
#使用此设置来配置复制副本集。指定一个副本集名称作为参数,所有主机都必须有相同的名称作为同一个副本集
replSet=testrs
然后启动每个服务的客户端查看当前节点为主节点还是从节点;
1). 如果服务部署在不同服务器上,直接启动/bin目录下的mongo即可 命令:./ mongo
2). 如果服务部署在同一台服务器上,使用不同端口及配置文件进行启动的,启动客户端使用该命令 命令:./mongo 127.0.0.1:27018/
经过上面的一系列操作后,主从配置就完成了,接下来可以进行数据同步测试
第一步:在主库上面切换到admin,然后进行添加数据(命令:db.testdb1.insert([{"name":"zs"}]))
在从库上查询该数据(命令:db.testdb1.find({name:"zs"})),会出现下面如图的错误,因为从库没有查询数据权限,所以需要设置查询权限
设置从库查询权限,使用命令:rs.secondaryOk()
然后在使用查询命令进行查询(命令:db.testdb1.find({name:"zs"}))就会看到如下图的查询结果:
如上图所示,数据已经同步到从库上面了,这样双机热备份就已经实现了,上面的情况不包含权限控制
上面的情况已经完成了MongoDB的主从复制功能,但是我们把权限没有开放,启动时使用的配置中auth配置的值为false,说明没有添加权限,接下来就开放一下权限配置;
首先需要主从之间通信的一个keyFile文件,根据官网提供的说明,这个keyfile是可以任意内容的,只要保证所有集群中的机器都拥有同样的文件即可。
我这里将keyFile文件放到了MongoDB的bin目录下了,使用openssl rand -base64 1024 >/usr/local/mongodb-master/bin/mongodb.key 命令生成;
然后将mongodb.key文件复制到每台从服务上面,在每台服务的启动文件上添加 keyFile=/usr/local/mongodb-master/keyfile/mongodb.key 配置项 ,然后将auth属性值改为true,这样就完成了权限配置
重启主从两个节点,这样主机添加的数据,就会同步到从机上面了!!!
添加或删除从节点参考文章:
https://blog.csdn.net/weixin_44839444/article/details/105666163
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)