mongodb主从数据同步
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主从数据同步的更多相关文章
- 减少mysql主从数据同步延迟
网上给出的解决办法: 基于局域网的master/slave机制在通常情况下已经可以满足'实时'备份的要求了.如果延迟比较大,就先确认以下几个因素:1. 网络延迟2. master负载3. slave负 ...
- MongoDB 初始化数据同步
MongoDB初始化数据同步: 副本集中的成员启动之后,就会检查自身的状态,确定是否可以从某个成员那里进行同步.如果不行的话,尝试从其他成员那里进行完整的数据复制. 这个过程就是初始化同步(initi ...
- logstash-out-mongodb实现elasticsearch到Mongodb的数据同步
本文主要实现将Elasticsearch中的索引数据Index同步到Mongodb中的集合collection中. 0.前提 1)已经安装好源数据库:elasticsearch V2.X; 2)已经安 ...
- MySQL主从数据同步延时分析
一.MySQL数据库主从同步延迟 要了解MySQL数据库主从同步延迟原理,我们 ...
- mysql 主从数据同步配置
一主一从,单向同步 master 数据库的数据变更单向同步到 slave 数据库 互为主从,双向同步 master 数据库的数据变更同步到 slave 数据库,slave 数据库的数据边同步到 mas ...
- Mysql主从数据同步cheksum问题
做主从同步时出现问题,show slave status显示错误: Last_IO_Error: Got fatal error from master when reading data from ...
- 使用bind实现主从DNS服务器数据同步
一.bind简介 Linux中通常使用bind来实现DNS服务器的架设,bind软件由isc(www.isc.org)维护.在yum仓库中可以找到软件,配置好yum源,直接使用命令yum instal ...
- Docker环境下的Mysql8 实现主从数据库数据同步方案
本文记录下通过MySQL Replication在Docker环境下,通过多个容器 实现数据库主从配置. MySQL Replication就不多解释了,简单说就是MySQL非常出色的一个功能,该功能 ...
- Tapdata Real Time DaaS 技术详解 PART I :实时数据同步
摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战.Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活 ...
随机推荐
- FilterDispatcher已被标注为过时解决办法 >>> FilterDispatcher <<< is deprecated!
一些struts2的教程都是比较早的,当我们基于较新版本的struts2来实现代码的时候,往往会出现一些问题.比如这个警告:FilterDispatcher isdeprecated! 在web.xm ...
- selenium webdriver自动化对日期控件的处理
用JS去掉日期输入框的readOnly属性. 代码如下: ----------------------------------------------------------------------- ...
- Linux学习笔记13-用户和组
操作系统通过用户.组概念来管理使用计算机的人 用户代表一个使用计算机的使用者,操作系统通过用户概念限制一个使用者能够访问的资源 组用来组织管理用户 用户具有以下概念: 每个用户有一个用户名和一个用户I ...
- 【CSS3】CSS3:border-image的详解和实例
border-image简介 border-image是CSS3中的新特性.目前几乎所有的主流浏览器都已经支持该特性,详情请移步border-image的兼容性. border-image属性及使用说 ...
- jQuery立体式数字动态增加(animate方法)
1.HTML结构 <div class="integral">已有<span class="ii"></span>积分< ...
- Spring(3)—— Junit框架单元测试
Junit主要用于单元测试,即白盒测试.它是一个开源的由JAVA开发的一个用于测试的框架. Junit的几个基本概念:TestCase,TestSuite,TestFixtrue TestCase:代 ...
- C# PPT 查找替换
public void ReplaceAll(string OldText,string NewText) { int num = PageNum(); ...
- openlayers方法总结
openlayers中的一些方法:OpenLayers.Layer::initialize:创建层Div,注册事件:destroy:注销:clone:克隆当前层:setName:设置层name:add ...
- Java学习心得之 Linux下搭建JavaWeb环境
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 Linux下搭建JavaWeb环境 1. 前言2. Java安装3. t ...
- 转:jquery选择器总结
原文地址:http://www.cnblogs.com/onlys/articles/jQuery.html jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $(&qu ...