/yuanben/mongodb/mongodb/bin/mongo 192.168.0.11:27017
use admin
mgdb_rscfg={ _id:"yuanben-rs", members:[ {_id:0,host:'192.168.0.11:27017',priority:2}, {_id:1,host:'192.168.0.12:27017',priority:1},{_id:2,host:'192.168.0.13:27017',arbiterOnly:true}] }
rs.initiate(mgdb_rscfg)
通过rs.status()查看是否生效 生效后 mater slave的客户端命令显示皆有变化哦
8.2 设置从节点读权限
让slave节点支持读 *** 作,在slave节点上修改mongorc.js启动文件
vi ~/.mongorc.js
加入以下内容即可:
setSlaveOk()
function setSlaveOk() {
rs.slaveOk()
print('slaveOk has been setted!’)
}
需要重启这个节点
kill -2 12595
./start.sh
8.3 创建用户
use admin
db.createUser(
{
user: “root”,
pwd: “xxxxxx”,
roles: [ { role: "root", db: "admin" } ]
}
)
db.createUser(
{
user: “scms”,
pwd: “xxxxxx”,
roles: [ { role: "readWrite", db: "scms" },{ role: "dbOwner", db: "scms" } ]
}
)
mongoDB主从数据同步主库数据小于从库,从库回滚到跟主库同步状态
从上可知,假如原来主从数据同步出了问题,主库数据量远大于从库数据量,而你并没有察觉,某次主、从、仲裁进程全部挂了
如果先起原来从库和仲裁,将原来从库选举为现在PRIMARY,然后再启原来的主库成为现在的从库,那么就会导致原来的主库也就是现在的从库数据发生回滚
显然这不是你想看到的的情况,所以务必先启动原来的主库,让其也成为现在的主库,避免此类问题的发生!
针对primary-secondary-arbiter架构,mongoDB的实例重启:
1.从arbiter日志中获取之前主节点IP
2.启动primary节点mongo进程
3.启动arbiter节点的mongo进程
4.启动secondary节点mongo进程
$ cat hosts
$ cat start_primary-secondary-arbiter.yml
$ ansible-playbook -i hosts start_primary-secondary-arbiter.yml
mongoDB副本集 stateStr状态说明
https://www.jianshu.com/p/7f196c22af43
mongodb 集群搭建的方式有三种:
首先我们先来了解一下Mongo集群的概念,Mongo集群有3个主要组件
ConfigServer:在集群中扮演存储整个集群的配置信息,负责配置存储,如果需要高可用的ConfigServer那么需要3个节点。
Shard:分片,存储真实的数据,每一个Shard分片都负责存储集群中的数据,例如一个集群有3个分片,然后我们定义分片规则为哈希,那么整个集群的数据就会(分割)到3个分片中的某一个分片,那么分片是特别重要的,如果集群中的一个分片全部崩溃了那么集群将不可用,所以我们要保证集群的高可用,那么我们需要一个分片配置3个节点,2个副本集一个仲裁节点,仲裁节点类似于Redis的哨兵模式,如果发现主节点挂了那么让另一个副本集进行数据存储。
Mongos:Mongos我们可以理解为整个集群的入口,类似于Kafka的Broker代理,也就是客户端,我们通过客户端连接集群进行查询。
下面是MongoDB的官方集群架构图,我们看到Mongos是一个路由,他们的信息都存储在ConfigServer中,我们通过Mongos进行添加,然后根据条件将数据进行分片到分片的副本集中
首先我们搭建两个config-server
创建两个config-server的配置文件
然后配置文件中配置端口
然后启动容器
然后进入容器初始化
如果ok为1表示成功
下面我们给每个server创建2个分片
创建挂载文件
创建配置文件
然后启动容器
进入第一个分片
进入第二个分片
创建挂载文件
然后启动Mongo
mongo添加分片组
新建数据启用分片
那么我们先来总结一下我们搭建一个高可用集群需要多少个Mongo
mongos : 3台
configserver : 3台
shard: 3片
每一片shard 分别 部署两个副本集和一个仲裁节点 : 3台
那么就是 3 + 3 + 3 * 3 = 15 台,我这里演示采用3台服务器
114.67.80.169 4核16g 部署一个configserver,一个mongos,2个分片组
182.61.2.16 2核4g 部署一个configserver,一个mongos,1个分片组
106.12.113.62 1核2g 部署一个configserver,一个mongos,不搭建分片组
由于此处服务器原因所以不是均衡分布,请根据自身实际情况搭建
我们先来搭建ConfigServer,因为我们知道搭建的话一定要高可用而且一定要权限这里mongo之间通信采用秘钥文件,所以我们先进行生成
创建挂载文件目录
写入配置文件
然后生成keyFile
文件如下,我们,之后我们所以key都采用这个(请采用自己生成的key)
写入key文件
然后启动config-server1容器
创建挂载文件目录
写入配置文件
写入配置文件
文件如下,我们,之后我们所以key都采用这个(请采用自己生成的key)
写入key文件
然后启动config-server2容器
创建挂载文件目录
写入配置文件
文件如下,我们,之后我们所以key都采用这个(请采用自己生成的key)
写入key文件
然后启动config-server3容器
进入第一台容器
输入
如果返回ok则成功
然后我们创建用户
由于mongos是客户端,所以我们先搭建好config以及shard之后再搭建mongos。
在同一台服务器上初始化一组分片
创建挂载文件
配置配置文件
创建keyfile
运行shard1分片组
并且制定第三个副本集为仲裁节点
返回ok后创建用户
然后退出,分片组1搭建完成
在同一台服务器上初始化一组分片
创建挂载文件
配置配置文件
创建keyfile
运行shard2分片组
并且制定第三个副本集为仲裁节点
返回ok后创建用户
然后退出,分片组2搭建完成
在同一台服务器上初始化一组分片
创建挂载文件
配置配置文件
创建keyfile
运行shard3分片组
并且制定第三个副本集为仲裁节点
返回ok后创建用户
然后退出,分片组3搭建完成
创建配置文件
填入配置文件,这里我们删除了认证的信息,因为mongos是不能设置认证的,他也是用的前面使用的密码即可,如configserver的密码
创建keyfile
运行mongos1
创建配置文件
填入配置文件,这里我们删除了认证的信息,因为mongos是不能设置认证的,他也是用的前面使用的密码即可,如configserver的密码
创建keyfile
运行mongos2
创建配置文件
填入配置文件,这里我们删除了认证的信息,因为mongos是不能设置认证的,他也是用的前面使用的密码即可,如configserver的密码
创建keyfile
运行mongos3
进入第一台mongos
先登录(使用前面设置的root用户密码)
进行配置分片信息
全部返回ok则成功
去其他两台mongos执行
mongos2
mongos3
创建用户
插入数据
openssl rand -base64 756 >mongo.key
清空server1两个分片数据
清空server2两个分片数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)