当前位置:Gxlcms > 数据库问题 > 22.mongodb副本集集群

22.mongodb副本集集群

时间:2021-07-01 10:21:17 帮助过:4人阅读

mongodb-linux-x86_64-rhel62-3.2.0.tgz 服务器3台:     192.168.1.20    (master[PRIMARY])     192.168.1.21    (slave[SECONDARY])     192.168.1.22    (仲裁[ARBITER]) 参考: http://www.cnblogs.com/visionwang/p/3290435.html http://www.csdn.net/article/2014-04-09/2819221-build-high-avialable-mongodb-cluster-part-1 $ tar -zxvf mongodb-linux-x86_64-rhel62-3.2.0.tgz /opt $ mv mongodb-linux-x86_64-rhel62-3.2.0 mongodb $ mkdir -p /opt/mongodb/{conf,data,logs}   #解压后创建目录conf data logs 技术分享 ####################mongodb配置文件(/opt/mongodb/conf/mongodb.conf )######## #存放的数据文件目录 dbpath=/opt/mongodb/data #日志文件目录 logpath=/opt/mongodb/logs/master.log #加密文件,用户集群连接验证 #keyFile=/opt/mongodb/mongodb.key #日志追加 logappend=true #副本集名称 replSet=repset #绑定 bind_ip=192.168.1.20 #端口号 port=27017 #启动用户名密码验证 #auth=true #以守护进程的方式运行MongoDB。确保其稳定 fork=true ############################mongodb配置文件###################### #把配置好的mongodb复制到其他两台机器 $ scp -r /opt/mongodb root@172.29.1.21:/opt/ $ scp -r /opt/mongodb root@172.29.1.22:/opt/ $ vim /opt/mondogd/conf/mongodb.conf         #依次修改其他两台机器上配置文件绑定的ip $ /opt/mongodb/bin/mongod -f /opt/mongodb/conf/mongodb.conf    #启动mongodb服务(3台上都执行) #如果是32位,需要在配置文件加上,journal=true    storageEngine=mmapv1  oplogSize=128 $ /opt/mongodb/bin/mongo 192.168.1.20:27017        #随便选择一台机器连接mongod > use admin        #切换到数据库admin(相当于mysql的mysql库)  #定义副本集配置,优先级priority值高的为主节点,_id的值repset一定要和配置文件中定义的replSet的值相同.对于仲裁点一定要加上arbiterOnly:true,指定只做仲裁节点
> config = {_id: "repset", members: [{_id:0,host:‘192.168.1.20:27017‘,priority:2},{_id:1,host:‘192.168.1.21:27017‘,priority:1},{_id:2,host:‘192.168.1.22:27017‘,arbiterOnly:true}]}       > rs.initiate(config)    #初始化副本集配置,会生成一些文件到data目录,,不能读写.ok是1就成功 > rs.status()    #查看副本集集群状态,"health" : 1代表服务器可用,"stateStr" : "PRIMARY"表名自己的身份是master > rs.isMaster()    #查看本机是否是master > rs.conf()    #显示了每个节点的健康状况,名称,启动的时间,节点的类型等。查看当前副本集的配置表   #连接master写入数据,看slave是否能查到,测试slave是否可以写数据(不可以,会提示no master) $ /opt/mongodb/bin/mongo 192.168.1.20:27017 repset:PRIMARY>  db.users.insert({username: "tangwan1", age: 22}) WriteResult({ "nInserted" : 1 }) repset:SECONDARY> show collections [thread1] Error: listCollections failed: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } #mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读. repset:SECONDARY> rs.slaveOk() repset:SECONDARY> show collections users repset:SECONDARY> db.users.find() { "_id" : ObjectId("572ed5c9d7ef239c6064117f"), "username" : "visionwang", "age" : 26 }   #杀掉master,看slave是否切换为master $ kill -9 `ps -ef|grep mongod|grep -v grep|awk ‘{print $2}‘` #此时再连接原来的slave(如果已经连着,直接enter.....),看到repset:SECONDARY> 变成repset:PRIMARY>  repset:PRIMARY>  db.users.insert({username: "tangwan2", age: 22}) repset:PRIMARY> db.users.insert({username: "tangwan2", age: 22}) WriteResult({ "nInserted" : 1 }) repset:PRIMARY> db.users.find() { "_id" : ObjectId("572ed5c9d7ef239c6064117f"), "username" : "tangwan1", "age" : 22 } { "_id" : ObjectId("5752973d814ab9878378c719"), "username" : "tangwan2", "age" : 22 } #再启动刚杀掉的master,可以看到它成了slave了 $ /opt/mongodb/bin/mongod -f /opt/mongodb/conf/mongodb.conf $ /opt/mongodb/bin/mongo 192.168.1.21:27017 #检查它死后那段时间数据是否也复制过来了 repset:SECONDARY> db.users.find()   #用openssl生成密钥,用于集群间机器的信任,为心跳连接加密 $ yum -y install openssl $ openssl rand -base64 741 > mongodb.key   #给mongodb添加用户和密码 erp;#数据库名 erp_user#用户名 zgtx123.com#密码 ##创建用户前需要修改currentVersion,认证级别 repset:PRIMARY>  db.system.version.find() repset:PRIMARY>  db.system.version.update({‘_id‘:‘authSchema‘},{$set:{‘currentVersion‘:3}}) repset:PRIMARY>  db.system.version.find() ##查看,创建,删除用户 repset:PRIMARY> use admin repset:PRIMARY> db.system.users.find() repset:PRIMARY> db.system.users.remove({user:"erp_user"}) repset:PRIMARY> use erp switched to db erp repset:PRIMARY> db.createUser( {"user":"erp_user","pwd":"zgtx123.com","roles":[{role:"readWrite",db:"erp"}]},{w:"majority",wtimeout:5000}) Successfully added user: { "user" : "erp_user", "roles" : [ { "role" : "readWrite", "db" : "erp" } ] } ##修改3个配置文件auth=true;重启mongodb $ kill -9 `ps -ef|grep mongod|grep -v grep|awk ‘{print $2}‘` $ /opt/mongodb/bin/mongod -f /opt/mongodb/conf/mongodb.conf $ /opt/mongodb/bin/mongo 192.168.1.20:27017/erp -u erp_user -p#输入密码 > db.auth("erp_user", "zgtx123.com")     #也是一种认证方式                      



来自为知笔记(Wiz)



22.mongodb副本集集群

标签:

人气教程排行