mongo集群

 

 

 

 

 

 

 

 

 

 

 

 

MongoDB集群笔记

MongoDB是分布式文件存储数据库,非关系型数据库的一种。

一.           下载MongoDB3.6

mkdir /data/mongodb/{data,log} -p  && cd /data/mongodb

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.17.tgz

二.           解压到安装目录

tar xf mongodb-linux-x86_64-3.6.17.tgz

三.           编写启动配置文件

[root@expelm ~]# cat /data/mongodb/mongod.conf

# 指定数据库路径

dbpath=/data/mongodb/data

# 指定日志文件,不是路径

logpath=/data/mongodb/log/master.log

# 指定PID文件,不指定没有PID文件

pidfilepath=/data/mongodb/mongod.pid

# 设置每个数据库单独存放

directoryperdb=true

# 设置日志追加

logappend=true

# 设置副本集名称(副本集名称要和console中设置的_id名称一致)

#replSet=rs

#keyFile=/data/mongodb/data/mongod.keyfile

# 设置端口

port=27017

# 设置绑定IP

bind_ip=172.17.51.173

# 设置oplog的大小(MB)

oplogSize=10000

# 以守护方式运行

fork=true

# 设置最大连接数

maxConns=10000

# 开启认证

#auth=true

四.           配置命令路径

ln -s /data/mongodb/mongodb-linux-x86_64-3.6.17/bin/mongod /usr/bin/

ln -s /data/mongodb/mongodb-linux-x86_64-3.6.17/bin/mongo /usr/bin/

五.           设置开机自启及启动服务

mongod -f /data/mongodb/mongodb-linux-x86_64-3.6.17/mongod.conf

echo "/usr/bin/mongod -f /data/mongodb/mongodb-linux-x86_64-3.6.17/mongod.conf" >> /etc/rc.d/rc.local

六.           配置集群

1、三台服务都启动后,在任意一台主机上登陆

mongo --host 192.168.187.141

2、进入到admin

use admin

3、初始化集群

rs.initiate( {

   _id : "rs", #名称要和配置文件中副本集名称一致

   members: [

      { _id: 0, host: "192.168.187.141:27017" },

      { _id: 1, host: "192.168.187.141:27018" },

      { _id: 2, host: "192.168.187.141:27019" }

   ]

});

4、检查配置情况

rs:PRIMARY> rs.conf()

{

         "_id" : "rs",

         "version" : 1,

         "protocolVersion" : NumberLong(1),

         "members" : [

                   {

                            "_id" : 0,

                            "host" : "192.168.187.141:27017",

                            "arbiterOnly" : false,

                            "buildIndexes" : true,

                            "hidden" : false,

                            "priority" : 1,

                            "tags" : {

                                    

                            },

                            "slaveDelay" : NumberLong(0),

                            "votes" : 1

                   },

                   {

                            "_id" : 1,

                            "host" : "192.168.187.141:27018",

                            "arbiterOnly" : false,

                            "buildIndexes" : true,

                            "hidden" : false,

                            "priority" : 1,

                            "tags" : {

                                    

                            },

                            "slaveDelay" : NumberLong(0),

                            "votes" : 1

                   },

                   {

                            "_id" : 2,

                            "host" : "192.168.187.141:27019",

                            "arbiterOnly" : true,

                            "buildIndexes" : true,

                            "hidden" : false,

                            "priority" : 0,

                            "tags" : {

                                    

                            },

                            "slaveDelay" : NumberLong(0),

                            "votes" : 1

                   }

         ],

         "settings" : {

                   "chainingAllowed" : true,

                   "heartbeatIntervalMillis" : 2000,

                   "heartbeatTimeoutSecs" : 10,

                   "electionTimeoutMillis" : 10000,

                   "catchUpTimeoutMillis" : -1,

                   "catchUpTakeoverDelayMillis" : 30000,

                   "getLastErrorModes" : {

                           

                   },

                   "getLastErrorDefaults" : {

                            "w" : 1,

                            "wtimeout" : 0

                   },

                   "replicaSetId" : ObjectId("5ea14c3b733074604803901b")

         }

}

5、查看集群状态

rs:PRIMARY> rs.status()

{

         "set" : "rs",

         "date" : ISODate("2020-04-23T08:33:22.404Z"),

         "myState" : 1,

         "term" : NumberLong(1),

         "syncingTo" : "",

         "syncSourceHost" : "",

         "syncSourceId" : -1,

         "heartbeatIntervalMillis" : NumberLong(2000),

         "optimes" : {

                   "lastCommittedOpTime" : {

                            "ts" : Timestamp(1587630798, 1),

                            "t" : NumberLong(1)

                   },

                   "readConcernMajorityOpTime" : {

                            "ts" : Timestamp(1587630798, 1),

                            "t" : NumberLong(1)

                   },

                   "appliedOpTime" : {

                            "ts" : Timestamp(1587630798, 1),

                            "t" : NumberLong(1)

                   },

                   "durableOpTime" : {

                            "ts" : Timestamp(1587630798, 1),

                            "t" : NumberLong(1)

                   }

         },

         "members" : [

                   {

                            "_id" : 0,

                            "name" : "192.168.187.141:27017",

                            "health" : 1,

                            "state" : 1,

                            "stateStr" : "PRIMARY",    # 主节点

                            "uptime" : 3077,

                            "optime" : {

                                     "ts" : Timestamp(1587630798, 1),

                                     "t" : NumberLong(1)

                            },

                            "optimeDate" : ISODate("2020-04-23T08:33:18Z"),

                            "syncingTo" : "",

                            "syncSourceHost" : "",

                            "syncSourceId" : -1,

                            "infoMessage" : "",

                            "electionTime" : Timestamp(1587629127, 1),

                            "electionDate" : ISODate("2020-04-23T08:05:27Z"),

                            "configVersion" : 1,

                            "self" : true,

                            "lastHeartbeatMessage" : ""

                   },

                   {

                            "_id" : 1,

                            "name" : "192.168.187.141:27018",

                            "health" : 1,

                            "state" : 2,

                            "stateStr" : "SECONDARY",     # 次节点

                            "uptime" : 1686,

                            "optime" : {

                                     "ts" : Timestamp(1587630798, 1),

                                     "t" : NumberLong(1)

                            },

                            "optimeDurable" : {

                                     "ts" : Timestamp(1587630798, 1),

                                     "t" : NumberLong(1)

                            },

                            "optimeDate" : ISODate("2020-04-23T08:33:18Z"),

                            "optimeDurableDate" : ISODate("2020-04-23T08:33:18Z"),

                            "lastHeartbeat" : ISODate("2020-04-23T08:33:21.723Z"),

                            "lastHeartbeatRecv" : ISODate("2020-04-23T08:33:22.334Z"),

                            "pingMs" : NumberLong(0),

                            "lastHeartbeatMessage" : "",

                            "syncingTo" : "192.168.187.141:27017",

                            "syncSourceHost" : "192.168.187.141:27017",

                            "syncSourceId" : 0,

                            "infoMessage" : "",

                            "configVersion" : 1

                   },

                   {

                            "_id" : 2,

                            "name" : "192.168.187.141:27019",

                            "health" : 1,

                            "state" : 7,

                            "stateStr" : "ARBITER",   

                            "uptime" : 1686,

                            "lastHeartbeat" : ISODate("2020-04-23T08:33:21.672Z"),

                            "lastHeartbeatRecv" : ISODate("2020-04-23T08:33:22.185Z"),

                            "pingMs" : NumberLong(0),

                            "lastHeartbeatMessage" : "",

                            "syncingTo" : "",

                            "syncSourceHost" : "",

                            "syncSourceId" : -1,

                            "infoMessage" : "",

                            "configVersion" : 1

                   }

         ],

         "ok" : 1,

         "operationTime" : Timestamp(1587630798, 1),

         "$clusterTime" : {

                   "clusterTime" : Timestamp(1587630798, 1),

                   "signature" : {

                            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

                            "keyId" : NumberLong(0)

                   }

         }

}

集群配置完成,可以测试在主节点写入数据,看从节点是否同步成功。

七.           配置集群认证

1、首先开启数据库认证,创建超级用户,权限为root即超级用户

use admin

db.createUser({user: "admin", pwd: "microger2019", roles: ["root" ]})

use miot

db.createUser({user: "microger",pwd: "microger",roles: [{role: "readWrite", db: "miot" }]})

2、keyfile的创建

         三台要一样,而且文件权限为X00,创建完成后同步到其他服务器

       openssl rand -base64 100 > /data/mongodb/data/mongod.keyfile

chmod 600 /data/mongodb/data/mongod.keyfile

开启配置文件中集群认证配置的相关选项

keyFile=/data/mongodb/data/mongod.keyfile

auth=true

重启所有MongoDB服务

3、登陆验证

mongo -u microger -p microger --authenticationDatabase miot

八.           MongoDB的相关操作

1、MongoDB的备份       

./mongodb-linux-x86_64-3.6.17/bin/mongodump -d miot --host 172.17.42.118 --port 10805 -u microger -p microger --authenticationDatabase=miot  -o ./dump/

2、MongoDB的恢复

./mongodb-linux-x86_64-3.6.17/bin/mongorestore -d miot --dir miot --host 192.168.187.141 --port 27019 -u admin -p microger2019

3、MongoDB开启从库查询

rs.slaveOk();

4、添加节点

rs.add( { host: "192.168.187.141:27020", priority: 0, votes: 0 } )

5、移除节点

rs.remove("192.168.187.141:27020")

6、帮助

Tab键可以命令补全,help可以查看帮助

posted @ 2020-07-06 10:11  大小狮子  阅读(299)  评论(0编辑  收藏  举报