准备目录
rm -rf /compile/cluster-restore/shd1*
mkdir -p /compile/cluster-restore/shd11/data/db
mkdir -p /compile/cluster-restore/shd11/log
mkdir -p /compile/cluster-restore/shd12/data/db
mkdir -p /compile/cluster-restore/shd12/log
mkdir -p /compile/cluster-restore/shd13/data/db
mkdir -p /compile/cluster-restore/shd13/log
操作步骤
步骤 1 准备单节点配置文件和目录,以单节点方式启动进程。
配置文件如下(restoreconfig/single_40306.yaml)。
net:
bindIp: 127.0.0.1
port: 40306
unixDomainSocket: {enabled: false}
processManagement: {fork: true, pidFilePath: /compile/cluster-restore/shd11/mongod.pid}
storage:
dbPath: /compile/cluster-restore/shd11/data/db/
directoryPerDB: true
engine: wiredTiger
wiredTiger:
collectionConfig: {blockCompressor: snappy}
engineConfig: {directoryForIndexes: true, journalCompressor: snappy}
indexConfig: {prefixCompression: true}
systemLog: {destination: file, logAppend: true, logRotate: reopen, path: /compile/cluster-restore/shd11/log/mongod.log}
准备数据,将解压后的shardsvr1文件拷贝到单节点dbPath目录下。
cp -aR
/compile/download/backups/cac1efc8e65e42ecad8953352321bfeein02_6cfa6167d4114d7c8cec5b47f9a78dc5no02/* /compile/cluster-restore/shd11/data/db/
启动进程。
./mongod -f restoreconfig/single_40306.yaml
步骤 2 连接单节点,执行配置命令。
连接命令:./mongo --host 127.0.0.1 --port 40306
执行如下命令,修改副本集配置信息。
var cf=db.getSiblingDB('local').system.replset.findOne();
cf['members'][0]['host']='127.0.0.1:40306';
cf['members'][1]['host']='127.0.0.1:40307';
cf['members'][2]['host']='127.0.0.1:40308';
cf['members'][0]['hidden']=false;
cf['members'][1]['hidden']=false;
cf['members'][2]['hidden']=false;
cf['members'][0]['priority']=1;
cf['members'][1]['priority']=1;
cf['members'][2]['priority']=1;
db.getSiblingDB('local').system.replset.remove({});
db.getSiblingDB('local').system.replset.insert(cf)
执行如下命令,清理内置账号。
db.getSiblingDB('admin').dropAllUsers();
db.getSiblingDB('admin').dropAllRoles();
执行如下命令,更新configsvr信息。
连接命令:./mongo --host 127.0.0.1 --port 40306
var vs = db.getSiblingDB('admin').system.version.find();
while (vs.hasNext()) {
var curr = vs.next();
if (curr.hasOwnProperty('configsvrConnectionString')) {
db.getSiblingDB('admin').system.version.update({'_id' : curr._id}, {$set: {'configsvrConnectionString': 'config/127.0.0.1:40303,127.0.0.1:40304,127.0.0.1:40305'}});
}
}
执行如下命令,关闭单节点进程。
db.getSiblingDB('admin').shutdownServer();
步骤 3 搭建shardsvr1副本集。
准备副本集配置文件和目录,将shardsvr1节点的dbPath文件拷贝到其他两个节点目录下。
cp -aR /compile/cluster-restore/shd11/data/db/ /compile/cluster-restore/shd12/data/db/
cp -aR /compile/cluster-restore/shd11/data/db/ /compile/cluster-restore/shd13/data/db/
修改shardsvr1-1节点配置文件,增加副本集配置属性(restoreconfig/shardsvr_40306.yaml)。
--- replication.replSetName 的值,参考该章节中的shard的_id信息。
net:
bindIp: 127.0.0.1
port: 40306
unixDomainSocket: {enabled: false}
processManagement: {fork: true, pidFilePath: /compile/cluster-restore/shd11/mongod.pid}
replication: {replSetName: shard_1}
sharding: {archiveMovedChunks: false, clusterRole: shardsvr}
storage:
dbPath: /compile/cluster-restore/shd11/data/db/
directoryPerDB: true
engine: wiredTiger
wiredTiger:
collectionConfig: {blockCompressor: snappy}
engineConfig: {directoryForIndexes: true, journalCompressor: snappy}
indexConfig: {prefixCompression: true}
systemLog: {destination: file, logAppend: true, logRotate: reopen, path: /compile/cluster-restore/shd11/log/mongod.log}
启动进程。
./mongod -f restoreconfig/shardsvr_40306.yaml
修改shardsvr1-2节点配置文件,增加副本集配置属性(restoreconfig/shardsvr_40307.yaml)。
--replication.replSetName 的值,参考该章节中的shard的_id信息。
net:
bindIp: 127.0.0.1
port: 40307
unixDomainSocket: {enabled: false}
processManagement: {fork: true, pidFilePath: /compile/cluster-restore/shd12/mongod.pid}
replication: {replSetName: shard_1}
sharding: {archiveMovedChunks: false, clusterRole: shardsvr}
storage:
dbPath: /compile/cluster-restore/shd12/data/db/
directoryPerDB: true
engine: wiredTiger
wiredTiger:
collectionConfig: {blockCompressor: snappy}
engineConfig: {directoryForIndexes: true, journalCompressor: snappy}
indexConfig: {prefixCompression: true}
systemLog: {destination: file, logAppend: true, logRotate: reopen, path: /compile/cluster-restore/shd12/log/mongod.log}
启动进程。
./mongod -f restoreconfig/shardsvr_40307.yaml
修改shardsvr1-3节点配置文件,增加副本集配置属性(restoreconfig/shardsvr_40308.yaml)。
--replication.replSetName 的值,参考该章节中的shard的_id信息。
net:
bindIp: 127.0.0.1
port: 40308
unixDomainSocket: {enabled: false}
processManagement: {fork: true, pidFilePath: /compile/cluster-restore/shd13/mongod.pid}
replication: {replSetName: shard_1}
sharding: {archiveMovedChunks: false, clusterRole: shardsvr}
storage:
dbPath: /compile/cluster-restore/shd13/data/db/
directoryPerDB: true
engine: wiredTiger
wiredTiger:
collectionConfig: {blockCompressor: snappy}
engineConfig: {directoryForIndexes: true, journalCompressor: snappy}
indexConfig: {prefixCompression: true}
systemLog: {destination: file, logAppend: true, logRotate: reopen, path: /compile/cluster-restore/shd13/log/mongod.log}
启动进程。
./mongod -f restoreconfig/shardsvr_40308.yaml
步骤 4 等待选主成功。
./mongo --host 127.0.0.1 --port 40306
执行命令rs.status(),查看是否已存在主节点Primary。