一、创建3个节点目录
[root@db1 opt]# mkdir -p /opt/mongo_2801{7,8,9}/{conf,log,pid}
[root@db1 opt]# mkdir -p /data/mongo_2801{7,8,9}
二、创建配置文件
[root@db1 opt]# cat >/opt/mongo_28017/conf/mongodb.conf <<EOF
> systemLog:
> destination: file
> logAppend: true
> path: /opt/mongo_28017/log/mongodb.log
>
> storage:
> journal:
> enabled: true
> dbPath: /data/mongo_28017
> directoryPerDB: true
> wiredTiger:
> engineConfig:
> cacheSizeGB: 0.5
> directoryForIndexes: true
> collectionConfig:
> blockCompressor: zlib
> indexConfig:
> prefixCompression: true
>
> processManagement:
> fork: true
> pidFilePath: /opt/mongo_28017/pid/mongod.pid
>
> net:
> port: 28017
> bindIp: 127.0.0.1,10.0.0.51
>
> replication:
> oplogSizeMB: 1024
> replSetName: dba
> EOF
三、配置文件拷贝到其他节点
[root@db1 opt]# cp /opt/mongo_28017/conf/mongodb.conf /opt/mongo_28018/conf/
[root@db1 opt]# cp /opt/mongo_28017/conf/mongodb.conf /opt/mongo_28019/conf/
四、替换端口号
[root@db1 opt]# sed -i 's#28017#28018#g' /opt/mongo_28018/conf/mongodb.conf
[root@db1 opt]# sed -i 's#28017#28019#g' /opt/mongo_28019/conf/mongodb.conf
五、启动多实例
[root@db1 conf]# mongod -f /opt/mongo_28017/conf/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 31904
child process started successfully, parent exiting
[root@db1 conf]# mongod -f /opt/mongo_28018/conf/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 31976
child process started successfully, parent exiting
[root@db1 conf]# mongod -f /opt/mongo_28019/conf/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 32022
child process started successfully, parent exiting
六、检查服务是否启动
[root@db1 conf]# ps -ef|grep mongo
mongo 14875 1 0 10:27 ? 00:02:06 /opt/mongodb/bin/mongod -f /opt/mongo_27017/conf/mongodb.conf
root 31904 1 1 16:16 ? 00:00:01 mongod -f /opt/mongo_28017/conf/mongodb.conf
root 31976 1 1 16:17 ? 00:00:01 mongod -f /opt/mongo_28018/conf/mongodb.conf
root 32022 1 1 16:17 ? 00:00:01 mongod -f /opt/mongo_28019/conf/mongodb.conf
root 32108 18801 0 16:18 pts/0 00:00:00 grep mongo
[root@db1 conf]# netstat -lntup|grep mongo
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 14875/mongod
tcp 0 0 10.0.0.51:27017 0.0.0.0:* LISTEN 14875/mongod
tcp 0 0 127.0.0.1:28017 0.0.0.0:* LISTEN 31904/mongod
tcp 0 0 10.0.0.51:28017 0.0.0.0:* LISTEN 31904/mongod
tcp 0 0 127.0.0.1:28018 0.0.0.0:* LISTEN 31976/mongod
tcp 0 0 10.0.0.51:28018 0.0.0.0:* LISTEN 31976/mongod
tcp 0 0 127.0.0.1:28019 0.0.0.0:* LISTEN 32022/mongod
tcp 0 0 10.0.0.51:28019 0.0.0.0:* LISTEN 32022/mongod
七、初始化集群
> rs.initiate(
... {
... _id: "dba",
... version: 1,
... members: [
... { _id: 0, host : "10.0.0.51:28017" }, { _id: 1, host : "10.0.0.51:28018" }, { _id: 2, host : "10.0.0.51:28019" }
... ] }
... )
{
"ok" : 1,
"operationTime" : Timestamp(1593418961, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1593418961, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
八、主库插入测试数据
dba:PRIMARY> db.inventory.insertMany([
... { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
... { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
... { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
... { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
... { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
... ]);
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5ef9a5cfe4dd2ca3e1daa2f0"),
ObjectId("5ef9a5cfe4dd2ca3e1daa2f1"),
ObjectId("5ef9a5cfe4dd2ca3e1daa2f2"),
ObjectId("5ef9a5cfe4dd2ca3e1daa2f3"),
ObjectId("5ef9a5cfe4dd2ca3e1daa2f4")
]
}
九、主库查询插入数据
dba:PRIMARY> db.inventory.find()
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f0"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f1"), "item" : "notebook", "qty" : 50, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "A" }
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f2"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" }
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f3"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f4"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }
十、从库查询(报错)
dba:SECONDARY> db.inventory.find()
Error: error: {
"operationTime" : Timestamp(1593419343, 1),
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk",
"$clusterTime" : {
"clusterTime" : Timestamp(1593419343, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
十一、临时设置从节点可读
dba:SECONDARY> rs.slaveOk()
dba:SECONDARY> db.inventory.find()
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f2"), "item" : "paper", "qty" : 100, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "D" }
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f1"), "item" : "notebook", "qty" : 50, "size" : { "h" : 8.5, "w" : 11, "uom" : "in" }, "status" : "A" }
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f3"), "item" : "planner", "qty" : 75, "size" : { "h" : 22.85, "w" : 30, "uom" : "cm" }, "status" : "D" }
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f4"), "item" : "postcard", "qty" : 45, "size" : { "h" : 10, "w" : 15.25, "uom" : "cm" }, "status" : "A" }
{ "_id" : ObjectId("5ef9a5cfe4dd2ca3e1daa2f0"), "item" : "journal", "qty" : 25, "size" : { "h" : 14, "w" : 21, "uom" : "cm" }, "status" : "A" }
十二、永久设置
[root@db1 ~]# echo "rs.slaveOk()" > ~/.mongorc.js
十三、副本集常用命令
dba:PRIMARY> rs.config()
dba:PRIMARY> rs.status()
dba:PRIMARY> rs.isMaster()
dba:PRIMARY> rs.printReplicationInfo()
configured oplog size: 1024MB
log length start to end: 632secs (0.18hrs)
oplog first event time: Mon Jun 29 2020 16:22:41 GMT+0800 (CST)
oplog last event time: Mon Jun 29 2020 16:33:13 GMT+0800 (CST)
now:
dba:PRIMARY> rs.printSlaveReplicationInfo()
source: 10.0.0.51:28018
syncedTo: Mon Jun 29 2020 16:33:23 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
source: 10.0.0.51:28019
syncedTo: Mon Jun 29 2020 16:33:23 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
0 Comments