mongo复制集
Posted rootid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongo复制集相关的知识,希望对你有一定的参考价值。
#!/bin/bash port=( 27017 27018 27019 ) ips=( 10.0.1.167 ) #download mongo func_download_mongo(){ wget ‘https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-4.0.5.tgz‘ tar xf mongodb-linux-x86_64-ubuntu1404-4.0.5.tgz mv mongodb-linux-x86_64-ubuntu1404-4.0.5/bin/* /usr/local/sbin/ } # create directory, config file func_create_file(){ openssl rand 888 -base64 > /tmp/keyfile for i in ${port[@]}; do mkdir -p /data/mongo/$i/{config,db,log} cat > /data/mongo/$i/config/mongod.conf <<‘EOF‘ systemLog: destination: file path: /data/mongo/mongo_port/log/mongodb.log logAppend: true logRotate: rename storage: journal: enabled: true dbPath: /data/mongo/mongo_port/db directoryPerDB: true wiredTiger: engineConfig: directoryForIndexes: true collectionConfig: blockCompressor: zlib indexConfig: prefixCompression: true processManagement: fork: true pidFilePath: /data/mongo/mongo_port/mongod.pid timeZoneInfo: /usr/share/zoneinfo net: port: mongo_port bindIp: 0.0.0.0 replication: oplogSizeMB: 2048 replSetName: rep01 #security: # keyFile: /data/mongo/mongo_port/keyfile EOF sed -i -e "s/mongo_port/${i}/g" /data/mongo/$i/config/mongod.conf #cp -v /tmp/keyfile /data/mongo/$i/keyfile #chmod 400 /data/mongo/$i/keyfile done } #start mongo func_start_mongo(){ for i in ${port[@]}; do /usr/local/sbin/mongod -f /data/mongo/$i/config/mongod.conf #mongod -f /data/mongo/$i/config/mongod.conf --auth --bind_ip_all done } func_shutdown(){ for i in ${port[@]}; do /usr/local/sbin/mongod -f /data/mongo/$i/config/mongod.conf --shutdown done } #func_create_file func_start_mongo #func_shutdown #配置replicaset # config={"_id":"rep01","members":[{"_id":0,"host":"10.0.1.167:27017","priority":20},{"_id":1,"host":"10.0.1.167:27018","priority":10},{"_id":2,"host":"10.0.1.167:27019","priority":10}]} ##chen={"_id":"0","members":[{"_id":0,"host":"10.0.1.167:27017","priority":100},{"_id":1,"host":"172.16.10.29:27018","priority":100},{"_id":2,"host":"172.16.10.29:27019","priority":0},{"_id":3,"host":"172.16.10.29:27020","arbiterOnly":true}]} # rs.initiate(config) # 初始化 # rs.status() # 查看状态 #默认MongoDB复制集的从节点是不能读取数据的,但是可以使用命令来允许能够在从节点读取数据 # rs.slaveOk() #查看复制集状态信息 # rs.help # rs.printReplicationInfo() #查看oplog日志文件的大小及时间范围 # rs.printSlaveReplicationInfo() #查询节点及节点复制的时间 #关闭节点服务 # use admin #在复制集的从节点上做 # db.shutdownServer() #关闭服务,此时再想登陆该节点则会失败 #节点退出复制集 #注销掉replication的值和修改port值,将其作为单实例启动 # vim /etc/mongod2.conf # #replication: # # replSetName: rep01 # port: 27028 # mongod -f mongod.conf #启动实例,此时该实例不属于复制集 #完全备份oplog日志 #mongodump --port 27028 --db local --collection ‘oplog.rs‘ #删除节点中oplog文件 #> use local #> db.oplog.rs.drop() #部署认证复制 #创建管理用户 #>use admin #>db.createUser({"user":"root","pwd":"123123","roles":["root"]}) #配置密钥验证 #为了使其他的节点还能够和主节点进行同步,创建密钥文件使其他节点能够同步 #创建验证文件 # cd /usr/bin/ # echo "chenrs key"> chenrskey1 # echo "chenrs key"> chenrskey2 # echo "chenrs key"> chenrskey3 # echo "chenrs key"> chenrskey4 //密钥内容自定义,但是要保证内容的一致性 # chmod 600 chenrskey{1..4} //设置文件权限,不设置在接下来的启动中会报错 #修改配置文件,开启mongodb的安全验证功能(四个配置文件都要修改,注意内容差异) #vim /etc/mongod.conf #security: #keyFile: /usr/bin/chenrskey1 //每个节点的验证文件不同,要根据不同的节点修改 #clusterAuthMode: keyFile //认证类型,密钥文件认证 #重启服务 #mongod -f /etc/mongod.conf --shutdown #mongod -f /etc/mongod.conf /其他几台的重启方式都相同,重复操作即可 #身份验证登陆(先验证主,再验证从) #当你直接使用登陆命令登陆系统时,使用show dbs 是不能够查看数据的,此时就需要使用身份验证 #mongo --port 27018 #>use admin #>db.auth("root","123123") #修改权重 #>cfg = rs.conf() #:PRIMARY> cfg.members[0].priority = 20 #:PRIMARY> cfg.members[1].priority = 15 #:PRIMARY> cfg.members[2].priority = 10 #:PRIMARY> rs.reconfig(cfg) #Verify the current size of the oplog #>use local #>db.oplog.rs.stats().maxSize #reference: #https://docs.mongodb.com/manual/tutorial/change-oplog-size/ #http://blog.51cto.com/13643643/2144954 #http://blog.51cto.com/zero01/2059033
以上是关于mongo复制集的主要内容,如果未能解决你的问题,请参考以下文章