MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

时间:2022-04-17 08:15:26

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 2.6配置副本集,支持端口号修改和用户登录认证

在主数据的节点上登陆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);

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

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

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

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

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

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

仲裁者的信息

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

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

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

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

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

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

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

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

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

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

配置完用户验证之后,停掉副本集(顺序:先从从库停止,最后停主库),用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

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

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. 【Mongo】安装并配置副本集

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

  2. Mongodb 笔记05 创建副本集

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

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

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

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

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

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

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

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

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

  7. mongodb集群配置副本集

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

  8. mongodb配置副本集(多台服务器间的副本集搭建) replica[ˈrɛplɪkə]

    副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本存在,并且解决了“主节点挂掉了,整个集群内会自动切换”的问题.我们来看看mongoDB副本集的架构图: 由图可以看到客户端连接到整个副本集 ...

  9. 搭建mongoDB 配置副本集 replSet

    mongodb的master_slave和ReplSet是很常见的两种构架: 下面记录下搭建mongodbReplSet 的过程: 首先,进入到一个指定目录下 >cd /opt 下载mongod ...

随机推荐

  1. 工作中常用shell之ssh登陆不用输入"yes"

    ip="192.168.5.166"ssh $ip -o StrictHostKeyChecking=no           //ssh登陆不用输入"yes" ...

  2. android中的DatePicker与TimePicker

    1.布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  3. asp&period;net实现手机号码归属地查询,代码如下

    protected void Button1_Click(object sender, EventArgs e)        {            if (Regex.IsMatch(TextB ...

  4. C语言:几种字符输入函数的区别

    几种字符输入函数的区别: 1.getche()函数:用于从键盘读入一个字符并显示,然后直接执行下一条语   句. 2.getch()函数:用于从键盘中读入一个字符,但不显示在屏幕上,       然后 ...

  5. HDU 1280 前m大的数【哈希入门】

    题意:中文的题目= =将各种组合可能得到的和作为下标,然后因为不同组合得到的和可能是一样的, 所以再用一个数组num[]数组,就可以将相同的和都记录下来 #include<iostream&gt ...

  6. 如何使ListView具有像ios一样的弹性

    ListView 是我们在开发过程中经常使用的控件之一,通常情况下,当我们没有对它进行自定义或者给添加headerview 或者footerView的时候,他都没有一个很好的反馈效果,但是相比较而言, ...

  7. index&lowbar;ss hint 使用的运行计划变化对照

    index_ss  hint 使用的运行计划变化对照 当中 buffer 代表:当前操作中发生的内存读次数,包括一致性读和当前读 尽管 emp 表记录数不多,可是buffer 读内存的次数区别还是有点 ...

  8. TensorFlow tf&period;gradients的用法详细解析以及具体例子

    tf.gradients 官方定义: tf.gradients( ys, xs, grad_ys=None, name='gradients', stop_gradients=None, ) Cons ...

  9. vue-loader的理解

    1.vue-loader是webpack的加载器,允许以单文件组件(SFC)的格式创作Vue组件 2.允许对Vue组件的每个部分使用其他webpack加载器 3.允许.vue文件中的自定义块可以应用自 ...

  10. LeetCode--367--有效的完全平方数

    问题描述: 给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False. 说明:不要使用任何内置的库函数,如  sqrt. 示例 1: 输入:16 输 ...