MongoShake
MongoShake copied to clipboard
源库同步到目标库需要具备哪些权限、目前我大概只知道这些、不知道对不对、可以补充一下嘛、谢谢
// 源端用户(用于读取 oplog、状态及写 checkpoint)
use admin
db.createUser({
user: "mongoshake_src",
pwd: "password",
roles: [
{ role: "read", db: "admin" },
{ role: "read", db: "config" },
{ role: "read", db: "local" },
{ role: "read", db: "db1" }, // db1
{ role: "read", db: "db2" }, // db2
{ role: "readWrite", db: "mongoshake" },
{ role: "clusterMonitor", db: "admin" }
]
})
// 目标端用户(用于写入同步目标库)
use admin
db.createUser({
user: "mongoshake_dst",
pwd: "password",
roles: [
{ role: "readWrite", db: "db1" }, // db1
{ role: "readWrite", db: "db2" }, // db2
{ role: "dbAdminAnyDatabase", db: "admin" }
]
})
这个得看你的同步对象,即filter相关设置;还有同步的架构(副本集/分片)。看起来如果只是同步db1/db2的话,是没问题的。
在这里有权限相关的描述:wiki
找了下Shake暂时没有权限完整要求/示例相关的wiki或者QA描述,我们看看能不能基于你这个issue整理出一条,便于解决其他人的类似问题。
@zhongli-james 是的、想着整理一个副本集或者分片的权限、放在WIKI或者QA描述、这样方便后面的人使用。
补充下,如果期望开启以下参数,则强依赖写入目标端的账户包含bypassDocumentValidation权限。推荐的解决方案是给目标端写入账号补充dbAdminAnyDatabase的built-in role即可:
incr_sync.executor.bypass_document_validation
详情可参考:https://www.mongodb.com/docs/manual/reference/built-in-roles/?deployment-type=self#mongodb-authrole-dbAdminAnyDatabase