【发布时间】:2020-12-09 23:17:25
【问题描述】:
我正在使用 Bitnami MongoDB 和 MongoDB Helm Chart(版本 10.6.10,图像标记为 3.6.17-ol-7-r26)在 AWS 中运行 Kubernetes 下的 Mongo 集群,该集群最初是使用 Helm 创建的图表。我正在尝试使用EBS Snapshots 使备份正常工作,以便定期复制主要 MongoDB 成员的整个卷,以防万一发生某些事情,可以将其恢复到新的 MongoDB 安装(使用相同的 Helm 图表)。
目前我正在尝试获取一个备份过程,以便将快照放入一个新卷中,并且可以在同一个 Kubernetes 集群中创建一个新的 Mongo 命名空间,其中将挂载现有卷。这样我就可以从快照(Kubernetes Persistent Volume 和 Persistent Volume Claim)手动创建 Kubernetes 卷,并将它们与 MongoDB Helm 图表链接起来(因为那些 PV + PVC 包含正确的名称),然后启动 Mongo 服务器.
但是,一旦 Pod 运行(主、辅助和仲裁器),先前存在的副本集就位(我猜是旧的本地数据库)并且显然无法正常工作,因为它来自快照状态。
现在我想关注MongoDB documentation
- 销毁现有副本集
- 在 arbiter+slave 上重置默认设置
- 从主/主创建副本集(主数据已到位)
- 将仲裁器和从属设备附加到副本集以同步类似于文档中的数据。
从主要检查状态,我得到
{
"stateStr" : "REMOVED",
"errmsg" : "Our replica set config is invalid or we are not a member of it",
"codeName" : "InvalidReplicaSetConfig",
.. other fields as well
}
所以副本集降级了。当我尝试删除本地数据库并将其移动到独立数据库时,我会得到
rs0:OTHER> rs.slaveOk()
rs0:OTHER> show dbs
admin 0.000GB
local 1.891GB
+ some actual databases for data, so I can see data is in place
rs0:OTHER> use local
switched to db local
rs0:OTHER> db.dropDatabase()
"errmsg" : "not authorized on local to execute command { dropDatabase: 1.0, .. few other fields .., $readPreference: { mode: \"secondaryPreferred\" }, $db: \"local\" }"
rs0:OTHER> db.grantRolesToUser('root', [{ role: 'root', db: 'local' }])
2020-12-08T18:25:31.103+0000 E QUERY [thread1] Error: Primary stepped down while waiting for replication :
当我使用 Bitnami Helm 图表时,它有一些 Kubernetes 集群的启动参数,这些参数可能不同步,无法与现有卷一起运行,而现有卷已经进行了一些配置。
所以我只是想知道我是否在这里尝试做所有错误的事情,正确的解决方案是启动一个新的 MongoDB 图表,然后使用 Mongorestore 恢复数据库(所以基本上不使用 EBS 快照),或者有没有办法从现有快照/卷启动它,以便我可以使用 Helm Chart 和 EBS 快照。
【问题讨论】:
标签: mongodb amazon-web-services kubernetes bitnami amazon-ebs