我有一些数据被分片并保存在Machine1上托管的DB1,DB2和DB3中。现在,为了扩展系统,我需要将shard DB1从Machine1移动到Machine2。迁移完成后,所有对分片DB1的请求都会被路由到Machine2。
假设我们一直有读、写和更新到DB1。如何才能在不中断读/写/更新的情况下进行迁移?
我们可以在迁移窗口期间将DB1设置为只读,并将数据复制到Machine2。复制完成后,我们可以将流量路由到Machine2并允许写入。
但是,如果我们想做同样的事情,同时写入也在发生,该怎么办呢?
发布于 2018-12-28 03:46:37
经过一些研究,我找到了几种方法来做到这一点。
解决方案1
为了将分片复制到另一台物理机,请将其拆分成几个小段。触发脚本将M1中的数据段一段一段地复制到M2中。在进行拷贝时,将传入的写入同时复制到M1和M2。
解决方案2
如前所述,将碎片拆分为几个较小的分段。
我觉得解决方案2更好,因为它不会写到两个地方,因此客户端写请求会更快。
https://stackoverflow.com/questions/53826376
复制相似问题