MongoDB复制选举原理及复制集管理

复制集的选举简介

MongoDB复制集的节点是通过选举产生主节点

复制的原理

复制是基于操作日志oplog,相当于MySQL中的二进制日志,只记录发生改变的记录。复制是将主节点的oplog日志同步并应用到其他从节点过程

选举的原理

节点类型分为标准(host)节点、被动(passive)节点和仲裁(arbiter)节点

MongoDB复制选举原理及复制集管理


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 #重新加载源

二、配置复制集 1、创建实例相关文件

[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 #修改目录权限

2、编辑实例1配置文件

[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                  #指定复制集名称

3、编辑其他实例配置文件

[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

4、编写启动脚本

[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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/64ec7c7ad5d25b3b41491790f7ca045a.html