Restauração do conjunto de réplicas configsvr
Preparação de diretórios
rm -rf /compile/cluster-restore/cfg*
mkdir -p /compile/cluster-restore/cfg1/data/db
mkdir -p /compile/cluster-restore/cfg1/log
mkdir -p /compile/cluster-restore/cfg2/data/db
mkdir -p /compile/cluster-restore/cfg2/log
mkdir -p /compile/cluster-restore/cfg3/data/db
mkdir -p /compile/cluster-restore/cfg3/log
Procedimento
- Prepare o arquivo de configuração e o diretório de dados de um único nó e inicie o processo no modo de nó único.
- O arquivo de configuração é o seguinte (restoreconfig/single_40303.yaml):
net: bindIp: 127.0.0.1 port: 40303 unixDomainSocket: {enabled: false} processManagement: {fork: true, pidFilePath: /compile/cluster-restore/cfg1/configsvr.pid} storage: dbPath: /compile/cluster-restore/cfg1/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/cfg1/log/configsingle.log}
- Copie o arquivo configsvr descompactado para o diretório dbPath no nó único.
cp -aR
/compile/download/backups/cac1efc8e65e42ecad8953352321bfeein02_41c8a32fb10245899708dea453a8c5c9no02/* /compile/cluster-restore/cfg1/data/db/
- Inicie o processo.
- O arquivo de configuração é o seguinte (restoreconfig/single_40303.yaml):
- Conecte-se ao nó único e execute o seguinte comando de configuração:
./mongo --host 127.0.0.1 --port 40303
- Execute os seguintes comandos para modificar a configuração do conjunto de réplicas:
var cf=db.getSiblingDB('local').system.replset.findOne();
cf['members'][0]['host']='127.0.0.1:40303';
cf['members'][1]['host']='127.0.0.1:40304';
cf['members'][2]['host']='127.0.0.1:40305';
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)
- Execute os seguintes comandos para limpar as contas internas:
db.getSiblingDB('admin').dropAllUsers();
db.getSiblingDB('admin').dropAllRoles();
- Execute o seguinte comando para atualizar as informações do dds mongos e do shard:
db.getSiblingDB('config').mongos.remove({});
Consulte as informações de _id sobre vários shards na tabela config.shards. As informações de _id são usadas como a condição de consulta de _id nas instruções a seguir. Atualize os registros em sequência.
db.getSiblingDB('config').shards.update({'_id' : 'shard_1'},{$set: {'host': 'shard_1/127.0.0.1:40306,127.0.0.1:40307,127.0.0.1:40308'}})
db.getSiblingDB('config').shards.update({'_id' : 'shard_2'},{$set: {'host': 'shard_2/127.0.0.1:40309,127.0.0.1:40310,127.0.0.1:40311'}})
db.getSiblingDB('config').mongos.find({});
db.getSiblingDB('config').shards.find({});
- Execute o seguinte comando para parar o processo de nó único:
- Execute os seguintes comandos para modificar a configuração do conjunto de réplicas:
- Crie um conjunto de réplicas configsvr.
- Copie o arquivo dbPath do nó configsvr1 para os diretórios dos outros dois nós configsvr.
cp -aR /compile/cluster-restore/cfg1/data/db/ /compile/cluster-restore/cfg2/data/db/
cp -aR /compile/cluster-restore/cfg1/data/db/ /compile/cluster-restore/cfg3/data/db/
- Adicione o atributo de configuração do conjunto de réplicas ao arquivo de configuração (restoreconfig/configsvr_40303.yaml) do nó configsvr-1.
net: bindIp: 127.0.0.1 port: 40303 unixDomainSocket: {enabled: false} processManagement: {fork: true, pidFilePath: /compile/cluster-restore/cfg1/configsvr.pid} replication: {replSetName: config} sharding: {archiveMovedChunks: false, clusterRole: configsvr} storage: dbPath: /compile/cluster-restore/cfg1/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/cfg1/log/configsvr.log}
- Inicie o processo.
- Adicione o atributo de configuração do conjunto de réplicas ao arquivo de configuração (restoreconfig/configsvr_40304.yaml) do nó configsvr-2.
net: bindIp: 127.0.0.1 port: 40304 unixDomainSocket: {enabled: false} processManagement: {fork: true, pidFilePath: /compile/cluster-restore/cfg2/configsvr.pid} replication: {replSetName: config} sharding: {archiveMovedChunks: false, clusterRole: configsvr} storage: dbPath: /compile/cluster-restore/cfg2/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/cfg2/log/configsvr.log}
- Inicie o processo.
- Adicione o atributo de configuração do conjunto de réplicas ao arquivo de configuração (restoreconfig/configsvr_40305.yaml) do nó configsvr-3.
net: bindIp: 127.0.0.1 port: 40305 unixDomainSocket: {enabled: false} processManagement: {fork: true, pidFilePath: /compile/cluster-restore/cfg3/configsvr.pid} replication: {replSetName: config} sharding: {archiveMovedChunks: false, clusterRole: configsvr} storage: dbPath: /compile/cluster-restore/cfg3/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/cfg3/log/configsvr.log}
- Inicie o processo.
- Copie o arquivo dbPath do nó configsvr1 para os diretórios dos outros dois nós configsvr.
- Aguarde até que o nó primário seja selecionado.
./mongo --host 127.0.0.1 --port 40303
Execute o comando rs.status() para verificar se o nó primário existe.