软件版本64位:
$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.0.tgz
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])
参考:
$ 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") #也是一种认证方式
- Mongodb副本集+分片集群环境部署记录
前面详细介绍了mongodb的副本集和分片的原理,这里就不赘述了.下面记录Mongodb副本集+分片集群环境部署过程: MongoDB Sharding Cluster,需要三种角色: Shard S ...
- Mongodb副本集+分片集群环境部署
前面详细介绍了mongodb的副本集和分片的原理,这里就不赘述了.下面记录Mongodb副本集+分片集群环境部署过程: MongoDB Sharding Cluster,需要三种角色: Shard S ...
- mongodb 3.4 集群搭建:分片+副本集
mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- mongodb 3.6 集群搭建:分片+副本集
mongodb是最常用的nosql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- MongoDB 高可用集群副本集+分片搭建
MongoDB 高可用集群搭建 一.架构概况 192.168.150.129192.168.150.130192.168.150.131 参考文档:https://www.cnblogs.com/va ...
- MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...
- 关于MongoDB副本集和分片集群有关用户和权限的说明分析
1.MongoDB副本集 可以先创建超管用户,然后再关闭服务,创建密钥文件,修改配置文件,启动服务,使用超管用户登录验证,然后创建普通用户 2.MongoDB分片集群 先关闭服务,创建密钥文件,修改配 ...
- MongoDB副本集学习(一):概述和环境搭建
MongoDB副本集概述 以下图片摘自MongoDB官方文档:http://docs.mongodb.org/manual/core/replication-introduction/ Primary ...
- nodejs+mongoose操作mongodb副本集实例
继上一篇设置mongodb副本集之后,开始使用nodejs访问mongodb副本集: 1:创建项目 express 项目名称 2:npm install mongoose 安装mongo ...
随机推荐
- jQuery .attr("checked")得undefined 问题解决
出现此错误是因为JQuery版本升级的问题.所以此处应该使用.prop(); 那么,什么时候使用attr(),什么时候使用prop()?1.添加属性名称该属性就会生效应该使用prop();2.是有tr ...
- 点餐系统3个sprint的团队贡献分
第一次冲刺贡献分 团员名字 贡献分 麦锦俊 18分 冯婉莹 21分 李康梅 19分 张鑫相 20分 曹嘉琪 22分 第二次冲刺贡献分 团员名字 贡献分 麦锦俊 19分 冯婉莹 20分 ...
- fopen,fread和fwrite
在最近的编程练习和写东西的过程中,常常用到了fopen和fread两个函数来读取本地文件.之前使用这两个函数时,一直没有出现过什么问题.也是因为没有出现问题,对这两个函数的用法的一些细节没有很了解,所 ...
- HDU5870 Alice's Adventure in Wonderland
大概做法是这样的 考虑最朴素的做法,预处理出1到所有点的最短路数组dis1和方案数数组cnt1,和预处理出n到所有点的最短路数组dis2和方案数数组出cnt2,然后暴力枚举点对(A,B),如果A和B之 ...
- qq
引用:http://blog.sina.com.cn/s/blog_9e2e84050101blqz.html 腾讯QQ使用何种开发平台? 腾讯QQ的开发分客户端软 ...
- 用于svn添加当前目录下所有未追踪的文件,和删除所有手动删除的文件的脚本
由于要经常用到类似与 git 中的 git add --all 这种操作,但是发现svn中并不支持类似的操作. 虽然可以使用 wildcard 进行匹配,但是 wildcard是在shell中进行匹配 ...
- Caffe + Ubuntu 14.04 64bit + 无CUDA(linux下安装caffe(无cuda)以及python接口)
安装Caffe指导书 环境: Linux 64位 显卡为Intel + AMD,非英伟达显卡 无GPU 一. 安装准备工作 1. 以管理员身份登录 在左上角点击图标,搜索terminal(即终端),以 ...
- 谈谈我印象中的JVM不足之处
研究JVM也有一段时间了,其间也发现了它的很多不足之处,在此一一道来,由于本人对JVM的理解有限,如有错误的地方,还请大家指正:本文不介绍名词性术语和概念性知识,如有不了解的地方可Search Goo ...
- Linq创建带命名空间、前缀、Soap格式的XML
关于XML,我也是刚接触,关于一般常见的XML,博客园.CSDN上的资料很多,对于不常见的带命名空间.前缀.Soap格式的XML的描述相对来说寥寥无几,上一篇我写到了对相对复杂的XML的读操作,下面说 ...
- Linux中profile文件详解(转)
1.Linux是一个多用户的操作系统.每个用户登录系统后,都会有一个专用的运行环境.通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义.用户可以对自己的运行环境进行定制,其方法 ...