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

  

原文地址:https://www.cnblogs.com/rootid/p/10245155.html

时间: 2024-10-23 21:42:56

mongo复制集的相关文章

mongo复制集搭建

#复制集的使用 #1.准备复制集所用的机器以及软件 #2.启动mongodb(主从)--dbpath 指定数据存放路径  logpath指定日志文件存放文件 fork后台运行  port指定端口 replSet指定复制集 ./mongod --dbpath /data/mongo/mongo/data/ --logpath=/data/mongo/mongo/log/mongod.log --fork --port 27017 --replSet rps1 #需要做主从复制的都执行上面语句 #选

mongo复制集、分片集(亲测)

1.1 架构思路: 192.168.50.131              192.168.50.131             192.168.50.132 mongos mongos mongos configsvr configsvr configsvr Shard1 Shard1 Shard1 Shard2 Shard2 Shard2 Shard3 Shard3 Shard3 1.2 安装使用虚拟机: 192.168.50.130,192.168.50.131,192.168.50.13

mongo 复制集命令

1.登录primary2.use admin >rs.add("new_node:port") 或 rs.add({"_id":4,"host":"new_node:port","priority":1,"hidden":false})   3.use admin>rs.addArb("new_node;port") 或 rs.addArb({"

【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(三)

关于windows平台搭建Mongo数据库复制集这个话题,我已经在前面写了两篇博客 第一篇: 如何在windows平台搭建Mongo数据库复制集 第二篇: 数据同步和故障自适应测试 在本篇里面,咱们重点总结一下复制集,以及分析一下它的工作原理 一.常见场景 应用程序和数据库之间的网络连接丢失 计划停机.断电.数据库服务硬盘故障等等 复制可以进行故障转移,复制能让你在副本间均衡读负载,保证复制节点与主节点保持同步 二.工作原理 副本集依赖于两个基础机制:oplog和"心跳"(heartb

【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)

原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica  Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自动修复功能成员节点的功能,各个DB之间的数据完全一致,大大降低了单点故障的风险. [] 以上图示是三个节点的Replica Set架构.该图来源于红丸编写的<Mongodb管理与开发精要>这本书.从上图可以看出,结构类似与一个集群,其实完全可以当做一个集群.因为它确实和集群实现的作用是相同的. 一

Mongo的Replica Sets (复制集)的配置全过程和心得体会

http://blog.csdn.net/bloggongchang/article/details/7272403 一.MongoDB Replica Sets(副本集)简单的说就是有自动故障恢复功能的主从集群,主从集群和副本集的最为明显的区别是副本集没有固定的"主节点":整个集群会选举出来一个"主节点"当其不能正常工作时则变更到其他的节点,提高了系统的稳定性. MongoDB Replica Sets的架构如图所示: 如上图所示,MongoDB Replica

【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(二)

在上篇博客中,我们主要阐述了在windows平台下如何搭建mongodb复制集.详细博客地址: 由于篇幅有限在上篇没有对结果进行验证,在本篇博客中我们主要进行测试: 通过rs.status()命令我们可以查询到各个节点运行正常. 一.数据同步测试 在28011.28012端口上进行插入: 查看原因:网上找到答案 首先这是正常的,因为SECONDARY是不允许读写的, 在写多读少的应用中,使用Replica Sets来实现读写分离.通过在连接时指定或者在主库指定slaveOk,由Secondary

【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(一)

Replica  Sets(复制集)是在mongodDB1.6版本号開始新增的功能.它能够实现故障自己主动切换和自己主动修复功能成员节点的功能,各个DB之间的数据全然一致,大大减少了单点故障的风险. [] 以上图示是三个节点的Replica Set架构.该图来源于红丸编写的<Mongodb管理与开发精要>这本书.从上图能够看出,结构类似与一个集群.事实上全然能够当做一个集群.由于它确实和集群实现的作用是同样的. 一.部署Replica Sets. 接下来显示怎样在一台server上面演示部署3

57-1、2、3 NoSQL基础及MongoDB、MongoDB基本应用、mongodb索引及复制集

02MongoDB基本应用 配置环境: node1:192.168.1.121CentOS release 6.7 [[email protected] ~]# cd mongodb-2.6.4/ [[email protected] mongodb-2.6.4]# ls mongodb-org-2.6.4-1.x86_64.rpm         mongodb-org-shell-2.6.4-1.x86_64.rpm mongodb-org-mongos-2.6.4-1.x86_64.rpm