MongoDB复制集(七)
MongoDB复制集(七)
一、mongo复制集简介
二、复制集创建和配置
1.如果之前开了mongo的服务,那么首先要结束掉mongo的服务
cmd:pkill -9 mongo
2.删除掉之前的dbs和log
cmd:rm -rf /home/m*
3.在三台机器上分别配置dbs和log(这里使用一台设备模拟三台设备做复制集,所以在一台设备上创建了三个数据库地址以及日志存放路径。)
mkdir -p /home/m17 /home/m18 /home/m19 /home/mlog
4.启动三个实例,并且申明属于同一个复制集
①、首先要切换到mongodb目录下,在执行下面的命令。
②、启动三个实例
./bin/mongod --dbpath /home/m17 --logpath /home/mlog/m17.log --fork --port 27017 --replSet fmong --journal --smallfiles -storageEngine=mmapv1
--dbpath:指定数据库路径
--logpath:指定日志存放路径
--fork:后台运行
--port:设置启动的端口
--replSet:设置同一个复制集,复制集的名称自定义
--journal:32linux需要这个参数才能启动,64位不需要这个参数
--smallfiles:启动时占用较小的空间,如果空间不是很缺少,一般不需要这个参数
-storageEngine:设置数据库的引擎,由于不支持wiredTiger引擎,需要切换支持的引擎,64位系统不需要切换引擎。
三个数据实例启动成功截图:
③、查看三个实例启动成功。
5、配置复制集文件,并初始化复制集
①、首先进入任意一个实例的mongo客户端命令模式
./bin/mongo
②、切换到admin
③、定义变量
var rsconf ={
_id:'fmong',
members:[
{
_id:0,
host:'192.168.135.1:27017'
},
{
_id:1,
host:'192.168.135.1:27018'
},
{
_id:2,
host:'192.168.135.1:27019'
}
]
}
查看变量是否生成打印变量名称: printjson(rsconf)
④、根据上面的配置做初始化:rs.initiate(rsconf)
⑤、查看初始化成功后,各个节点的状态:rs.status()
6、节点的增加与删除操作
①、删除节点:rs.remove('子节点的host:port')
②、查看删除节点后的复制集节点状态:rs.status()
③、增加节点:rs.add('子节点的host:port')(注意:使用增加节点命令添加的host必须是上面配置复制集变量包含的host在内的才可以添加,如果没有包含的host是添加不进去的。如果想添加没有包含的host需要修改复制集变量,才可以添加。)
7、修改复制集的节点变量和初始化
①、修改之前的复制集变量,只需要修改里面的host子节点即可。例如:将三台设备修改为两台设备。
②、修改完的变量,初始化要使用reconfig方法。
三、复制集添加数据
①、在主节点上添加一条数据。
②、退出主节点,进入子节点
③、查看子节点数据,如果发现报错为
原因:子节点只能和主节点通信,别人不能操作,需要将slaveOK改为可操作。需要执行如下命令:
rs.slaveOk()
查看数据,已经同步到27018子节点上。
四、模拟主节点宕机,启动子节点为主节点
①、首先在主节点命令下,切换到admin数据库,然后执行关闭主节点。
②、登录子节点
五、复制集常用方法
1、检查哪台设备是主节点:db.isMaster()