mongoDB系列之(二):mongoDB 副本集

Mongodb2.6副本集验证部署和认证

副本集有以下特点:

1. 最小构成是:primary,secondary,arbiter,一般部署是:primary,2 secondary。

2. 成员数应该为奇数,如果为偶数的情况下添加arbiter,arbiter不保存数据,只投票。

3. 最大50 members,但是只能有 7 voting members,其他是non-voting members。

注意:配置mongo副本集的时候,不能先添加登陆授权用户,但是可以先修改端口号。

提示:现在每一台从机器上面删除所有数据库

show dbs
db.dropDatabase() --数据全部清空
show dbs

今天在做mongoDB主从的时候,遇到了"ipdress has data already, cannot initiate set"的问题,正好看到之前有人也遇到这个问题,说是要把从的数据全部清空。

修改每一台机器的配置文件/etc/mongod.conf,增加副本集名称

-------------------XShell 5--------------------
sed -i 's/^#replSet=setname/replSet=wangyunpeng/g' /etc/mongod.conf -------------------Shell--------------------
#replSet=setname
replSet=wangyunpeng

然后重起每一台mongo的服务

service mongod stop
service mongod start

此时再通过MongoVUE工具访问每一个mongo服务器里面的集合,会提示:cannot currently read from this replSet *****错误。

在主数据的节点上登陆mongodb数据库,这里必须选择主库进行replSet设置操作:

mongo 127.0.0.1:/admin

指定副本集的名字为wangyunpeng和数据节点、仲裁者

config_repl=
{
"_id" : "wangyunpeng",
"members" : [
{
"_id" : ,
"host" : "10.53.0.40:18181",
"priority" :
},
{
"_id" : ,
"host" : "10.53.0.41:18181",
"priority" :
},
{
"_id" : ,
"host" : "10.53.0.45:18181",
"priority" : 9 数据节点 (或 "arbiterOnly" : true 仲裁者)
}
]
}
rs.initiate(config_repl);

查看成功之后的主机信息:

1、瞬时的状态:注意从库的state是5。并且rs.status();前面是“>”,也表示还没有创建完成,需要等待一会,如下图:

2、最终的状态:注意rs.status();左面的">"是primary,还有syncingTo的机器地址和端口,如下图:

仲裁者的信息

也可以在每一台从机上登陆mongo,使用rs.status()查看从机状态,还有syncingTo的机器地址和端口,注意下图:

配置玩副本集之后开始用户认证,需要配置两个用户(只创建系统用户也可以),一个是系统用户,一个是数据库管理员用户。配置完之后,配置信息将同步到其他节点。

role:[“root”]表示系统用户,role:[“useAdminAnyDatabase”]表示数据库管理员用户,

db.createUser({user:"sa",pwd:"",roles:["root"]});    --创建用户
db.auth("sa",""); --设置用户登陆权限,密码一定要和创建用户时输入的密码相同
show users; --查看创建的用户

从库查看登陆用户是否同步:

db.getMongo().setReadPref('secondaryPreferred');
show users;

配置完用户验证之后,停掉副本集(顺序:先从从库停止,最后停主库),用openssl生成密码文件,

cd /data
openssl rand -base64 745 > mongodb-keyfile

赋予权限600,文件才能被调用

chmod  mongodb-keyfile

保存好文件,修改所有者和所有组,

chown -R mongod:mongod mongodb-keyfile

然后在每一个从机器上的配置文件加入启动调用认证文件参数 vim /etc/mongod.conf,如:

------------------------------XShell 5--------------------------------
sed -i 's/^#keyFile=\/path\/to\/keyfile/keyFile=\/data\/mongodb-keyfile/g' /etc/mongod.conf --------------------------Shell------------------------------------
keyFile = /data/mongodb-keyfile

然后将mongodb-keyfile逐一拷贝到每一个从的机器上,然后启动副本,只用经过密码文件认证的节点才能加入。数据库操作也需要密码认证,大大提高了安全性。

cd /data/
openssl rand -base64 > mongodb-keyfile
chmod mongodb-keyfile
chown -R mongod:mongod mongodb-keyfile vim /etc/mongo.conf
keyFile=/data/mongodb-keyfile scp /data/mongodb-keyfile root@192.168.1.111:/data/mongo/ (先在主机上写config文件,把本地的私钥文件复制到每一台服务器(主、从、仲裁)的~/.ssh/目录中)

这样就不用修改/etc/mongod.conf文件的nuauth=false和auth=true也能行了,修改也没有错。

都配置完成之后,重起Mongo服务(顺序:先主库,在从库),登录的时候记得使用密码

mongo 127.0.0.1:/admin -u用户名 -p密码
****:PRIMARY> rs.status(); --查看状态
注意:arbiter机器登陆不需要指定用户名和密码,例如;mongo 127.0.0.1:27017/admin

Failover动作

关闭主库

db.shutdownServer()   --关闭主库
mongod -f /etc/mongod.conf --重起主库

库上查看副本集状态,可以看到一个从库升级为主库

rs.status()

同期动作确认

在主库上插入一条记录操作

在从库上查看数据已经同期,直接查会抱错,需要使用db.getMongo().setReadPref("secondaryPreferred")命令

wangyunpeng:SECONDARY> use shoespie_website
wangyunpeng:SECONDARY> show collections
2016-01-25T21:02:07.585-0500 error: { "$err" : "not master and slaveOk=false", "code" : 13435 } at src/mongo/shell/query.js:131

wangyunpeng:SECONDARY> db.getMongo().setReadPref("secondaryPreferred")
wangyunpeng:SECONDARY> use shoespie_website
wangyunpeng:SECONDARY> show collections

3. 读写分离

主库,从库都支持读操作。但是,默认情况读也是从主库来读。

从库可以通过设置ReadPreference打开支持读操作,ReadPreference有几种模式:

Primary                   #从主的读,默认

primaryPreferred      #基本上从主的读,主不可用时,从从的读

secondary                #从从的读

secondaryPreferred   #基本上从从的读,从不可用时,从主的读

nearest                    #从网络延迟最小的读

基本上常用的是,Primary,secondary,nearest

副本集的设定中可以通过Tag把成员归类,通过下面方法指定读的类型:

1,程序连接的时候,指定读的类型ReadPreference

2,用mongo命令连接,只对当前连接有效

wangyunpeng:SECONDARY> db.getMongo().setReadPref('secondaryPreferred')

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证的更多相关文章

  1. MongoDB 带访问控制的副本集部署

    当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成. 版本及环境 MongoDB4.4  Centos6.5  一. 下载安装 MongoDB Server 及 ...

  2. 【Mongo】安装并配置副本集

    最近的一个小项目需要用到mongo,所以开始学习下mongo.本打算开三台虚机严格按照生产来配置,然后发现有点带不动,所以决定在一台上通过三个端口来模拟. 1.获取安装包 curl -O http:/ ...

  3. 8.MongoDB系列之创建副本集(一)

    1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选 ...

  4. Mongodb 笔记05 创建副本集

    创建副本集 1. 副本集:副本集时一组服务器,其中有一个主服务器(primary),用于处理客户端请求:还有多个备份服务器(secondary),用于保存主服务器的数据副本.如果主服务器崩溃了,备份服 ...

  5. MongoDB 删除,添加副本集,并修改副本集IP等信息

    MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ...

  6. weblogic端口号修改和内存参数配置

    1 端口号修改 如图 是详细路径 注:我用的weblogic版本是10.3 当刚创建完域的时候这个配置文件下没有Listen-port参数  第一次去控制台修改端口后就这个参数了

  7. Tomcat Geoserver等服务器 端口号修改

    端口号修改是我们经常会用到的,这里整理一下我们常见的服务器端口号修改位置,后面在用到的时候会持续更新 注意:端口号修改服务都需要重启才有效. 1.Tomcat 位置:..\tomcat路径\conf\ ...

  8. MongoDB系列之三(副本集配置)

    今天我测试了一下MongoDB的副本集的配置. 首先从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+ ...

  9. mongodb集群配置副本集

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

随机推荐

  1. ASP输出JSON数据及客户端jQuery处理方法

    首先ASP处理JSON需要json官方提供的JSON For ASP 封装类文件,下载地址:http://code.google.com/p/aspjson/downloads/list 下载最新的J ...

  2. 如何让windows更高效?

    首先解释一下个标题: "让windows更高效,既指让windows更友好更优化,也指可以让使用windows来工作或学习的人更高效的工作学习." 解释下本文的动机: 指导我自己或 ...

  3. iOS开发技巧 - 使用UIPickerView来选择值

    (Swift) import UIKit class ViewController: UIViewController, UIPickerViewDataSource { var picker: UI ...

  4. MDX Step by Step 读书笔记(八) - Navigating Hierarchies 层次结构导航

    开篇介绍 本章主要内容包括: 解释各种不同的 MDX 导航函数的使用: Parent, Children, FirstChild, LastChild, Siblings, FirstSibling, ...

  5. Struts2(九)OGNL标签一与Struts2标签

    一.什么是OGNL  Object Graph Navigation Language对象图导航语言. 是Struts2默认的表达式语言,开源,功能更强大.和EL表达式有点相似 存取对象的属性,调用对 ...

  6. Web Worker是什么

    .Web Worker是什么 Web Worker 是HTML5标准的一部分,这一规范定义了一套 API,它允许一段JavaScript程序运行在主线程之外的另外一个线程中.Web Worker 规范 ...

  7. 批量 ping 测试脚本(IP 扫描)

    是否会使用 vpn 工作,已经成为魔法师和麻瓜之间最重要的区分.使用 vpn 工作,也产生了其它一些奇奇怪怪的问题,比如,选择 vpn 服务器. 你要测试哪个 vpn 离你最近. 所以,就有了下面的脚 ...

  8. Ant脚本简介与基础知识

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6624003.html  一:Ant是什么 Ant相当于Linux环境下的shell脚本,只不过是用xml文档来 ...

  9. BIEE Demo(RPD创建 + 分析 +仪表盘 )

    说明:此Demo步骤简略,详细Demo可以参照下面的 天善视频:BIEE 11G Rpd模型设计 天善视频:BIEE 11G 报表开发 Oracle BIEE (Business Intelligen ...

  10. 【麦子学院】Linux cmd命令大全

    pwd :print working directory. 打印工作文件夹即当前文件夹. cd :change directory.切换文件夹. /是linux的根文件夹.eg. cd/home ls ...