mongodb副本集实现

前端之家收集整理的这篇文章主要介绍了mongodb副本集实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

<div class="toc">
<p class="toc-title">目录


<div class="toc-list">

MongoDB中的副本集是一组提供冗余和高可用性的mongod进程。副本集主要包含:primary,secondary和arbiter。

在副本集中只有一个,接收所有写操作,并把这些操作记录到primary的oplog里面,然后secondary将会复制这个oplog,并且将其在自己的数据集中执行一遍。
一个副本集可以有50个成员组成,但是只能有7个成员参与投票。

在副本集中有一个或者多个,secondary主要进行对primary的数据进行复制操作,来维持相同的数据。如果primary不可用了,副本集将会进行选举,选择出secondary变成新的primary。

arbiter不会进行数据的复制,也不能成为primary,只在选举primary的过程中参加投票。

系统环境:

  • 操作系统:CentOs 6.9

IP地址:

服务器
名称 IP 环境设置:

# tail /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
# echo "never">/sys/kernel/mm/transparent_hugepage/enabled
# echo "never">/sys/kernel/mm/transparent_hugepage/defrag

更改用户进程数限制

cat /etc/security/limits.d/90-nproc.conf

  • soft nproc 32768
    root soft nproc unlimited
    $ ulimit -u 32768

增加hosts解析

cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
mongodb1 192.168.1.2
mongodb2 192.168.1.3
mongodb3 192.168.1.4


<h2 id="安装mongodb">3.安装mongodb


<h3 id="安装mongodb-1">安装mongodb
<pre class="shell"># tar -xf mongodb-linux-x86_64-3.0.11.gz

mkdir /usr/local/mongodb

mv mongodb-linux-x86_64-3.0.11 /usr/local/mogodb

cd /usr/local/mongodb

按照要求创建数据日志配置文件目录

mkdir data logs conf

修改环境变量

$ echo 'export PATH=$PATH:/usr/local/mongodb/bin:' >> ~/.bash_profile
<h3 id="增加配置文件">增加配置文件

# vim conf/mongod.conf   
systemLog:
  destination: file
  path: /data/mongodb/log/mongo.log  # 指定日志文件路径
  logAppend: true
  logRotate: rename

storage:
journal:
enabled: true

dbPath: /data/mongodb/data/ # 指定数据文件路径
directoryPerDB: true
engine: wiredTiger

wiredTiger:
engineConfig:
directoryForIndexes: true

indexConfig:
  prefixCompression: true

replication:
oplogSizeMB: 1024
replSetName: "repset" # 指定副本集名称

processManagement:
fork: true # 后台运行

net:
port: 27001 # 端口
bindIp: 192.168.1.2 # 绑定IP


<h3 id="添加启动脚本">添加启动脚本

/etc/init.d/增加mongod启动脚本(/etc/init.d/mongodb):
该脚本是通过yanfa用户来启动mongodb。

#!/bin/bash
#
# chkconfig: - 80 90
# description:  Starts,stops mongodb
#
#########################################
#source function library.
. /etc/init.d/functions

return value

RETVAL=0
USER=yanfa
PROG="mongodb"
MONGODB_DIR=/usr/local/mongodb
MONGODB_CONF=$MONGODB_DIR/conf/mongod.conf
MONGODB_BIN=$MONGODB_DIR/bin/mongod

start(){
status $MONGODB_BIN &>/dev/null
RETVAL=$?
if [ $RETVAL -eq 3 ];then
sudo su - $USER -c "$MONGODB_BIN -f $MONGODB_CONF" &>/dev/null \
&& action "$PROG start..." /bin/true
elif [ $RETVAL -eq 0 ]; then
action "$PROG is running" /bin/true
else
action "$PROG is running" /bin/false
fi
}

stop(){
sudo su - $USER -c "$MONGODB_BIN -f $MONGODB_CONF --shutdown" &>/dev/null
if [ $? -eq 0 ];then
action "$PROG stopped" /bin/true
else
action "$PROG stopped" /bin/false
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $MONGODB_BIN
;;
version)
$MONGODB_BIN -version
;;
*)
echo $"Usage: $0 {start|stop|status|version}"
exit 2
;;
esac

添加执行权限:chmod +x /etc/init.d/mongodb
添加开机自启动:chkconfig --add mongodb

启动/关闭mongodb:

# 脚本启动mongo:
 /etc/init.d/mongodb start
# 脚本关闭mongo:
 /etc/init.d/mongodb stop

二进制文件启动和关闭

mongod -f /usr/local/mongodb/conf/mongod.conf
mongod -f /usr/local/mongodb/conf/mongod.conf --shutdown

登录mongodb数据库,创建副本集方法一:

$ mongo --host 192.168.1.2 --port 27001
# 切换到admin数据库
> use admin;  
# 初始化副本集
> rs.initiate(); #
#  查看当前副本集信息
repset:PRIMARY> rs.conf()
# 添加成员一
repset:PRIMARY> rs.add("192.168.1.3:27001")
# 添加成员一
repset:PRIMARY> rs.add("192.168.1.4:27001")
# 查看副本集的状态
repset:PRIMARY> rs.status()

查看副本集配置:rs.conf()
删除副本集中的成员:rs.remove('host:port')

创建副本集方法二:

> use admin;
> cfg={
... "_id":"repset",... "members":[
... {"_id":0,"host":"192.168.1.2:27001"},... {"_id":1,"host":"192.168.1.3:27001"},... {"_id":2,"host":"192.168.1.4:27001"}
... ]}
> rs.initiate(cfg)

mongo Shell中的复制方法

名称 描述 添加成员添加仲裁节点删除成员属性 原文链接:https://www.f2er.com/mongodb/238302.html

猜你在找的MongoDB相关文章