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

来源:互联网 发布:淘宝动漫周边网店 编辑:程序博客网 时间:2024/05/30 23:02

* 背景

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

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

mongo.conf

dbpath=/usr/local/mongodb/data/dblogpath=/usr/local/mongodb/data/logs/mongodb.loglogappend=truejournal=truequiet=trueport=27017fork=trueauth=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: truestorage:  dbPath: "/usr/local/mongodb/data/db"  journal:    enabled: trueprocessManagement:  fork: truenet:  bindIp: localhost,10.1.161.94  port: 27017security:  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.3connecting to: mongodb://127.0.0.1:27017MongoDB server version: 3.4.3> use adminswitched 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: truestorage:  dbPath: "/usr/local/mongodb/data_2/db"  journal:    enabled: trueprocessManagement:  fork: truenet:  bindIp: localhost,10.1.161.95  port: 27017security:  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: truestorage:  dbPath: "/usr/local/mongodb/data_3/db"  journal:    enabled: trueprocessManagement:  fork: truenet:  bindIp: localhost,10.1.161.95  port: 28017security:  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
阅读全文
0 0
原创粉丝点击