首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在原始副本集和新副本集之间复制数据

如何在原始副本集和新副本集之间复制数据
EN

Stack Overflow用户
提问于 2022-05-24 08:56:28
回答 1查看 76关注 0票数 0

我在原来的主机(k8s集群1)上安装了mongodb副本集,在新主机(k8s集群2)上刚刚安装了一个新的mongodb副本集。

我的目标是将数据从原始主机复制到新主机,这样我就可以关闭旧主机.

有一个博客,我试图跟踪这一点,但我有一些麻烦。(参考:https://mschmitt.org/blog/mongodb-migration-replicaset/)

original_host:aadfad22ca65e4ff09de37179f961d5b-.us-east-2.elb.amazonaws.com:27017

ab775d626d81742478af2744923e2ec6-.us-east-2.elb.amazonaws.com:27017:new_host

尝试

  1. I试图用rs.stepDown({force:true})取代的新主机。但是它失败了.

代码语言:javascript
运行
复制
 rs.stepDown({force:true})
{
        "ok" : 0,
        "errmsg" : "No electable secondaries caught up as of 2022-05-24T08:50:24.809+00:00. Please use the replSetStepDown command with the argument {force: true} to force node to step down.",
        "code" : 262,
        "codeName" : "ExceededTimeLimit",
        "$clusterTime" : {
                "clusterTime" : Timestamp(1653382215, 1),
                "signature" : {
                        "hash" : BinData(0,"qugjVF4xVS8+MNYlCgkK+0/Jt1o="),
                        "keyId" : NumberLong("7100922576402120709")
                }
        },
        "operationTime" : Timestamp(1653382211, 1)
}

我尝试使用replica set IDs do not match将new_host作为rs成员添加到原始rs中,但是它在rs.add( { host: "ab775d626d81742478af2744923e2ec6-<redacted>.us-east-2.elb.amazonaws.com:27017", priority: 0, votes: 0 } )中失败了

代码语言:javascript
运行
复制
             {
                        "_id" : 2,
                        "name" : "ab775d626d81742478af2744923e2ec6-<redacted>.us-east-2.elb.amazonaws.com:27017",
                        "health" : 0,
                        "state" : 8,
                        "stateStr" : "(not reachable/healthy)",
                        "uptime" : 0,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastAppliedWallTime" : ISODate("1970-01-01T00:00:00Z"),
                        "lastDurableWallTime" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2022-05-24T08:52:21.889Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "replica set IDs do not match, ours: 628c90e7c07f5017faff8b75; remote node's: 628b8b76ab0cdc7f9158b23b",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : -1,
                        "configTerm" : -1
                }

原始复制集配置

代码语言:javascript
运行
复制
rs0:PRIMARY> rs.status()
{
        "set" : "rs0",
        "date" : ISODate("2022-05-24T08:45:48.912Z"),
        "myState" : 1,
        "term" : NumberLong(2),
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "majorityVoteCount" : 2,
        "writeMajorityCount" : 1,
        "votingMembersCount" : 2,
        "writableVotingMembersCount" : 1,
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1653381945, 1),
                        "t" : NumberLong(2)
                },
                "lastCommittedWallTime" : ISODate("2022-05-24T08:45:45.660Z"),
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1653381945, 1),
                        "t" : NumberLong(2)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1653381945, 1),
                        "t" : NumberLong(2)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1653381945, 1),
                        "t" : NumberLong(2)
                },
                "lastAppliedWallTime" : ISODate("2022-05-24T08:45:45.660Z"),
                "lastDurableWallTime" : ISODate("2022-05-24T08:45:45.660Z")
        },
        "lastStableRecoveryTimestamp" : Timestamp(1653381945, 1),
        "electionCandidateMetrics" : {
                "lastElectionReason" : "electionTimeout",
                "lastElectionDate" : ISODate("2022-05-24T08:01:45.606Z"),
                "electionTerm" : NumberLong(2),
                "lastCommittedOpTimeAtElection" : {
                        "ts" : Timestamp(0, 0),
                        "t" : NumberLong(-1)
                },
                "lastSeenOpTimeAtElection" : {
                        "ts" : Timestamp(1653379303, 15),
                        "t" : NumberLong(1)
                },
                "numVotesNeeded" : 1,
                "priorityAtElection" : 5,
                "electionTimeoutMillis" : NumberLong(10000),
                "newTermStartDate" : ISODate("2022-05-24T08:01:45.609Z"),
                "wMajorityWriteAvailabilityDate" : ISODate("2022-05-24T08:01:45.611Z")
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "aadfad22ca65e4ff09de37179f961d5b-<redacted>.us-east-2.elb.amazonaws.com:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 2644,
                        "optime" : {
                                "ts" : Timestamp(1653381945, 1),
                                "t" : NumberLong(2)
                        },
                        "optimeDate" : ISODate("2022-05-24T08:45:45Z"),
                        "lastAppliedWallTime" : ISODate("2022-05-24T08:45:45.660Z"),
                        "lastDurableWallTime" : ISODate("2022-05-24T08:45:45.660Z"),
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "electionTime" : Timestamp(1653379305, 1),
                        "electionDate" : ISODate("2022-05-24T08:01:45Z"),
                        "configVersion" : 7,
                        "configTerm" : 2,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                },
                {
                        "_id" : 1,
                        "name" : "mongodb-staging-arbiter-0.mongodb-staging-arbiter-headless.staging.svc.cluster.local:27017",
                        "health" : 1,
                        "state" : 7,
                        "stateStr" : "ARBITER",
                        "uptime" : 2627,
                        "lastHeartbeat" : ISODate("2022-05-24T08:45:47.161Z"),
                        "lastHeartbeatRecv" : ISODate("2022-05-24T08:45:47.763Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : 7,
                        "configTerm" : 2
                },
                {
                        "_id" : 2,
                        "name" : "ab775d626d81742478af2744923e2ec6-<redacted>.us-east-2.elb.amazonaws.com:27017",
                        "health" : 0,
                        "state" : 8,
                        "stateStr" : "(not reachable/healthy)",
                        "uptime" : 0,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastAppliedWallTime" : ISODate("1970-01-01T00:00:00Z"),
                        "lastDurableWallTime" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2022-05-24T08:45:47.280Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "replica set IDs do not match, ours: 628c90e7c07f5017faff8b75; remote node's: 628b8b76ab0cdc7f9158b23b",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : -1,
                        "configTerm" : -1
                }
        ],
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1653381945, 1),
                "signature" : {
                        "hash" : BinData(0,"1GVq5OEAV3YzQmhPHuzQPVwC7+c="),
                        "keyId" : NumberLong("7101210034268274693")
                }
        },
        "operationTime" : Timestamp(1653381945, 1)
}

新复制集配置

代码语言:javascript
运行
复制
{
        "set" : "rs0",
        "date" : ISODate("2022-05-24T08:45:52.621Z"),
        "myState" : 1,
        "term" : NumberLong(6),
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "majorityVoteCount" : 2,
        "writeMajorityCount" : 1,
        "votingMembersCount" : 2,
        "writableVotingMembersCount" : 1,
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1653381951, 1),
                        "t" : NumberLong(6)
                },
                "lastCommittedWallTime" : ISODate("2022-05-24T08:45:51.410Z"),
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1653381951, 1),
                        "t" : NumberLong(6)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1653381951, 1),
                        "t" : NumberLong(6)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1653381951, 1),
                        "t" : NumberLong(6)
                },
                "lastAppliedWallTime" : ISODate("2022-05-24T08:45:51.410Z"),
                "lastDurableWallTime" : ISODate("2022-05-24T08:45:51.410Z")
        },
        "lastStableRecoveryTimestamp" : Timestamp(1653381921, 1),
        "electionCandidateMetrics" : {
                "lastElectionReason" : "electionTimeout",
                "lastElectionDate" : ISODate("2022-05-24T08:42:31.402Z"),
                "electionTerm" : NumberLong(6),
                "lastCommittedOpTimeAtElection" : {
                        "ts" : Timestamp(0, 0),
                        "t" : NumberLong(-1)
                },
                "lastSeenOpTimeAtElection" : {
                        "ts" : Timestamp(1653381732, 1),
                        "t" : NumberLong(5)
                },
                "numVotesNeeded" : 1,
                "priorityAtElection" : 5,
                "electionTimeoutMillis" : NumberLong(10000),
                "newTermStartDate" : ISODate("2022-05-24T08:42:31.405Z"),
                "wMajorityWriteAvailabilityDate" : ISODate("2022-05-24T08:42:31.407Z")
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "ab775d626d81742478af2744923e2ec6-<redacted>.us-east-2.elb.amazonaws.com:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 204,
                        "optime" : {
                                "ts" : Timestamp(1653381951, 1),
                                "t" : NumberLong(6)
                        },
                        "optimeDate" : ISODate("2022-05-24T08:45:51Z"),
                        "lastAppliedWallTime" : ISODate("2022-05-24T08:45:51.410Z"),
                        "lastDurableWallTime" : ISODate("2022-05-24T08:45:51.410Z"),
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "electionTime" : Timestamp(1653381751, 1),
                        "electionDate" : ISODate("2022-05-24T08:42:31Z"),
                        "configVersion" : 4,
                        "configTerm" : 6,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                },
                {
                        "_id" : 1,
                        "name" : "mongodb-prod-arbiter-0.mongodb-prod-arbiter-headless.mongodb.svc.cluster.local:27017",
                        "health" : 1,
                        "state" : 7,
                        "stateStr" : "ARBITER",
                        "uptime" : 187,
                        "lastHeartbeat" : ISODate("2022-05-24T08:45:50.898Z"),
                        "lastHeartbeatRecv" : ISODate("2022-05-24T08:45:52.493Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : 4,
                        "configTerm" : 6
                }
        ],
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1653381951, 1),
                "signature" : {
                        "hash" : BinData(0,"XYfuUbFoIwFfLZx3FqPOAD+CU44="),
                        "keyId" : NumberLong("7100922576402120709")
                }
        },
        "operationTime" : Timestamp(1653381951, 1)
}
EN

回答 1

Stack Overflow用户

发布于 2022-05-24 09:29:52

删除来自新主机的所有数据,即停止mongod,删除dbPath中的所有文件,然后重新启动。

然后简单地添加新主机作为新成员,即一旦添加了rs.add("ab775d626d81742478af2744923e2ec6-.us-east-2.elb.amazonaws.com:27017"),就会运行初始同步。检查同步与rs.status(),这可能需要一些时间。

当新成员处于状态时,SECONDARYrs.printSecondaryReplicationInfo()显示

代码语言:javascript
运行
复制
rs.printSecondaryReplicationInfo()
source: "aadfad22ca65e4ff09de37179f961d5b-<redacted>.us-east-2.elb.amazonaws.com:27017"
        syncedTo: Tue May 24 2022 11:23:23 GMT+0200 (CEST)
        0 secs (0 hrs) behind the primary 

(1-2秒)在主服务器后面也是正常的),那么您可以使用rs.remove('aadfad22ca65e4ff09de37179f961d5b-.us-east-2.elb.amazonaws.com:27017')从副本集中删除旧主机。

最后,您可以停止在旧主机上的单神,并从那里移除一切。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72359976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档