У меня есть экземпляр MongoDB внутри контейнера докера для запуска некоторых локальных сервисов, и я использую mongodump
для выполнения резервного копирования. Недавно этот процесс резервного копирования и приложения, работающие сверху, прервались, потому что MongoDB больше не считает себя хозяином. Мне нужно (обновленное) содержимое резервной копии для переноса служб на новый сервер. Как я могу заставить MongoDB выгружать содержимое своей базы данных, чтобы я мог повторно развернуть экземпляр?
Это команда, которую я запускаю для резервного копирования, и сообщение об ошибке:
mongodump --host "db" --port 27017 --db rocketchat
2019-05-17T11:28:59.950+0000 Failed: error counting rocketchat.rocketchat_apps_persistence: node is not in primary or recovering state
Я попытался запустить несколько вариантов команды mongodump, включая обработку сервера как вторичного экземпляра:
mongodump --host "db" --port 27017 --readPreference secondaryPreferred
2019-05-17T11:16:23.066+0000 Failed: error counting admin.system.version: node is not in primary or recovering state
Когда я пытаюсь инициировать репликационный набор для сервера, он уже думает, что инициализирован.
rs0:OTHER> rs.initiate()
{
"info2" : "no configuration specified. Using a default configuration for the set",
"me" : "1d70c5ced11b:27017",
"info" : "try querying local.system.replset to see current configuration",
"ok" : 0,
"errmsg" : "already initialized",
"code" : 23,
"codeName" : "AlreadyInitialized",
"operationTime" : Timestamp(1558063935, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1558063935, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
Повторная синхронизация содержимого тома докера, который содержит данные WiredTiger, к сожалению, также не работает. Я сталкиваюсь с той же проблемой, когда база данных ошибается, думая, что это не мастер. К сожалению, это также означает, что некоторые резервные копии низкого уровня (поверх резервных копий mongodump) также не работают.
Установка:
- Одиночный экземпляр MongoDB в качестве docker-compose службы.
- Репликационный набор "rs0" для различных баз данных с оплогом.
Редактировать:
Результат rs.status () и rs.config ()
rs0:OTHER> rs.status()
{
"operationTime" : Timestamp(1558063935, 1),
"ok" : 0,
"errmsg" : "Our replica set config is invalid or we are not a member of it",
"code" : 93,
"codeName" : "InvalidReplicaSetConfig",
"$clusterTime" : {
"clusterTime" : Timestamp(1558063935, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
rs0:OTHER> rs.config()
{
"_id" : "rs0",
"version" : 1,
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{
"_id" : 0,
"host" : "8d6d6fda7542:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : -1,
"catchUpTakeoverDelayMillis" : 30000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("5ccfbd9f66a45fbddfa5c0f0")
}
}