mongodb集群环境

1. 版本要求

现状:mongodb 3.2.4 当前单机部署,未开启权限验证
目标:三台主机使用Replica set副本做集群,不开启权限验证

docker pull tutum/mongodb:3.2
docker tag tutum/mongodb:3.2 192.168.2.39:5000/mongodb:3.2
docker push 192.168.2.39:5000/mongodb:3.2

2. 单机mongo运行

2.1 配置文件mongod.conf

# where to write logging data.
storage:
  dbPath: /data/db/
  directoryPerDB: true
net:
  port: 27017
  bindIp : 192.168.2.37
replication:
  oplogSizeMB: 20
  replSetName: rep01

2.2 各主机运行镜像

docker run -d --net=host --name mongo \
-v /my/mongo/data:/data/db \
-v /my/mongo/keyfiles:/opt/keyfile \
-v /my/mongo/mongod.conf:/etc/mongod.conf \
192.168.2.39:5000/mongodb:3.2  mongod -f /etc/mongod.conf

3. 建立主副集群

# 37机器上运行
docker exec -ti mongo /bin/bash
# 进入bash后运行mongo进入登陆服务器
mongo  192.168.2.37
# 开启副本集,运行后,可能会变成rep01:PRIMARY
rs.initiate()
# 加入其它副本,正确返回{"ok":1}
rs.add("192.168.2.38")
rs.add("192.168.2.39")
# 查看状态,可以看到3台机器主副
rs.status()

4. 高可用性测试

#在37关闭mongo,当前37为主
docker stop mongo
#在38上按以下方式查看,依次运行以下命令,可以看到39变成PRIMARY
docker exec -ti mongo /bin/bash
mongo  192.168.2.38
rs.status()
# 重新在37上启动mongo,可以看到377变成副节点
docker start mongo
# 主从自动切换成功

5. mongo部分操作

  -- collection相当于tables
  show dbs
  show tables
  -- 创建并使用,新创建的必须有数据才有用show tables看到
  use hhh_db
  -- 创建数据
  db.hhh_db.insert({"name":"hhh"})
  -- 删除当前数据库
  db.dropDatabase()
  -- 
  db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
  -- 查询第4-5两条记录,find第一个参数为查询条件,也是bson格式
  db.col.find().limit(2).skip(3)
  db.col.find({"id":{"$gt":123}})

6. 权限配置

# 使用用户名密码登陆
mongo admin -u admin -p mypass
# 增加一个数据库用户
db.createUser( {
 user: "super",
 pwd: "pwd",
 roles: [ { role: "root", db: "admin" } ]
});
# 操作前授权 
db.auth("super", "pwd")

转载于:https://www.cnblogs.com/vipmint/p/5666559.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值