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 全库恢复
文章来源
发表评论