复制集的选举简介
MongoDB复制集的节点是通过选举产生主节点
复制的原理复制是基于操作日志oplog,相当于MySQL中的二进制日志,只记录发生改变的记录。复制是将主节点的oplog日志同步并应用到其他从节点过程
选举的原理节点类型分为标准(host)节点、被动(passive)节点和仲裁(arbiter)节点
1.只有标准节点可能被选举为主(primary)节点,有选举权;被动节点有完整副本,只能作为复制集保存,不可能成为主节点,没有选举权;仲裁节点不存放数据,只负责投票选举,不可能成为主节点,不存放数据,依然没有选举权
2.标准节点与被动节点的区别:priority值高者是标准节点,低者则为被动节点
3.选举规则是票数高者获胜,priority是优先权为0~1000的值,相当于额外增加0~1000的票数。选举结果:票数高者获胜;若票数相同,数据新者获胜 一、安装MongoDB 1、自定义yum源文件
[root@RedHat7_6 ~]# cd /etc/yum.repos.d/
[root@redhat7_6 yum.repos.d]# mkdir bak
[root@redhat7_6 yum.repos.d]# mv CentOS-* bak/
[root@redhat7_6 yum.repos.d]# vim local.repo
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
2、安装MongoDB
[root@redhat7_6 ~]# yum -y install mongodb-org
[root@redhat7_6 ~]# yum clean all #清除yum缓存
[root@redhat7_6 ~]# yum list #重新加载源
[root@redhat7_6 ~]# mkdir -p /data/mongodb/mongodb{1,2,3,4} #创建数据目录
[root@redhat7_6 ~]# mkdir -p /data/logs/mongodb #创建日志目录
[root@redhat7_6 ~]# cd /data/logs/mongodb/
[root@redhat7_6 mongodb]# touch mongodb{1,2,3,4}.log #创建日志文件
[root@redhat7_6 mongodb]# chmod 777 *.log #修改目录权限
[root@redhat7_6 ~]# cp -p /etc/mongod.conf /etc/mongod1.conf
[root@redhat7_6 ~]# vim /etc/mongod1.conf #修改配置文件
path: /data/logs/mongodb/mongodb1.log #约第10行,编辑日志文件路径,对应其他的实例依次往下……
dbPath: /data/mongodb/mongodb1/ #编辑数据目录文件路径,也是一样对应其他的实例依次往下……
net: #约28行,指定网络接口
port: 27017 #编辑端口号,实例1为27017,实例2为27018,依次往下排……
bindIp: 0.0.0.0
replication: #约37行,打开复制选项注释,四台实例都要添加
replSetName: kgcrs #指定复制集名称
[root@redhat7_6 ~]# cp -p /etc/mongod1.conf /etc/mongod2.conf #创建其他三个MongoDB实例配置文件
[root@redhat7_6 ~]# cp -p /etc/mongod1.conf /etc/mongod3.conf
[root@redhat7_6 ~]# cp -p /etc/mongod1.conf /etc/mongod4.conf
[root@redhat7_6 ~]# rm -rf /etc/mongod.conf
[root@redhat7_6 ~]# vim /etc/init.d/mongodb
#!/bin/bash
# descript:Mongodb Server Control Script
# Author: GuiHaiYiDao TEL:139741741741
# date:long long ago
instance=$1
action=$2
case "$action" in
'start')
/usr/bin/mongod -f /etc/"$instance".conf
;;
'stop')
/usr/bin/mongod -f /etc/"$instance".conf --shutdown
;;
'restart')
/usr/bin/mongod -f /etc/"$instance".conf --shutdown
/usr/bin/mongod -f /etc/"$instance".conf
;;
esac
[root@redhat7_6 ~]# chmod +x /etc/init.d/mongodb
[root@redhat7_6 ~]# /etc/init.d/mongodb mongod1 start
[root@redhat7_6 ~]# /etc/init.d/mongodb mongod2 start
[root@redhat7_6 ~]# /etc/init.d/mongodb mongod3 start
[root@redhat7_6 ~]# /etc/init.d/mongodb mongod4 start