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

MongoDB数据库的安装、replicaSet配置、主从配置

Mongodb的安装、主从配置、replicaSet配置前段时间一直在研究mongodb,看了一些书,网上也看了很多资料,其实都是抄来抄去,很多根本都没有经过自己验证,随便往博客上一贴,然后坑死人,这样真的要不得,本人在开始就深受其害,所以这里未免后来人也跟我一

Mongodb的安装、主从配置、replicaSet配置

前段时间一直在研究mongodb,看了一些书,网上也看了很多资料,其实都是抄来抄去,很多根本都没有经过自己验证,随便往博客上一贴,然后坑死人,这样真的要不得,本人在开始就深受其害,所以这里未免后来人也跟我一样走这些弯路,自己就花点时间把自己的一些实践操作整理了下,写了这篇文章。

文章很简单,主要还是讲基本的配置,关键是配置的时候要细心,这里没有讲到原理性的东西,毕竟篇幅有限,所以如果大家在配置过程中有什么疑点都可以和我交流。希望大家多多支持。

还有,我工作很忙的,写篇帖子也不容易,大家觉得写得有用,给个回复,表示下支持,也算给点动力啦,呵呵。

一.Mongodb的安装

环境:linux 64bit

版本:2.0.1

位置:/opt/mongodb

安装步骤:

tar ?zxvf mongodb-linux-x86_64-2.0.1.tar ?C /opt/mongodb

mkdir /opt/mongodb/data

touch /opt/mongodb/logs

安装是很简单的,关键是下面的启动的配置。启动配置有三种情况,分别是正常的单主机启动,主从启动,副本集启动三种方式。

1. 单主机启动方式

启动

cd /opt/mongodb/bin

/opt/mongodb/bin/mongod ?f mongodb.conf

#mongodb.conf是自定义的启动配置文件,其中参数auth表明需要认证才能登录,内容如下:

#start as daemon and need authentication

port=27017

fork=true

dbpath=/opt/mongodb/data/

logpath=/opt/mongodb/logs

auth=true

设置开机自动启动(可选)

echo “/opt/mongodb/bin/mongod ?f /opt/mongodb/bin/mongodb.conf” >> /etc/rc.local

设置密码

#连接mongodb

cd /opt/mongodb/bin

./mongo

#默认进入到mongodb默认的test库

#为数据库设置用户名密码

#首先切换到admin库,先建立一个管理员账号

> use admin

> db.addUser(“root”,”root”);

#切换到test库

use test

#为test库添加用户名和密码

> db.addUser(“testUser”,”123456″);

#注:若此时显示

Tue May 22 16:16:29 uncaught exception: error {

“$err” : “unauthorized db:test lock type:-1 client:127.0.0.1″,

“code” : 10057

}

说明设置密码已生效,此时要先转到admin库,输入认证再转回到test库设置用户名密码,如下:

use admin

db.auth(“root”,”root”);

use test

#下次再连接mongodb时需要使用如下方式:

./mongo ?u testUser ?p 123456

#删除用户

Db.system.users.remove({“user”:”testUser”});

#注:mongodb的用户名和密码都是针对每一个库的,所以不同的库可以设置不同的用户名和密码。

2. 主从方式启动

实际上现在这种方式已经不推荐使用了,推荐使用的是replicaset,下面会讲到

假设已经将mongodb安装在了两台主机上ip分别为192.168.0.1和192.168.0.2上,下面是启动配置

启动master(192.168.0.1)

cd /opt/mongodb/

./bin/mongod ?dbpath=/opt/mongodb/data ?logpath=/opt/mongodb/logs

?master ?oplogSize 64 ?logappend ?port=27017 ?fork

启动slave(192.168.0.2)

cd /opt/mongodb/

./bin/mongod ?dbpath=/opt/mongodb/data ?logpath=/opt/mongodb/logs

?slave ?source 192.168.0.1 ?only test ?slavedelay 10

?logappend ?port=27017 ?fork

这样配置就完成了,当然也可以将这些启动参数像前面一样写在配置文件中,启动时使用配置文件启动。

配置完成后可以测试一下,如下:

在主机器上添加数据

cd /opt/mongodb/

./bin/mongo

db.foo.save({“id”:123,”name”:gongyong});

成功的话可以在从服务器看到数据:

cd /opt/mongodb/

./bin/mongo

db.foo.find({“id”:123})

3. replcaSet的配置

我们假设有三台服务器,分别已经安装好了mongodb,有如下三段配置

#10.127.65.92上的配置

logpath=/opt/mongodb/logs

dbpath=/opt/mongodb/data/

port=27017

fork=true

logappend=true

replSet=snsgame/10.127.65.95:27017

#10.127.65.95上的配置

logpath=/opt/mongodb/logs

dbpath=/opt/mongodb/data/

port=27017

fork=true

logappend=true

replSet=snsgame/10.127.65.92:27017

#10.11.154.91上的配置

logpath=/opt/mongodb/logs

dbpath=/opt/mongodb/data/

port=27017

fork=true

logappend=true

replSet=snsgame/10.127.65.92:27017,10.127.65.95:27017

分别将上面三段配置复制后放到每台mongodb的某个位置(推荐bin目录),三台服务器分别使用上面的配置启动后,要进行初始化

首先连接上65.92这台mongo

./mongo -port 27017

这样就连接上了mongodb的默认库test,然后输入如下指令:

> config_rs1={_id:’snsgame’,members:[

...{_id:0,host:'10.127.65.92:27017',priority:10},

...{_id:1,host:'10.127.65.95:27017',priority:9},

...{_id:2,host:'10.11.154.91:27017',priority:9}]

…}

> rs.initiate(config_rs1);

回车后出现下面的提示:

{

“info”:”Config now saved locallly. should come online in about a minute.”,

” ok”:1

}

说明初始化成功,注意只需要在其中任何一台上初始化就可以

运行如下指令查看是否成功

rs.status()

然后退出再重新连接,发现光标变成下面这种就对了:

rs1:PRIMARY

配置完成后可以进行秘密和用户名的设置,设置方式前面已经提到,需要注意的是,每台mongodb都需要用同样的方式设置用户名和秘密。

到这里,mongodb的安装,主从,副本集的配置就基本完成,再往后还有mongodb的集群分片的搭建,在另一篇文章里会详细说明。

附:各启动参数的说明

参数解释: ?dbpath 数据库路径(数据文件)

?logpath 日志文件路径

?master 指定为主机器

?slave 指定为从机器

?source 指定主机器的IP地址

?pologSize 命令行参数(与?master一同使用)配置用于存储给从节点可用的更新信息占用的磁盘空间(M为单位),如果不指定这个参数,默认大小为当前可用磁盘空间的5%(64位机器最小值为1G,32位机器为50M)。

?logappend 日志文件末尾添加

?port 启用端口号

?fork 在后台运行

?only 指定只复制哪一个数据库

?slavedelay 指从复制检测的时间间隔

?auth 是否需要验证权限登录(用户名和密码)

-h [ --help ] show this usage information

?version show version information

-f [ --config ] arg configuration file specifying additional options

?port arg specify port number

?bind_ip arg local ip address to bind listener ? all local ips

bound by default

-v [ --verbose ] be more verbose (include multiple times for more

verbosity e.g. -vvvvv)

?dbpath arg (=/data/db/) directory for datafiles 指定数据存放目录

?quiet quieter output 静默模式

?logpath arg file to send all output to instead of stdout 指定日志存放目录

?logappend appnd to logpath instead of over-writing 指定日志是以追加还是以覆盖的方式写入日志文件

?fork fork server process 以创建子进程的方式运行

?cpu periodically show cpu and iowait utilization 周期性的显示cpu和io的使用情况

?noauth run without security 无认证模式运行

?auth run with security 认证模式运行

?objcheck inspect client data for validity on receipt 检查客户端输入数据的有效性检查

?quota enable db quota management 开始数据库配额的管理

?quotaFiles arg number of files allower per db, requires ?quota 规定每个数据库允许的文件数

?appsrvpath arg root directory for the babble app server

?nocursors diagnostic/debugging option 调试诊断选项

?nohints ignore query hints 忽略查询命中率

?nohttpinterface disable http interface 关闭http接口,默认是28017

?noscripting disable scripting engine 关闭脚本引擎

?noprealloc disable data file preallocation 关闭数据库文件大小预分配

?smallfiles use a smaller default file size 使用较小的默认文件大小

?nssize arg (=16) .ns file size (in MB) for new databases 新数据库ns文件的默认大小

?diaglog arg 0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是只读,只写,还是读写都行,还是主要写+部分的读模式

?sysinfo print some diagnostic system information 打印系统诊断信息

?upgrade upgrade db if needed 如果需要就更新数据库

?repair run repair on all dbs 修复所有的数据库

?notablescan do not allow table scans 不运行表扫描

?syncdelay arg (=60) seconds between disk syncs (0 for never) 系统同步刷新磁盘的时间,默认是60s

Replication options:

?master master mode 主复制模式

?slave slave mode 从复制模式

?source arg when slave: specify master as 当为从时,指定主的地址和端口

?only arg when slave: specify a single database to replicate 当为从时,指定需要从主复制的单一库

?pairwith arg address of server to pair with

?arbiter arg address of arbiter server 仲裁服务器,在主主中和pair中用到

?autoresync automatically resync if slave data is stale 自动同步从的数据

?oplogSize arg size limit (in MB) for op log 指定操作日志的大小

?opIdMem arg size limit (in bytes) for in memory storage of op ids指定存储操作日志的内存大小

Sharding options:

?configsvr declare this is a config db of a cluster 指定shard中的配置服务器

?shardsvr declare this is a shard db of a cluster 指定shard服务器


推荐阅读
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • 近期参与了一个旨在提高在线平台大规模查询响应速度的项目,预计处理的数据量为2-3亿条,数据库并发量约为每秒1500次,未来可能增至3000次。通过对比Redis和MongoDB,最终选择了MongoDB,因其具备优秀的横向扩展性和GridFS支持下的Map/Reduce功能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文介绍了如何利用MongoDB的$exists操作符在Java应用程序中检查特定字段是否存在于文档中,包括示例代码和解释。 ... [详细]
  • 字节跳动夏季招聘面试经验分享
    本文详细记录了字节跳动夏季招聘的面试经历,涵盖了一、二、三轮面试的技术问题及项目讨论,旨在为准备类似面试的求职者提供参考。 ... [详细]
author-avatar
朗月清风的海角
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有