必威电竞外围网站养环境下搭建mongodb复制集高可用环境(python)mongo副本集总结。

环境描述:有三台ubuntu服务器,,每台服务器上就来mongodb实例。创建3个mongo2.4的新实例,分别作三只复制集节点,同时保证了现阶段单节点环境的安居

同一、在相同台机器上配置副本集

1.条件准备

mongo的装什么的饶不再赘述了。

此间建议利用mongo3.2以上的版,3.2上述版本的WiredTiger引擎,性能再好,数据压缩更好,同样数目的状况下,3.2占的上空就为3.0版的1/3。

欲先给各个一个相符本集建立一个data目录。

cd /data

mkdir db0 db1 db2

(需要sudo权限的在mkdir前增长sudo)

同等,需要给log文件建立log日志文件夹。

cd /var/log

mkdir mongolog0 mongolog2 mongolog3

(同理,有亟待则以mkdir前增长sudo)

2.称本集启动配置

mongod –fork –dbpath /data/db0 –logpath
/var/log/mongolog/mongodb0.log –replSet example –port 27017

mongod –fork –dbpath /data/db1 –logpath
/var/log/mongolog/mongodb1.log –replSet example –port 27018

mongod –fork –dbpath /data/db2 –logpath
/var/log/mongolog/mongodb2.log –replSet example –port 27019

参数介绍:

–fork:后台运行(要留心的凡,用到了“–fork”参数就必须启用“–logpath”参数,这是强制性的)

–logpath:日志的保存路径

–dbpath:数据库保存路径

–port:打开的捧口号

–replSet:打开副本集,后面带的是称本集的名

3.顺应本集的初始化

起先mongo:mongo(默认端口号也27017)

在mongo shell中输入:

rsconf={“_id”:”example”,”members”:
[{“_id”:0,”host”:”127.0.0.1:27017″}]}

初始化副本集:rs.initiate(rsconf)

此刻会晤面世:example:PRIMARY>

加加任何成员:rs.add(“127.0.0.1:27018”)

                      rs.add(“127.0.0.1:27019”)

翻副本集情况:rs.conf()

修改priority(当主节点挂掉时,该节点称为主节点的优先级):cfg=rs.conf()

cfg.members[2].priority =2

丰富仲裁节点:rs.addArb(“127.0.0.1:40000”)(仲裁节点不持有多少,但得目录来保存有安排信息)

表决节点的意:

由此实际必威电竞外围网站测试发现,当所有合本集集群中及50%的节点(包括决定节点)不可用的时刻,剩下的节点只能改成secondary节点,整个集群只能读不克写。比如集众多被发出1只primary节点,2只secondary节点,加1独arbit节点时:当半独secondary节点挂掉了,那么余下的本来的primary节点也只好降级也secondary节点;当集群中出1独primary节点,1独secondary节点和1个arbit节点,这时便primary节点挂了,剩下的secondary节点也会见自行变成primary节点。因为仲裁节点不复制数据,因此利用仲裁节点可以兑现最少之机械出高达少单节点热备的效力。

移除成员:rs.remove(“127.0.0.1:40000”)

本着物主节点进行降职:rs.stepDown(15)

tip:初始化操作就需要在一台上mongo进行即可,另外两大就需要被加入顶集众多中,不需要初始化操作,


3宝服务器都曾经发单个mongo实例运行

仲、权限模式

此间注意,需要现无权限的模式下先创建好账号密码。

创造root账号语句:

use admin;

db.createUser({user:”admin”, pwd:”admin”, roles:[{role:”root”,
db:”admin”}]})

缔造好初始root账号后,重开mongo,开启权限模式。

翻开权限模式的副本集时需要以启动时带齐参数 –keyFile /mongo/keyfile

后面为keyfile的路径

keyfile文件要满足条件:

(1)至少6个字符,小于1024字节

(2)认证时候不考虑文件中空白字符

(3)连接至符合本集的积极分子和mongos进成的keyfile文件内容要一律

(4)必须是base64编码,但是不克出当号

(5)文件权限必须是x00,也就是说,不克分配任何权力给group成员和other成员

keyfile文件之扭转:

openssl rand -base64 100 > /mongo/keyfile

chmod 600 /mongo/keyfile


步骤

老三、在不同服务器上配置副本集

rsconf={“_id”:”example”,”members”:
[{“_id”:0,”host”:”127.0.0.1:27017″}]}中无克写成127.0.0.1或者localhost,否则会无清楚啊一样宝才是localhost。需要写成ip地址。

1.创建mongo新实例需要之目资源   主要是数据库存放目录、日志文件、配置文件、key文件(保证节点通信)  

 
文件可以在其他地方创造,我于/usr/local下之开创mongodb_rs作为新实例的目,在拖欠目录下创办资源目录

  1.数据库  mkdir db

  2.日志文件  mkdir log 

  3.部署文件  touch rs.conf  可以cat
/etc/mongodb.conf>rs.conf初始化,添加或修改下面几乎起

port = 29010             #重复改端口 先lsof -i:29010查是否被占用

fork=true                   #后台demon进程运行

journal=true              #启用可靠性日志

oplogSize=2048  

smallfiles=true

replSet=test_rs         #复制集名称

keyFile=/usr/local/mongodb_rs/key.key   #复制集通信key

4.key文本  touch key.key  生成秘钥 openssl rand 888 -base64>key.key
 用888不要太长 key的长度是产生限量的

吓了
 目前目录资源且早已创办,先不启动。在另2只节点重复以上过程,当然第4步用重新,把第一宝及的key.key文件内容复制到各个一个节点的key.key文件下

当每一样尊服务节点启动mongo的新实例(mongodb_rs目录下)  mongod -f rs.conf
稍等说话会面提示successful
 如果未成事翻rs.log日志文件查找原因,可能移一下端口号

2.配备复制集 

   
选同宝服务节点作为primary库192.168.1.132,在服务器上总是mongod实例mongo
–port=29010

    1.初始化复制集  rs.initiate()  查看rs.conf()
 正常情形下特别成了一个节点hostname:29010

     
 这个hostname是主机名,把这个主机名添加到另外2宝节点的/etc/hosts文件中

    2.添加节点  

      rs.add(“192.168.1.133:29010”)

      rs.add(“192.168.1.134:29010”)

 
 3.装优先级,当主节点当机之后再也开的时候任然能化primary节点,一个节点也0
 不见面成主节点

    cfg = rs.conf()

    cfg.members[0].priority=3

    cfg.members[1].priority=1

    cfg.members[0].priority=0

      重新加载

     rs.reconfg(cfg)

   4.翻各个节点的状态 (当然你得先退出 在登录查看状态)

     health:1  #常规状态

    “stateStr” : “PRIMARY”   #标识主节点

STARTUP:刚加盟到复制集中,配置还不加载

STARTUP2:配置都加载了,初始化状态

 RECOVERING:正在恢复,不适用读

ARBITER: 仲裁者

DOWN:节点不可到达

UNKNOWN:未取其他节点状态而不知是啊状态,一般生在仅出一定量单成员的架构,脑裂

REMOVED:移除复制集

ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态

FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新开一道

PRIMARY:主节点

SECONDARY:备份节点

   5.吗数据库创建用户称与密码
 保证程序外动静下(主库挂了)访问一个可靠的库  如为app库创建一个账号

     use app

    db.addUser(“test”,”123″)

   

3.测试数据并  主从切换

     1.完成了部署之后  先瞧secondary是否同步了主库的数额  
或者kill主库的mongo进程  等待一会儿看看是否主库发生了切换  
然后又开看主库是休是双重成为了主库

4.使用pymongo连接mongodb数据库 

import pymongo

client=pymongo.MongoClient(“192.168.1.132:29010″,replicaSet=”test_rs”)

db = client[“app”]

db.authenticate(‘test’,’123′)

db.user.find()

db.connection.host  #打印当前连日服务器

使pymongo连接数据库后可以测试   ,当kill主库之后
 再次打印db.connection.host看看是不是还是上次那个host  
如果差证故障转移了

5.如果要做读写分离,设置从库可读,pymongo也加强了这么的api,大家发趣味可以省

相关文章

admin

网站地图xml地图