我已将主数据库名称设置为MDB&在Slave服务器中我设置为replicate-do-db = SDB < - 这不起作用?但是,当我将其设置为相同的DB名称时,它可以工作.是否有任何解决方案来设置1个主数据库与2个不同的从属但在同一服务器?
出于测试目的,我试图通过设置 slaveDelay=n 的从站来模拟 mongodb 集群中的复制延迟。事实证明,这神奇地导致奴隶被隐藏,所以我的测试无法访问它。
在MongoDB的文档状态“一般来说,我们不希望被用于slaveOkay延迟成员读取因此,设置slaveDelay还隐藏应用程序中的成员,就好像您还可以设置隐藏:。真正的”
有没有办法为我的“非典型”用例进行配置?或者有没有更好的方法来模拟从具有不同时间延迟的不同从站读取?
我尝试使用 TaggedReadPreference 强制测试代码连接到延迟的从站,但这导致
com.mongodb.MongoException: Could not find any valid secondaries with the supplied tags ('{ "delayed" : "true"}'
Run Code Online (Sandbox Code Playgroud)
显然,Java 驱动程序看不到辅助驱动程序。当我删除“slaveDelay”设置时,它连接正常。
这是我的集群配置:
rs.reconfig({
"_id" : "rs0",
"version" : 4,
"members" : [
{ "_id" : 0,
"host" : "localhost:27017",
"priority" : 0,
slaveDelay: 10,
tags: { delayed: "true" }
},
{ "_id" : 1,
"host" : "localhost:27018"
},
{ "_id" : 2,
"host" : "localhost:27019",
"arbiterOnly" : true
}
]
})
Run Code Online (Sandbox Code Playgroud) 我有一个包含两个数据库的 Redis 实例。现在我想设置第二个实例并复制第一个实例,但第二个实例应该只有一个数据库并且只从第一个实例复制 db 0。当我尝试这样做(slaveof ...为第二个实例设置)时,我在 Redis 日志文件中收到以下错误消息:
FATAL: Data file was created with a Redis server configured to handle more than 1 databases. Exiting
Run Code Online (Sandbox Code Playgroud)
我尝试使用redis-dump,但是当我尝试将生成的转储导入新实例时出现错误。(我认为与 2 dbs 和 1 db 无关,而是 redis-dump 中的一个错误,它仍处于 alpha 阶段。
该怎么办?
在主/从数据库复制中,所有写入都将转到主计算机.所有读取都转到从机.主机将数据复制到从机.当主设备将数据复制到从设备时,从设备必须执行写操作以锁定该行.从奴隶机器读取速度更快,但为什么呢?
我希望能够将整个数据库从Microsoft SQL复制到另一个Web友好的数据库,如CouchDB甚至mySQL.
我需要每天进行复制,只是想知道是否可能,如果是这样,我怎么用最少的编码来做.
谢谢
我们使用3个SQL Server进行事务复制设置,第1个作为发布者,第2个作为分发者,第3个作为订阅者.
我们有一项活动,可以使用de-attach和attach方法更改复制的DB(订户)的位置.在此活动期间,我将需要停止SQL服务器,因此所有复制的事务都将失败.
在此活动期间暂停复制的正确方法是什么,因此当我再次附加数据库并启动SQL服务时,复制将正常恢复.
谢谢
我们设置了两个mongodb分片.每个分片包含一个主机,一个从机,一个24h从机延迟从机和一个仲裁器.但是,平衡器无法迁移任何等待延迟从属设备迁移的分片.我已经尝试在balancer配置中将_secondaryThrottle设置为false,但我仍然有问题.
似乎迁移持续了一天然后失败(大量等待日志中的从属消息).最终它放弃并开始新的迁移.消息说等待3个从站,但是延迟从站被隐藏并且prio 0所以它应该等待那个.如果_SecondaryThrottle工作,它不应该等待任何奴隶对吗?
几个月以来就是这样,所以配置应该在所有的mongoses上重新加载.一些运行平衡器的mongoses最近已重新启动.
有没有人知道如何解决问题,我们在启动延迟奴隶之前没有遇到这些问题,但这只是我们的理论.
配置:
{ "_id" : "balancer", "_secondaryThrottle" : false, "stopped" : false }
Run Code Online (Sandbox Code Playgroud)
从shard1主进程记录:
[migrateThread]警告:迁移提交等待3个从属为'xxx.xxx'{shardkey:ObjectId('4fd2025ae087c37d32039a9e')} - > {shardkey:ObjectId('4fd2035ae087c37f04014a79')}等待:529dc9d9:7a [migrateThread]等待复制在进入关键部分之前赶上
从shard2主进程登录:
Tue Dec 3 14:52:25.302 [conn1369472] moveChunk数据传输进度:{active:true,ns:"xxx.xxx",来自:"shard2/mongo2:27018,mongob2:27018",min:{shardkey:ObjectId( '4fd2025ae087c37d32039a9e')},max:{shardkey:ObjectId('4fd2035ae087c37f04014a79')},shardKeyPattern:{shardkey:1.0},状态:"catchup",计数:{cloned:22773,clonedBytes:36323458,catchup:0,stable: 0},ok:1.0}我使用的mem:0
更新:我确认删除slaveDelay让平衡器再次运行.一旦他们加快了速度,就会移动.所以问题似乎与slaveDelay有关.我还确认平衡器以"secondaryThrottle"运行:false.无论如何,它确实似乎在等待奴隶.
Shard2:
Tue Dec 10 11:44:25.423 [migrateThread]警告:为'xxx.xxx'{shardkey:ObjectId('4ff1213ee087c3516b2f703f')} - > {shardkey:ObjectId('4ff12a5eddf2b32dff1e7bea')}等待: 52a6f089:81
12月10日星期二11:44:26.423 [migrateThread]在进入关键部分之前等待复制赶上
Tue Dec 10 11:44:27.423 [migrateThread]在进入关键部分之前等待复制赶上
12月10日星期二11:44:28.423 [migrateThread]在进入关键部分之前等待复制赶上
12月10日星期二11:44:29.424 [migrateThread]在进入关键部分之前等待复制赶上
12月10日星期二11:44:30.424 [migrateThread]在进入关键部分之前等待复制赶上
12月10日星期二11:44:31.424 [migrateThread]在进入关键部分之前等待复制赶上
Tue Dec 10 11:44:31.424 [migrateThread] migrate commit succeeded flushing to secondaries for'xxx.xxx'{shardkey:ObjectId('4ff1213ee087c3516b2f703f')} - > {shardkey:ObjectId('4ff12a5eddf2b32dff1e7bea')}
Tue Dec 10 11:44:31.425 [migrateThread] migrate commit …
我有一个 amazon rds 实例数据库,我正在使用只读副本进行分析。但是,每周左右,只读副本都会因复制错误而崩溃。
我已经尝试根据此帮助文章查看从属状态并跳过复制错误,但是,我只能通过摆弄并创建新的只读副本来恢复它。
由于外部服务依赖于初始只读副本,这有多种原因。
主数据库没问题,但似乎某些完整性错误会导致只读副本崩溃且无法恢复。
目前,我的只读副本具有以下参数:
Replication State: Error
Replication Error: Error 'Cannot add or update a child row: a foreign key constraint fails.....
Run Code Online (Sandbox Code Playgroud)
有没有办法配置这个只读副本来跳过所有错误?我只是想弄清楚如何使它更稳定。谢谢!
假设我们有一个公交公司的数据库.
我们正在寻找这样的东西:
例:
我们目前正在研究的内容:
感谢您的见解.
我想了解数据库复制在概念上是如何工作的。我知道数据库有自己的日志(例如,MongoDB中的OpsLog),但是您可以在网上找到的大多数信息都是关于设置复制的,而不是复制的工作方式。
我也对理解MS SQL Server或MySQL如何专门进行复制不感兴趣。我更想掌握复制的基本思想和概念。
不幸的是,我不知道要寻找的术语,所以如果我寻找
数据库复制如何工作?
要么
概念上的数据库复制
我最终访问了数百个网站,解释了如何使复制适用于数据库X,但是我无法在概念上给出解释。
有什么提示吗?(请注意,我当然会对详细的答案感到满意,但即使是关于在网络上搜索内容的小提示也会很棒!)
PS:首先,即使对单向复制的工作原理进行解释也将有所帮助。
PPS:既然数据库索引是如何工作的?一直是一个有效的问题,我希望我的也是有效的,不要因为“范围太广”而被关闭或否决。
replication ×4
database ×3
mysql ×3
mongodb ×2
amazon-rds ×1
couchdb ×1
postgresql ×1
redis ×1
sql ×1
sql-server ×1