1、环境

本文基于MongoDB 4.2.3介绍如何搭建shard集群服务,环境如下表所示:

主机configsvrmongosshard1shard2shard3hdp062701727018270192702027021hdp072701727018270192702027021hdp082701727018270192702027021

2、创建相关目录

在三个节点分别创建以下目录:

mkdir -p /db/mongodata/{config,router,shard}

mkdir -p /db/mongodata/config/{data,logs}

mkdir -p /db/mongodata/router/logs

mkdir -p /db/mongodata/shard/{data,logs}

mkdir -p /db/mongodata/shard/data/{shard1,shard2,shard3}

mkdir -p /db/mongodata/shard/logs/{shard1,shard2,shard3}

chown -R mongo:mongo /db

3、配置Configsvr服务

3.1 创建配置文件

[root@hdp06 ~]# vi /db/mongodata/config/mongodb.config 

net:

  bindIp: 0.0.0.0

  port: 27017

processManagement:

  fork: "true"

replication:

  replSetName: configRS

sharding:

  clusterRole: configsvr

storage:

  dbPath: /db/mongodata/config/data

systemLog:

  destination: file

  path: /db/mongodata/config/logs/mongodb.log

# network interfaces IPV6配置

net:

port: 27017

# bindIp: 0.0.0.0

bindIpAll: true

ipv6: true

3.2 同步配置文件

[root@hdp06 ~]# scp /db/mongodata/config/mongodb.config hdp07:/db/mongodata/config

[root@hdp06 ~]# scp /db/mongodata/config/mongodb.config hdp08:/db/mongodata/config

3.3 启动configsvr服务

[root@hdp06 ~]# mongod -f /db/mongodata/config/mongodb.config 

[root@hdp07 ~]# mongod -f /db/mongodata/config/mongodb.config 

[root@hdp08 ~]# mongod -f /db/mongodata/config/mongodb.config 

3.4 初始化集群

在一个节点上执行集群初始化操作:

[root@hdp06 ~]# mongo

>rs.initiate(

  {

    _id: "configRS",

    configsvr: true,

    members: [

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

      { _id : 1, host : "hdp07:27017" },

      { _id : 2, host : "hdp08:27017" }

    ]

  }

)

--输出结果如下

{

        "ok" : 1,

        "$gleStats" : {

                "lastOpTime" : Timestamp(1615860548, 1),

                "electionId" : ObjectId("000000000000000000000000")

        },

        "lastCommittedOpTime" : Timestamp(0, 0),

        "$clusterTime" : {

                "clusterTime" : Timestamp(1615860548, 1),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        },

        "operationTime" : Timestamp(1615860548, 1)

}

--其他节点验证

[root@hdp07 ~]# mongo

......

configRS:SECONDARY> rs.status() 

{

        "set" : "configRS",

        "date" : ISODate("2021-03-16T02:10:07.503Z"),

        "myState" : 1,

        "term" : NumberLong(1),

        "syncingTo" : "",

        "syncSourceHost" : "",

        "syncSourceId" : -1,

        "configsvr" : true,

        "heartbeatIntervalMillis" : NumberLong(2000),

        "majorityVoteCount" : 2,

        "writeMajorityCount" : 2,

        "optimes" : {

                "lastCommittedOpTime" : {

                        "ts" : Timestamp(1615860600, 1),

                        "t" : NumberLong(1)

                },

                "lastCommittedWallTime" : ISODate("2021-03-16T02:10:00.285Z"),

                "readConcernMajorityOpTime" : {

                        "ts" : Timestamp(1615860600, 1),

                        "t" : NumberLong(1)

                },

                "readConcernMajorityWallTime" : ISODate("2021-03-16T02:10:00.285Z"),

                "appliedOpTime" : {

                        "ts" : Timestamp(1615860600, 1),

                        "t" : NumberLong(1)

                },

                "durableOpTime" : {

                        "ts" : Timestamp(1615860600, 1),

                        "t" : NumberLong(1)

                },

                "lastAppliedWallTime" : ISODate("2021-03-16T02:10:00.285Z"),

                "lastDurableWallTime" : ISODate("2021-03-16T02:10:00.285Z")

        },

        "lastStableRecoveryTimestamp" : Timestamp(1615860559, 2),

        "lastStableCheckpointTimestamp" : Timestamp(1615860559, 2),

        "electionCandidateMetrics" : {

                "lastElectionReason" : "electionTimeout",

                "lastElectionDate" : ISODate("2021-03-16T02:09:18.946Z"),

                "electionTerm" : NumberLong(1),

                "lastCommittedOpTimeAtElection" : {

                        "ts" : Timestamp(0, 0),

                        "t" : NumberLong(-1)

                },

                "lastSeenOpTimeAtElection" : {

                        "ts" : Timestamp(1615860548, 1),

                        "t" : NumberLong(-1)

                },

                "numVotesNeeded" : 2,

                "priorityAtElection" : 1,

                "electionTimeoutMillis" : NumberLong(10000),

                "numCatchUpOps" : NumberLong(0),

                "newTermStartDate" : ISODate("2021-03-16T02:09:19.963Z"),

                "wMajorityWriteAvailabilityDate" : ISODate("2021-03-16T02:09:20.546Z")

        },

        "members" : [

                {

                        "_id" : 0,

                        "name" : "comsvu-mongodb01:27017",

                        "health" : 1,

                        "state" : 1,

                        "stateStr" : "PRIMARY",

                        "uptime" : 84,

                        "optime" : {

                                "ts" : Timestamp(1615860600, 1),

                                "t" : NumberLong(1)

                        },

                        "optimeDate" : ISODate("2021-03-16T02:10:00Z"),

                        "syncingTo" : "",

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "could not find member to sync from",

                        "electionTime" : Timestamp(1615860558, 1),

                        "electionDate" : ISODate("2021-03-16T02:09:18Z"),

                        "configVersion" : 1,

                        "self" : true,

                        "lastHeartbeatMessage" : ""

                },

                {

                        "_id" : 1,

                        "name" : "comsvu-mongodb02:27017",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 58,

                        "optime" : {

                                "ts" : Timestamp(1615860600, 1),

                                "t" : NumberLong(1)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1615860600, 1),

                                "t" : NumberLong(1)

                        },

                        "optimeDate" : ISODate("2021-03-16T02:10:00Z"),

                        "optimeDurableDate" : ISODate("2021-03-16T02:10:00Z"),

                        "lastHeartbeat" : ISODate("2021-03-16T02:10:06.976Z"),

                        "lastHeartbeatRecv" : ISODate("2021-03-16T02:10:06.551Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncingTo" : "comsvu-mongodb01:27017",

                        "syncSourceHost" : "comsvu-mongodb01:27017",

                        "syncSourceId" : 0,

                        "infoMessage" : "",

                        "configVersion" : 1

                },

                {

                        "_id" : 2,

                        "name" : "comsvu-mongodb03:27017",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 58,

                        "optime" : {

                                "ts" : Timestamp(1615860600, 1),

                                "t" : NumberLong(1)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1615860600, 1),

                                "t" : NumberLong(1)

                        },

                        "optimeDate" : ISODate("2021-03-16T02:10:00Z"),

                        "optimeDurableDate" : ISODate("2021-03-16T02:10:00Z"),

                        "lastHeartbeat" : ISODate("2021-03-16T02:10:06.978Z"),

                        "lastHeartbeatRecv" : ISODate("2021-03-16T02:10:06.608Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncingTo" : "comsvu-mongodb01:27017",

                        "syncSourceHost" : "comsvu-mongodb01:27017",

                        "syncSourceId" : 0,

                        "infoMessage" : "",

                        "configVersion" : 1

                }

        ],

        "ok" : 1,

        "$gleStats" : {

                "lastOpTime" : Timestamp(1615860548, 1),

                "electionId" : ObjectId("7fffffff0000000000000001")

        },

        "lastCommittedOpTime" : Timestamp(1615860600, 1),

        "$clusterTime" : {

                "clusterTime" : Timestamp(1615860600, 1),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        },

        "operationTime" : Timestamp(1615860600, 1)

}

4、配置Sharded服务

4.1 创建配置文件

[root@hdp06 ~]# vi /db/mongodata/shard/data/shard1/mongod.shard1

net:

  bindIp: 0.0.0.0

  port: 27019

processManagement:

  fork: "true"

replication:

  replSetName: myShard_1

sharding:

  clusterRole: shardsvr

storage:

  dbPath: /db/mongodata/shard/data/shard1

systemLog:

  destination: file

  path: /db/mongodata/shard/logs/shard1/mongodbs1.log

[root@hdp06 ~]# vi /db/mongodata/shard/data/shard2/mongod.shard2

net:

  bindIp: 0.0.0.0

  port: 27020

processManagement:

  fork: "true"

replication:

  replSetName: myShard_2

sharding:

  clusterRole: shardsvr

storage:

  dbPath: /db/mongodata/shard/data/shard2

systemLog:

  destination: file

  path: /db/mongodata/shard/logs/shard2/mongodbs2.log

[root@hdp06 ~]# vi /db/mongodata/shard/data/shard3/mongod.shard3

net:

  bindIp: 0.0.0.0

  port: 27021

processManagement:

  fork: "true"

replication:

  replSetName: myShard_3

sharding:

  clusterRole: shardsvr

storage:

  dbPath: /db/mongodata/shard/data/shard3

systemLog:

  destination: file

  path: /db/mongodata/shard/logs/shard3/mongodbs3.log

# network interfaces IPV6配置

net:

port: 27017

# bindIp: 0.0.0.0

bindIpAll: true

ipv6: true

 4.2 同步配置文件

[root@hdp06 ~]# scp -r /db/mongodata/shard/data/* hdp07:/db/mongodata/shard/data/

[root@hdp06 ~]# scp -r /db/mongodata/shard/data/* hdp08:/db/mongodata/shard/data/

4.3 启动sharded服务

[root@hdp06 ~]# mongod -f /db/mongodata/shard/data/shard1/mongod.shard1

[root@hdp06 ~]# mongod -f /db/mongodata/shard/data/shard2/mongod.shard2

[root@hdp06 ~]# mongod -f /db/mongodata/shard/data/shard3/mongod.shard3

[root@hdp07 ~]# mongod -f /db/mongodata/shard/data/shard1/mongod.shard1

[root@hdp07 ~]# mongod -f /db/mongodata/shard/data/shard2/mongod.shard2

[root@hdp07 ~]# mongod -f /db/mongodata/shard/data/shard3/mongod.shard3

[root@hdp08 ~]# mongod -f /db/mongodata/shard/data/shard1/mongod.shard1

[root@hdp08 ~]# mongod -f /db/mongodata/shard/data/shard2/mongod.shard2

[root@hdp08 ~]# mongod -f /db/mongodata/shard/data/shard3/mongod.shard3

4.4 初始化sharded服务

在任意一个节点执行初始化服务。

[root@hdp06 ~]# mongo --port 27019

> rs.initiate({_id:"myShard_1",

members:[

{_id:1,host:"hdp06:27019",priority:2},

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

{_id:3,host:"hdp08:27019"}

]})

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1615862292, 1),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        },

        "operationTime" : Timestamp(1615862292, 1)

}

[root@hdp06 ~]# mongo --port 27020

> rs.initiate({_id:"myShard_2",

members:[

{_id:1,host:"hdp06:27020",priority:2},

{_id:2,host:"hdp07:27020"},

{_id:3,host:"hdp08:27020"}

]})

{

        "operationTime" : Timestamp(1534818908, 2),

        "ok" : 0,

        "errmsg" : "already initialized",

        "code" : 23,

        "codeName" : "AlreadyInitialized",

        "$clusterTime" : {

                "clusterTime" : Timestamp(1534818908, 2),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        }

}

[root@hdp06 ~]# mongo --port 27021

> rs.initiate({_id:"myShard_3",

members:[

{_id:1,host:"hdp06:27021",priority:2},

{_id:2,host:"hdp07:27021"},

{_id:3,host:"hdp08:27021"}

]})

{

        "operationTime" : Timestamp(1534818928, 1),

        "ok" : 0,

        "errmsg" : "already initialized",

        "code" : 23,

        "codeName" : "AlreadyInitialized",

        "$clusterTime" : {

                "clusterTime" : Timestamp(1534818928, 1),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        }

}

5、配置Mongos服务

[root@hdp06 ~]# vi /db/mongodata/router/mongod.router

net:

  bindIp: 0.0.0.0

  port: 27018

processManagement:

  fork: "true"

sharding:

  configDB: configRS/hdp06:27017,hdp07:27017,hdp08:27017

systemLog:

  destination: file

  path: /db/mongodata/router/logs/mongo_router.log

[root@hdp06 ~]# scp /db/mongodata/router/mongod.router hdp07:/db/mongodata/router

[root@hdp06 ~]# scp /db/mongodata/router/mongod.router hdp08:/db/mongodata/router

[root@hdp06 ~]# mongos -f /db/mongodata/router/mongod.router

[root@hdp07 ~]# mongos -f /db/mongodata/router/mongod.router

[root@hdp08 ~]# mongos -f /db/mongodata/router/mongod.router

配置分片,将主片添加至集群,如下:  

[root@hdp06 ~]# mongo --port 27018

mongos> show dbs

admin   0.000GB

config  0.000GB

mongos> use admin

switched to db admin

mongos> db.runCommand({"addShard":"myShard_1/hdp06:27019" ,"maxsize":1024})

{

        "shardAdded" : "myShard_1",

        "ok" : 1,

        "operationTime" : Timestamp(1615862669, 7),

        "$clusterTime" : {

                "clusterTime" : Timestamp(1615862669, 7),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        }

}

mongos> db.runCommand({"addShard":"myShard_2/hdp07:27020" ,"maxsize":1024})

{

        "shardAdded" : "myShard_2",

        "ok" : 1,

        "operationTime" : Timestamp(1615862744, 7),

        "$clusterTime" : {

                "clusterTime" : Timestamp(1615862744, 7),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        }

}

mongos> db.runCommand({"addShard":"myShard_3/hdp08:27021" ,"maxsize":1024})

{

        "shardAdded" : "myShard_3",

        "ok" : 1,

        "operationTime" : Timestamp(1615862753, 5),

        "$clusterTime" : {

                "clusterTime" : Timestamp(1615862753, 5),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        }

}

Shard cluster状态查询:

mongos> sh.status()

--- Sharding Status --- 

  sharding version: {

        "_id" : 1,

        "minCompatibleVersion" : 5,

        "currentVersion" : 6,

        "clusterId" : ObjectId("605013506885c04ec262ba21")

  }

  shards:

        {  "_id" : "myShard_1",  "host" : "myShard_1/hdp06:27019,hdp07:27019,hdp08:27019",  "state" : 1 }

        {  "_id" : "myShard_2",  "host" : "myShard_2/hdp06:27020,hdp07:27020,hdp08:27020",  "state" : 1 }

        {  "_id" : "myShard_3",  "host" : "myShard_3/hdp06:27021,hdp07:27021,hdp08:27021",  "state" : 1 }

  active mongoses:

        "4.2.3" : 3

  autosplit:

        Currently enabled: yes

  balancer:

        Currently enabled:  yes

        Currently running:  no

        Failed balancer rounds in last 5 attempts:  0

        Migration Results for the last 24 hours: 

                No recent migrations

  databases:

        {  "_id" : "config",  "primary" : "config",  "partitioned" : true }

                config.system.sessions

                        shard key: { "_id" : 1 }

                        unique: false

                        balancing: true

                        chunks:

                                myShard_1       1

                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : myShard_1 Timestamp(1, 0)

6、配置安全认证

6.1、生成密钥文件。

    在keyfile身份验证中,副本集中的每个mongod实例都使用keyfile的内容作为共享密码,只有具有正确密钥文件的mongod或者mongos实例可以连接到副本集。密钥文件的内容必须在6到1024个字符之间,并且在unix/linux系统中文件所有者必须有对文件至少有读的权限。

可以用任何方式生成密钥文件例如: openssl rand -base64 756 > /db/mongodata/config/testKeyFile.file chmod 400 /db/mongodata/config/testKeyFile.file 第一条命令是生成密钥文件,第二条命令是使用chmod更改文件权限,为文件所有者提供读权限

6.2、将密钥复制到集群中的每台机器的指定位置

如:scp -P22 /db/mongodata/config/testKeyFile.file root@hdp07:/db/mongodata/config/ scp -P22 /db/mongodata/config/testKeyFile.file root@hdp08:/db/mongodata/config/

一定要保证密钥文件一致。文件位置随便。但是为了方便查找,建议每台机器都放到一个固定的位置。我的配置文件都放在/db/mongodata/config/testKeyFile.file

6.3、预先创建好一个管理员账号和密码然后将集群中的所有mongod和mongos全部关闭

账号可以在集群认开启认证以后添加。但是那时候添加比较谨慎。只能添加一次,如果忘记了就无法再连接到集群。建议在没开启集群认证的时候先添加好管理员用户名和密码然后再开启认证再重启

连接任意一台机器的mongos mongo --port 27018 添加用户 use admin   //注意一定要使用admin数据库  db.createUser(      {          user:"your account",          pwd:"your password",          roles:[{role:"root",db:"admin"}]      }  ) 然后依次连接到每一台机器上执行。 killall mongod killall mongos 然后删除每个mongod实例存储数据存储路径下面的mongod.lock(如果后面启动不报错可以不处理)

6.4、使用访问控制强制重新启动复制集的每个成员 

    这个步骤比较重要。设置访问控制有两种方式。我选择在配置文件里面配置好。(也可以在启动命令时使用命令来指定)    依次在每台机器上的mongod(注意是所有的mongod不是mongos)的配置文件中加入下面一段配置。如我在hdp06上的configsvr,shard1,shard2,shard3都加入下面的配置文件

security:   keyFile: /db/mongodata/config/testKeyFile.file   authorization: enabled

   依次在每台机器上的mongos配置文件中加入下面一段配置。如我在hdp06上的mongos配置文件中加入上面的一段配置

security:   keyFile: /db/mongodata/config/testKeyFile.file

解释:     mongos比mongod少了authorization:enabled的配置。原因是,副本集加分片的安全认证需要配置两方面的,副本集各个节点之间使用内部身份验证,用于内部各个mongo实例的通信,只有相同keyfile才能相互访问。所以都要开启keyFile: /db/mongodata/config/testKeyFile.file 然而对于所有的mongod,才是真正的保存数据的分片。mongos只做路由,不保存数据。所以所有的mongod开启访问数据的授权authorization:enabled。这样用户只有账号密码正确才能访问到数据

6.5、重启每个mongo示例。因为我的认证配置在了配置文件里面,所以启动命令不需要再加认证的参数 (例如--auth等)

mongod -f /db/mongodata/config/mongodb.config

mongod -f /db/mongodata/shard/data/shard1/mongod.shard1

mongod -f /db/mongodata/shard/data/shard2/mongod.shard2

mongod -f /db/mongodata/shard/data/shard3/mongod.shard3

mongos -f /db/mongodata/router/mongod.router

    依次重启三台机器的mongod和mongos实例

7、对库启用分片

这里创建了一个mydb库,使用以下命令对其启用分片功能。

mongos> sh.enableSharding("MyDB")

{

        "ok" : 1,

        "operationTime" : Timestamp(1615863566, 3),

        "$clusterTime" : {

                "clusterTime" : Timestamp(1615863566, 3),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        }

}

下面对mydb的chapter启用分片技术:

--创建一个索引

mongos> use MyDB

switched to db MyDB

mongos> db.chapter.createIndex({"id" : 1,"subjectId" : 1},{"name" : "new_idx"})

{

        "raw" : {

                "myShard_2/comsvu-mongodb01:27020,comsvu-mongodb02:27020,comsvu-mongodb03:27020" : {

                        "createdCollectionAutomatically" : false,

                        "numIndexesBefore" : 1,

                        "numIndexesAfter" : 2,

                        "ok" : 1

                }

        },

        "ok" : 1,

        "operationTime" : Timestamp(1615863531, 12),

        "$clusterTime" : {

                "clusterTime" : Timestamp(1615863531, 12),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        }

}

--对表进行分片

mongos> sh.shardCollection('MyDB.chapter',{id:1,subjectId:1})

{

        "collectionsharded" : "MyDB.chapter",

        "collectionUUID" : UUID("f19c5dad-f39b-42a3-b07e-7fdf08a110c4"),

        "ok" : 1,

        "operationTime" : Timestamp(1615863754, 9),

        "$clusterTime" : {

                "clusterTime" : Timestamp(1615863754, 9),

                "signature" : {

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

                        "keyId" : NumberLong(0)

                }

        }

}

8、启停服务

编辑/etc/init.d/mongod(Centos6.8)

#!/bin/sh

# chkconfig: 2345 80 90

# description: myservice ....

#

#  ### BEGIN INIT INFO

# Short-Description: mongodb

# Description: mongo db server

### END INIT INFO

#注意这里的路径设置为你的mongod的位置

PROGRAM=/app/mongodb/bin/mongod

PROGRAMS=/app/mongodb/bin/mongos

MONGOPID=`ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'`

test -x $PROGRAM || exit 0

case "$1" in

  start)

     echo "Starting MongoDB server"

     #注意这里的路径设置为你的mongodb的配置文件的位置

     su - mongo -c "$PROGRAM  -f /db/mongodata/config/mongodb.config"

     su - mongo -c "$PROGRAM  -f /db/mongodata/shard/data/shard1/mongod.shard1"

     su - mongo -c "$PROGRAM  -f /db/mongodata/shard/data/shard2/mongod.shard2"

     su - mongo -c "$PROGRAM  -f /db/mongodata/shard/data/shard3/mongod.shard3"

     su - mongo -c "$PROGRAMS -f /db/mongodata/router/mongod.router"

     echo "Started MongoDB server"

     ;;

  stop)

     echo "Stopping MongoDB server"

     if [ ! -z "$MONGOPID" ]; then

        for i in $MONGOPID

        do 

            kill -15 $MONGOPID

        done

     fi

     echo "Stopped MongoDB server"

     ;;

  status)

     ;;

  *)

     echo "Usage: mongodb {start|stop|status}"

     exit 1

esac

exit 0

添加mongod到系统服务:

chkconfig –add mongod

配置开机启动:

chkconfig mongod on

服务启停:

service mongod start

service mongod stop

手工制作: 启服务

mongod -f /db/mongodata/config/mongodb.config 

mongod -f /db/mongodata/shard/data/shard1/mongod.shard1

mongod -f /db/mongodata/shard/data/shard2/mongod.shard2

mongod -f /db/mongodata/shard/data/shard3/mongod.shard3

mongos -f /db/mongodata/router/mongod.router

停服务

mongod -f /db/mongodata/config/mongodb.config --shutdown

mongod -f /db/mongodata/shard/data/shard1/mongod.shard1 --shutdown

mongod -f /db/mongodata/shard/data/shard2/mongod.shard2 --shutdown

mongod -f /db/mongodata/shard/data/shard3/mongod.shard3 --shutdown

mongos服务可直接kill

附1、备份与恢复 mongodump -h IP --port 端口 -u 用户 -p 密码 -d 数据库名    -o 备份路径 mongodump -h hdp06 --port 27018 -u test -p 123456 -d cvm -o /bak/

mongorestore -h IP --port 端口 -u 用户 -p 密码 -d 数据库名   --drop 备份路径 mongorestore -h hdp06 --port 27018 -u test  -p 123456 -d cvm   --drop /bak/cvm mongorestore -h hdp06 --port 27018 --drop /bak/cvm   全库恢复  

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: