MongoDB отказывается от резервного копирования - PullRequest
0 голосов
/ 17 мая 2019

У меня есть экземпляр 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")
    }
}
...