热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

部署MongoDB数据库副本集群

MongoDB副本集启动备忘(不含切片)ngx13numactl--interleaveall/data/dbs/mongodb/bin/mongod--rest--replSetrhodb/ngx13:10003--fork--port10003--dbpath/data/dbs/node13/--logpath/d
MongoDB副本集启动备忘(不含切片)

ngx13
numactl --interleave=all /data/dbs/mongodb/bin/mongod --rest --replSet rhodb/ngx13:10003 --fork --port 10003 --dbpath /data/dbs/node13/ --logpath /data/dbs/log

ngx12
/data/dbs/mongodb/bin/mongod --rest --replSet rhodb/ngx12:10002 --fork --port 10002 --dbpath /data/dbs/node12/ --logpath /data/dbs/log

ngx11
/data/mongodb-linux-x86_64-2.0.7/bin/mongod --rest --replSet rhodb/ngx11:10001 --fork --port 10001 --dbpath /data/dbs/node11/ --logpath /data/dbs/log

选择在ngx13初始化
/data/dbs/mongodb/bin/mongo ngx13:10003
/data/dbs/mongodb/bin/mongo ngx12:10002
PRIMARY> rs.initiate({
... _id : "rhodb",
... members : [
... {_id : 1, host : "ngx13:10003", priority:2},
... {_id : 2, host : "ngx12:10002", priority:3},
... {_id : 3, host : "ngx11:10001", priority:4},
... ]
... });

初始化完成后返回
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
>
SECONDARY>

设置从库可读
/data/dbs/mongodb/bin/mongo ngx12:10002
SECONDARY>rs.slaveOk();

让 mongoose 连接 replSet

mongoose 建立 replSet 连接方式如下:

mongoose.connectSet('mongodb://ngx11:10001/rhodb,mongodb://ngx12:10002/rhodb,mongodb://ngx13:10003', {read_secondary: true});

其中,read_secondary 配置项允许读取从服务器的数据,以减轻主数据库读写压力。

将单数据库的数据导入到副本集中

mongodump --host ngx13:27017 -o /tmp/rhodb
mongorestore --host rhodb/ngx11:10001,ngx12:10002,ngx13:10003 /tmp/rhodb

测试的时候,直接 kill 掉主从服务器中的一个,另一个会自动切换为工作状态,应用仍能正常运行。

放弃nginx-gridfs doesn't work with authenticated replica set
Hi Doug,
Unfortunately the nginx-gridfs module isn "s1">'t officially supported by 10gen, and I don't think it's very aggressively maintained (looks like the last update was 4 months ago, before 2.0.7 came out).  Your best bet might be to ping the nginx-gridfs creators.
- 隐藏引用文字 -
"s1">On Monday, August 27, 2012 5:54:49 PM UTC-4, Doug Mayer wrote:
"s1">    Has anyone been able to successfully build nginx-gridfs and pointed it to a MongoDB 2.0.7 replica set that requires authentication? I'm having trouble getting it to run in Ubuntu 12.04. Nginx logs the following errors, no errors in MongoDB's log (as one would expect):
"s1">    2012/08/27 21:41:08 [error] 8016#0: Mongo Exception: Unknown Error
"s1">    2012/08/27 21:41:08 [error] 8013#0: Mongo Exception: Unknown Error
"s1">    2012/08/27 21:41:08 [error] 8018#0: Mongo Exception: Unknown Error
"s1">    2012/08/27 21:41:08 [alert] 8010#0: worker process 8014 exited with fatal code 2 and cannot be respawned
"s1">    2012/08/27 21:41:08 [alert] 8010#0: worker process 8015 exited with fatal code 2 and cannot be respawned
"s1">    2012/08/27 21:41:08 [alert] 8010#0: worker process 8016 exited with fatal code 2 and cannot be respawned
"s1">    2012/08/27 21:41:08 [alert] 8010#0: worker process 8013 exited with fatal code 2 and cannot be respawned
"s1">    2012/08/27 21:41:08 [alert] 8010#0: worker process 8018 exited with fatal code 2 and cannot be respawned
"s1">    2012/08/27 21:41:08 [error] 8021#0: Mongo Exception: Unknown Error
"s1">    2012/08/27 21:41:08 [alert] 8010#0: worker process 8021 exited with fatal code 2 and cannot be respawned
    And my relevant nginx config location:
      location /gridfs/ {
        internal;
        gridfs mydbname
          user=myuser
          pass=mypass;
        mongo "ebp"
          10.1.2.3:27017
          10.1.2.4:27017
          10.1.2.5:27017;
      }
"s1">    I can use the same exact user/pass to log in to the mongo shell and get to that DB. I've tried against nginx-gridfs v0.8 as well as master with the same results.
    Anyone have a clue what may be going on here?
修改MongoDB副本集的优先级,重新配置
cfg =  "o">{
... _id : "rhodb",
... version : 4,
... members : [
... {_id : 1, host :  "s2">"ngx13:10003"},
... {_id : 2, host :  "s2">"ngx12:10002"},
... {_id : 3, host :  "s2">"ngx11:10001"},
... ]
... }
cfg  "o">= rs.conf()
cfg.members[1 "o">].priority = 4
cfg.members[2 "o">].priority = 3
cfg.members[3 "o">].priority = 2
rs.reconfig(cfg)
{
... _id : "rhodb",
... version : 3,
... members : [
... {_id : 1, host :  "s2">"ngx13:10003", priority:5},
... {_id : 2, host :  "s2">"ngx12:10002", priority:4},
... {_id : 3, host :  "s2">"ngx11:10001", priority:3},
... ]
... }
nginx、memcache和MongoDB维护注意事项
机器分工概况
============
xxx.xxx.xxx.68 / 69 为.Net主程的负载机器,并部署:
1、双机双主缓存(以下简称htmlcache)
2、单机Memcache(以下简称jscache)
3、Nginx内核webserver
工作机理介绍:
1、动态请求分发到10.10.10.50
2、html取自htmlcache
3、js、css自动缓存到jscache(节前停用)
4、图片需要等领导要求再改进
异常处理
异常风险在于10.10.10.50,可能导致:
1、68、69主动挂在50机器.Net主程序失败(df命令查询)
2、动态请求“502 bad gateway”
如果出现此问题,需要通知windows主机管理员处理。
其它无
============
xxx.xxx.xxx.86 / 87 (以下简称ngx11、ngx12)为图片主程的负载机器,并部署:
1、MongoDB(以下简称rhodb)
2、图片一级缓存Rhosync(Nginx内核webserver)
xxx.xxx.xxx.88 (以下简称ngx13)为后向mongoDB Cache,并部署图片二级缓存:
1、MongoDB(以下简称rhodb)
2、Nginx内核webserver
工作机理介绍:
1、图片请求时,ngx11、ngx12判断图片一级缓存是否有图,有则直接返回
2、如果图片一级缓存没有,则读取mongoDB Cache,判断是否有,有则返回
3、如果图片二级缓存没有,则统一转发到ngx13
4、ngx13负责主动挂载图片存储阵列Dell NAS(10.10.10.15)
5、如果为小图请求,则有ngx13通过图片库GimagesMagic处理
异常处理
主要异常风险在于10.10.10.15,可能导致:
1、ngx13主动挂在15机器图片存储阵列Dell NAS失败(df命令查询)
2、图片请求“502 bad gateway”
如果出现此问题,需要通知10.10.10.15的windows主机管理员处理。
其它无
次要异常风险在于xxx.xxx.xxx.88,可能导致:
1、图片请求“502 bad gateway”
如果出现此问题,需要进一步检查:
1)机器能否ping通,如果重启后则要执行:numactl --interleave "o">=all /data/dbs/mongodb/bin/mongod --rest --replSet rhodb/ngx13:10003 --fork --port 10003 --dbpath /data/dbs/node13/ --logpath /data/dbs/log
2)资源使用情况
3)MongoDB服务是否关闭,如果关闭,则要看ngx11、ngx12的MongoDB服务是否同时存在
其它无
============
Memcached启动
/usr/local/bin/memcached -d -m 8192 -u root -p 11211 -c 12800 -P /tmp/memcached.pid

-p 设置端口号(默认不设置为: 11211)
-U UDP监听端口 (默认: 11211, 0 时关闭)
-l 绑定地址 (默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)
-d 独立进程运行
-u 绑定使用指定用于运行进程
-m 允许最大内存用量,单位M (默认: 64 MB)
-P 将PID写入文件,这样可以使得后边进行快速进程终止, 需要与 -d 一起使用


推荐阅读
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • Ubuntu系统下的GIF动画录制解决方案
    在撰写文章或教程时,GIF动态图能够有效地传达信息。对于Windows用户而言,ScreenToGif是一款非常实用的工具。而在Ubuntu系统中,用户同样拥有多种选择来创建GIF动画,本文将重点介绍两款录屏工具——Byzanz和Peek。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文探讨了有效学习专业技能的方法,包括编程语言、操作系统、软件组件及前沿技术的探索,旨在为初学者提供一套系统的自学指南。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
author-avatar
King347
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有