mongodb安装和副本集的搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb安装和副本集的搭建相关的知识,希望对你有一定的参考价值。

CentOS 编译安装 Mongodb Centos 7.0 + Mongodb 2.6.6 (实测 笔记 )

环境:

系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡)

系统版本:CentOS-7.0-1406-x86_64-DVD.iso
安装步骤:


1.安装基本软件包

[[email protected] ~]# yum install vim wget lsof gcc gcc-c++ bzip2 -y

[[email protected] ~]# yum install net-tools bind-utils -y
1.3 显示IP地址 (centos7需要先安装 net-tools bind-utils包)

[[email protected] ~]# ifconfig|grep inet

inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255

 

2.编译安装mongodb

2.1 下载包
[[email protected] ~]# cd /usr/local/src/

[[email protected] ~]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.6.tgz

[[email protected] ~]# tar -zvxf mongodb-linux-x86_64-2.6.6.tgz

[[email protected] ~]# mv mongodb-linux-x86_64-2.6.6 /opt/mongodb/

 

2.2 配置path环境变量,确保mongodb的bin目录包含在path环境变量中。

[[email protected] ~]# vim /etc/profile

找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL,在这行上面添加以下内容:

#set for mongodb
export MONGODB_HOME=/opt/mongodb
export PATH=$MONGODB_HOME/bin:$PATH

保存退出
[[email protected] ~]# echo $PATH

[[email protected] ~]# source /etc/profile

[[email protected] ~]# echo $PATH

[[email protected] ~]# mongod -version

显示以下内容,则表示安装成功
db version v2.6.6
2014-12-18T11:02:15.100+0800 git version: 608e8bc319627693b04cc7da29ecc300a5f45a1f
2.3 建立存储数据及日志的目录:

[[email protected] ~]# mkdir -p /data/mongodb/journal

[[email protected] ~]# mkdir -p /data/mongodb/log

[[email protected] ~]# touch /data/mongodb/log/mongodb.log
2.4 增加mongodb用户及设置权限

[[email protected] ~]# useradd mongodb -M -s /sbin/nologin

[[email protected] ~]# chown -R mongodb.mongodb /data/mongodb
2.5 建立配置文件

[[email protected] ~]# vim /etc/mongodb.conf

输入以下内容

dbpath=/data/mongodb
logpath=/data/mongodb/log/mongodb.log
logappend=true
port=27017
fork=true
noauth=true
nojournal = true
smallfiles = true
noprealloc = true

httpinterface = true

replSet=rs                ==========设置副本集群的时候的集群名称

bind_ip=172.16.2.117     =========== 不同的机器绑定本机ip 不同               

 

保存,退出

# **********************************************
#  mongodb的参数说明:
#
#  --dbpath 数据库路径(数据文件)
#  --logpath 日志文件路径
#  --master 指定为主机器
#  --slave 指定为从机器
#  --source 指定主机器的IP地址
#  --pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,

#    最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
#  --logappend 日志文件末尾添加
#  --port 启用端口号
#  --fork 在后台运行
#  --only 指定只复制哪一个数据库
#  --slavedelay 指从复制检测的时间间隔
#  --auth 是否需要验证权限登录(用户名和密码)
2.6 将mongod服务加到开机启动服务

[[email protected] ~]# vim /lib/systemd/system/mongodb.service

输入以下内容

[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/data/mongodb/mongod.lock
ExecStart=/opt/mongodb/bin/mongod -f /etc/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
保存,退出
[[email protected] ~]# systemctl enable mongodb.service

[[email protected] ~]# systemctl list-unit-files|grep enabled|grep mongodb

[[email protected] ~]# systemctl daemon-reload

[[email protected] ~]# systemctl start mongodb.service

[[email protected] ~]# systemctl status mongodb.service -l
3 测试数据库是否正常

[[email protected] ~]# ps -ef|grep mongod

[[email protected] ~]# mongo admin

添加admin用户名密码,使用创建的用户登录MongoDB:

> show dbs

> use admin

> db.addUser('admin','manager')

> db.auth('admin','manager')

> show collections

> db.system.users.find()

> exit
4 防火墙添加27017端口

[[email protected] ~]# iptables -L|grep ACCEPT

[[email protected] ~]# firewall-cmd --zone=public --add-port=27017/tcp --permanent

[[email protected] ~]# firewall-cmd --reload

[[email protected] ~]# iptables -L|grep ACCEPT

 

 

5)配置服务器的副本集群

Jenkins     172.16.2.117    (仲裁

Agent       172.16.2.134    (副本

Host        172.16.2.177    (主机

 

首先登陆host服务器

mongo --port 27017 --host 172.16.2.177

技术分享图片 

初始化副本集

 

rs.initiate()

 

rs.conf()

 

rs.add("172.16.2.134:27017")

 

rs.addArb("172.16.2.117:27017")

 

rs.status()

 技术分享图片

技术分享图片

技术分享图片

 

 

比如在主服务器上面插入10000条数据

mongo --port 27017 --host 172.16.2.177

 use copp

for(var i=0;i<100000;i++){db.userInfo.insert({"userName":"user"+i,"depart":"towngas","userNo":"no."+i})}

db.userInfo.count();

 技术分享图片

在从库上面查询一下

要先执行:
rs.slaveOk();

再次查询

 

 技术分享图片

技术分享图片

如果主库宕机之后那么实现从库接替主库:

 技术分享图片

从库的状态

技术分享图片

技术分享图片 

 

从库会接替主库的位置

如果主库启动之后会变成从库,那么从库依然是主库

 

 技术分享图片

技术分享图片

ZHUYI :arbiter 最为仲裁者,没有数据副本存储在本地,能读取复制集的信息


http://blog.csdn.net/chris_111x/article/details/52440003

可以参考


以上是关于mongodb安装和副本集的搭建的主要内容,如果未能解决你的问题,请参考以下文章

mongoDB副本集的搭建

mongodb--选举失败

MongoDB 副本集的常用操作及原理

Mongodb集群架构之副本集

mongod副本集的安装配置

亲测教你如何搭建 MongoDB 复制集 + 选举原理