1. 下载mongodb

下载地址:https://www.mongodb.org/dl/linux/x86_64-rhel62

2. 解压
tar zxf mongodb-linux-x86_64-rhel62-v3.2-latest.tgz
mv mongodb-linux-x86_64-rhel62-3.2.5-20-g07e21d8/ /usr/local/mongodb

3. 添加环境变量
echo "export PATH=$PATH:/usr/local/mongodb/bin" > /etc/profile.d/mongodb.sh
source /etc/profile.d/mongodb.sh

4. 创建mongodb组和用户
groupadd -r mongod && useradd -s /sbin/nologin -g mongod -r mongod

5. 创建mongodb数据库目录和日志目录并添加权限(目录改变启动脚本也需改变)
mkdir -p /home/mongodb/mongodata/
mkdir -p /home/mongodb/mongolog
chown -R mongod:mongod /home/mongodb/mongodata
chown -R mongod:mongod /home/mongodb/mongolog

6. 系统环境设置:
vim /etc/security/limits.conf
* soft nproc 640000
* hard nproc 640000
* soft nofile 640000
* hard nofile 640000

vim /etc/profile && source /etc/profile
ulimit -n 640000
ulimit -u 640000

7. 添加mongodb配置文件,并编辑profile文件
vim /etc/mongod_27018.conf
logpath=/home/mongodb/mongolog/mongod.log
logappend=true
fork=true
port=27018
dbpath=/home/mongodb/mongodata
pidfilepath=/home/mongodb/mongolog/27018.pid
oplogSize=4096
maxConns=640000
directoryperdb=true
nojournal=true
master=true
# source=192.168.131.130:27018
bind_ip=192.168.131.128

vim /etc/rc.d/rc.sysinit
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

8. 添加mongodb启动脚本,并设置为自启动
vim /etc/init.d/mongodb
chmod +x /etc/init.d/mongodb
chkconfig --add mongodb
chkconfig mongodb on

#!/bin/sh
# chkconfig: 2345 93 18
# description:MongoDB

#默认参数设置
#mongodb 家目录
MONGODB_HOME=/usr/local/mongodb

#mongodb 启动命令
MONGODB_BIN=$MONGODB_HOME/bin/mongod

#mongodb 配置文件
MONGODB_CONF=/etc/mongod_27018.conf

#mongodb PID
MONGODB_PID=/home/mongodb/mongolog/27018.pid

#最大文件打开数量限制
SYSTEM_MAXFD=640000

#mongodb 名字
MONGODB_NAME="mongodb"
. /etc/rc.d/init.d/functions

if [ ! -f $MONGODB_BIN ]
then
echo "$MONGODB_NAME startup: $MONGODB_BIN not exists! "
exit
fi


start(){
ulimit -HSn $SYSTEM_MAXFD
$MONGODB_BIN --config="$MONGODB_CONF"
ret=$?
if [ $ret -eq 0 ]; then
action $"Starting $MONGODB_NAME: " /bin/true
else
action $"Starting $MONGODB_NAME: " /bin/false
fi

}

stop(){
PID=$(ps aux |grep "$MONGODB_NAME" |grep "$MONGODB_CONF" |grep -v grep |wc -l)
if [[ $PID -eq 0 ]];then
action $"Stopping $MONGODB_NAME: " /bin/false
exit
fi
kill -HUP `cat $MONGODB_PID`
ret=$?
if [ $ret -eq 0 ]; then
action $"Stopping $MONGODB_NAME: " /bin/true
rm -f $MONGODB_PID
else
action $"Stopping $MONGODB_NAME: " /bin/false
fi

}

restart() {

stop
sleep 2
start
}

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
esac

9. 启动mongodb,创建数据库用于测试
# service mongodb start
# mongo IP:PORT
> use test;
> db.doubi.insert({"name":"tutorials yiibai"})

10. 创建从服务器,步骤同上,更改配置文件
# vim /etc/mongod_27018.conf
logpath=/home/mongodb/mongolog/mongod.log
logappend=true
fork=true
port=27018
dbpath=/home/mongodb/mongodata
pidfilepath=/home/mongodb/mongolog/27018.pid
oplogSize=4096
maxConns=640000
directoryperdb=true
nojournal=true
slave=true
source=主ip:端口
bind_ip = 本机ip

11. 其他同主服务器一样配置即可,然后开启服务验证
出现Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 }
说明从服务器不允许读写,可以执行以下命令解决。
> rs.slaveOk();

12. 从服务器需要注意更改端口号和启动脚本

logpath=/home/mongodb/mongolog/mongod.log
logappend=true
fork=true
port=27018
dbpath=/home/mongodb/mongodata
pidfilepath=/home/mongodb/mongolog/27018.pid
oplogSize=4096
maxConns=640000
directoryperdb=true
nojournal=true
#master=true
slave=true
source=117.78.1.xx:27018

13. 开启zabbix自定义监控mongodb
vim /usr/local/zabbix/etc/zabbix_agentd.conf
265行
UnsafeUserParameters=1
UserParameter=MongoDB.Status[*],/bin/echo "db.serverStatus().$1" | /usr/local/mongodb/bin/mongo localhost:30001 | grep -w "$2" |cut -d, -f1|cut -d: -f2

UserParameter=MongoDB.exist[*],/bin/echo "db.serverStatus()" | /usr/local/mongodb/bin/mongo localhost:30000 |tail -3|head -1|cut -d: -f1|grep -o ok

UserParameter=MongoDB.exist[*],/bin/echo "db.serverStatus()" |mongo localhost:30000 |tail -3|grep -o ok
ok

重启agentd
套用模板
服务端验证:
/usr/local/zabbix/bin/zabbix_get -s 10.124.156.251 -k MongoDB.Status[*]

mongodb主从数据同步的更多相关文章

  1. 减少mysql主从数据同步延迟

    网上给出的解决办法: 基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了.如果延迟比较大,就先确认以下几个因素:1. 网络延迟2. master负载3. slave负 ...

  2. MongoDB 初始化数据同步

    MongoDB初始化数据同步: 副本集中的成员启动之后,就会检查自身的状态,确定是否可以从某个成员那里进行同步.如果不行的话,尝试从其他成员那里进行完整的数据复制. 这个过程就是初始化同步(initi ...

  3. logstash-out-mongodb实现elasticsearch到Mongodb的数据同步

    本文主要实现将Elasticsearch中的索引数据Index同步到Mongodb中的集合collection中. 0.前提 1)已经安装好源数据库:elasticsearch V2.X; 2)已经安 ...

  4. MySQL主从数据同步延时分析

    一.MySQL数据库主从同步延迟                                                              要了解MySQL数据库主从同步延迟原理,我们 ...

  5. mysql 主从数据同步配置

    一主一从,单向同步 master 数据库的数据变更单向同步到 slave 数据库 互为主从,双向同步 master 数据库的数据变更同步到 slave 数据库,slave 数据库的数据边同步到 mas ...

  6. Mysql主从数据同步cheksum问题

    做主从同步时出现问题,show slave status显示错误: Last_IO_Error: Got fatal error from master when reading data from ...

  7. 使用bind实现主从DNS服务器数据同步

    一.bind简介 Linux中通常使用bind来实现DNS服务器的架设,bind软件由isc(www.isc.org)维护.在yum仓库中可以找到软件,配置好yum源,直接使用命令yum instal ...

  8. Docker环境下的Mysql8 实现主从数据库数据同步方案

    本文记录下通过MySQL Replication在Docker环境下,通过多个容器 实现数据库主从配置. MySQL Replication就不多解释了,简单说就是MySQL非常出色的一个功能,该功能 ...

  9. Tapdata Real Time DaaS 技术详解 PART I :实时数据同步

      摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战.Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活 ...

随机推荐

  1. Guava学习笔记:复写的Object常用方法

    在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法.每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这 ...

  2. TestNG官方文档中文版(4)-运行TestNG

    4 - 运行TestNG TestNG可以以不同的方式调用: * Command line     * ant     * Eclipse     * IntelliJ's IDEA 1) 命令行 假 ...

  3. 网上图书商城1--User模块

    1. 注册 $(function() { /* * 1. 得到所有的错误信息,循环遍历之.调用一个方法来确定是否显示错误信息! */ $(".errorClass").each(f ...

  4. GJM: Unity3D AssetBundle 手记 [转载]

    这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对AssetBundle使用过程中的一些坑进行填补指引以及喷!   AssetBundle是Unity推荐的 ...

  5. 实用技巧:使用 jQuery 异步加载 JavaScript 脚本

    JavaScript 加载器在 Web 开发中是非常强大和有用的工具.目前流行的几个加载器,像 curljs.LABjs 和 RequireJS 使用都很广泛.他们功能强大的,但有些情况下可以有更简单 ...

  6. Method Draw – 很好用的 SVG 在线编辑器

    Method Draw 是一款在线 SVG 编辑器,是 SVG Edit 的一个分支.Method Draw 的目的是改进 SVG Edit 的可用性和用户体验.它移除了 line-caps/corn ...

  7. (转)JavaScript二:JavaScript语言的基本语法要求

    摘自:http://blog.csdn.net/erlian1992 要学习好JavaScript,首先我们要懂JavaScript语言的一些基本语法要求: 一,区分大小写 JavaScript语言区 ...

  8. AloneJs —— 简洁高效的JavaScript UI库

    以前做项目时用了一些第三方的JS UI库,项目比较low的时候用还行,一旦项目要求比较高,特别是交互比较复杂时,某些第三方UI库就显得无能为力,用起来也不顺手,改也不好改,所以我就自己基于jQuery ...

  9. Dotfuscator混淆加密

    混淆加密 1. 需要安装Dotfuscator软件 2. 安装好后打开软件,找到编译好的DLL文件 3. 打开[setting]设置属性,如下图: 把 Disable String Encryptio ...

  10. C# 获得MP4时长

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...