MongoDB 2.6配置副本集,支持端口号修改和用户登录认证
mongoDB系列之(二):mongoDB 副本集
副本集有以下特点:
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配置副本集,支持端口号修改和用户登录认证的更多相关文章
- MongoDB 带访问控制的副本集部署
当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成. 版本及环境 MongoDB4.4 Centos6.5 一. 下载安装 MongoDB Server 及 ...
- 【Mongo】安装并配置副本集
最近的一个小项目需要用到mongo,所以开始学习下mongo.本打算开三台虚机严格按照生产来配置,然后发现有点带不动,所以决定在一台上通过三个端口来模拟. 1.获取安装包 curl -O http:/ ...
- 8.MongoDB系列之创建副本集(一)
1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选 ...
- Mongodb 笔记05 创建副本集
创建副本集 1. 副本集:副本集时一组服务器,其中有一个主服务器(primary),用于处理客户端请求:还有多个备份服务器(secondary),用于保存主服务器的数据副本.如果主服务器崩溃了,备份服 ...
- MongoDB 删除,添加副本集,并修改副本集IP等信息
MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ...
- weblogic端口号修改和内存参数配置
1 端口号修改 如图 是详细路径 注:我用的weblogic版本是10.3 当刚创建完域的时候这个配置文件下没有Listen-port参数 第一次去控制台修改端口后就这个参数了
- Tomcat Geoserver等服务器 端口号修改
端口号修改是我们经常会用到的,这里整理一下我们常见的服务器端口号修改位置,后面在用到的时候会持续更新 注意:端口号修改服务都需要重启才有效. 1.Tomcat 位置:..\tomcat路径\conf\ ...
- MongoDB系列之三(副本集配置)
今天我测试了一下MongoDB的副本集的配置. 首先从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+ ...
- mongodb集群配置副本集
测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...
随机推荐
- 设置py文件的路径
想在IDLE中打开py文件,需要设置PYTHONPATH环境变量: 设置后,就能在IDLE的Path Browser中看到sys.path了: 然后,就可以用import了
- spring /spring boot中mock
1 Mockito简介 1.1 Mockito是什么 Mockito是一个简单的流行的Mock框架.它允许你创建和配置mock对象.使用Mockito可以明显的简化对外部依赖的测试类的开发.一般使 ...
- Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表
本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码 ...
- JS与Jquery的事件委托
参考:http://www.ituring.com.cn/article/467 概念: 什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委 ...
- 加快Android Studio的编译速度
从Eclipse切换到Android Studio后,感觉Android Studio的build速度比Eclipse慢很多,以下几个方法可以提高Android Studio的编译速度 使用Gradl ...
- [精品]CAD批量处理工具
需要此工具请Q:3567 618 336 CAD批量处理工具是基于AutoCAD二次开发的批处理插件.将程序加载到CAD中,使用自定义的Lisp代码就可对多个文档进行批量操作. 1.文件说明 CAD ...
- Tomcat的性能与最大并发配置
当一个进程有 500 个线程在跑的话,那性能已经是很低很低了.Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大. 当某个应用拥有 250 个以上并 ...
- Linux中在线安装Mysql和修改密码设置服务启动
一.说明:本文教大家在linux下在线安装mysql.网上的很多文章写的太乱,我们只取操作最方便的在线安装方式.本文以Centos为例. 二.安装过程. 1.安装客户端和服务端: (1)检查是否已经安 ...
- 杂货&&心跳
https://github.com/jsfront/month/blob/master/2016/201605.md https://github.com/abdmob/x2js https://l ...
- POJ 1548 Robots(最小路径覆盖)
POJ 1548 Robots 题目链接 题意:乍一看还以为是小白上那题dp,事实上不是,就是求一共几个机器人能够覆盖全部路径 思路:最小路径覆盖问题.一个点假设在还有一个点右下方,就建边.然后跑最小 ...