单节点mongodb3.4.3转换成复制集(带账号密码)

* 背景

现有一个单节点启动的mongodb实例,版本:3.4.3。带账号密码。目标是将该单节点转换成复制集结构,同时带账号密码登录复制集。

单节点的mongodb的配置文件为:

mongo.conf

dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/data/logs/mongodb.log
logappend=true
journal=true
quiet=true
port=27017
fork=true
auth=true

链接字符串为:

mongodb://user:passed@10.1.161.94:27017/dbName
* 步骤
  • 1 修改原先的配置文件为:mongod.yml
systemLog:
  destination: file
  path: "/usr/local/mongodb/data/logs/mongodb.log"
  logAppend: true
  quiet: true
storage:
  dbPath: "/usr/local/mongodb/data/db"
  journal:
    enabled: true
processManagement:
  fork: true
net:
  bindIp: localhost,10.1.161.94
  port: 27017
security:
  keyFile: "/usr/local/mongodb/keyFile" 
replication:
  replSetName: "rs0" 
  • 2 生成一个为replica set 成员准备的SSL KEY文件
> touch keyFile
> openssl rand -base64 741 > keyFile
> chmod 600 keyFile

这里keyFile的权限给600就够了,不要给777,否则mongodb实例启动不起来,会报权限too open。

  • 3 以新配置文件重新启动该实例。
> ./bin/mongod --config mongod.yml
  • 4 登录该实例,初始化复制集
> ./bin/mongo 
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
> use admin
switched to db admin
> db.auth("user","passed")
1
> rs.initiate()
  • 5 目前该复制集只有一个节点,在另外一台机器上部署另外两个节点:10.1.161.95:27017 10.1.161.95:28017
    将keyFile复制过去,配置文件分别为:

mongod_2.yml

systemLog:
  destination: file
  path: "/usr/local/mongodb/data_2/logs/mongodb.log"
  logAppend: true
  quiet: true
storage:
  dbPath: "/usr/local/mongodb/data_2/db"
  journal:
    enabled: true
processManagement:
  fork: true
net:
  bindIp: localhost,10.1.161.95
  port: 27017
security:
  keyFile: "/usr/local/mongodb/keyFile" 
replication:
  replSetName: "rs0" 

mongod_3.yml

systemLog:
  destination: file
  path: "/usr/local/mongodb/data_3/logs/mongodb.log"
  logAppend: true
  quiet: true
storage:
  dbPath: "/usr/local/mongodb/data_3/db"
  journal:
    enabled: true
processManagement:
  fork: true
net:
  bindIp: localhost,10.1.161.95
  port: 28017
security:
  keyFile: "/usr/local/mongodb/keyFile" 
replication:
  replSetName: "rs0" 
  • 6 启动另外2个节点,登录主节点10.1.161.94:27017,将这2个几点添加进复制集。
> rs.add("10.1.161.95:27017")
> rs.add("10.1.161.95:28017")
  • 7 查看复制集状态
> rs.status()
{
    "set" : "rs0",
    "date" : ISODate("2017-12-12T02:01:31.751Z"),
    "myState" : 2,
    "term" : NumberLong(7),
    "syncingTo" : "10.1.161.95:27017",
    "heartbeatIntervalMillis" : NumberLong(2000),
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1513044128, 1),
            "t" : NumberLong(7)
        },
        "appliedOpTime" : {
            "ts" : Timestamp(1513044128, 1),
            "t" : NumberLong(7)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1513044128, 1),
            "t" : NumberLong(7)
        }
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "10.1.161.94:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 59968,
            "optime" : {
                "ts" : Timestamp(1513044128, 1),
                "t" : NumberLong(7)
            },
            "optimeDate" : ISODate("2017-12-12T02:02:08Z"),
            "syncingTo" : "10.1.161.95:27017",
            "configVersion" : 3,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "10.1.161.95:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 59966,
            "optime" : {
                "ts" : Timestamp(1513044128, 1),
                "t" : NumberLong(7)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1513044128, 1),
                "t" : NumberLong(7)
            },
            "optimeDate" : ISODate("2017-12-12T02:02:08Z"),
            "optimeDurableDate" : ISODate("2017-12-12T02:02:08Z"),
            "lastHeartbeat" : ISODate("2017-12-12T02:01:29.913Z"),
            "lastHeartbeatRecv" : ISODate("2017-12-12T02:01:30.306Z"),
            "pingMs" : NumberLong(0),
            "electionTime" : Timestamp(1512983310, 1),
            "electionDate" : ISODate("2017-12-11T09:08:30Z"),
            "configVersion" : 3
        },
        {
            "_id" : 2,
            "name" : "10.1.161.95:28017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 59966,
            "optime" : {
                "ts" : Timestamp(1513044128, 1),
                "t" : NumberLong(7)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1513044128, 1),
                "t" : NumberLong(7)
            },
            "optimeDate" : ISODate("2017-12-12T02:02:08Z"),
            "optimeDurableDate" : ISODate("2017-12-12T02:02:08Z"),
            "lastHeartbeat" : ISODate("2017-12-12T02:01:29.913Z"),
            "lastHeartbeatRecv" : ISODate("2017-12-12T02:01:30.021Z"),
            "pingMs" : NumberLong(0),
            "syncingTo" : "10.1.161.95:27017",
            "configVersion" : 3
        }
    ],
    "ok" : 1
}
  • 8 复制集的链接字符串为:
mongodb://user:passed@10.1.161.94:27017,10.1.161.95:27017,10.1.161.95:28017/dbName?replicaSet=rs0
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值