我有一些数据被分片并保存在DB1
上托管的DB2
,DB3
和Machine1
中。现在,要扩展系统,我需要将分片DB1
从Machine1
移到Machine2
。移动完成后,所有分片DB1
的请求都将路由到Machine2
。
假设我们一直在读取,写入和更新DB1
。我该如何进行迁移而又没有停机时间来进行读/写/更新?
我们可以在迁移窗口期间将DB1
设为只读,然后将数据复制到Machine2
。复制完成后,我们可以将流量路由到Machine2
并允许写操作。
但是,如果我们想在写操作同时进行同样的操作怎么办?
答案 0 :(得分:0)
经过一番研究,我发现了几种方法。
解决方案1
出于将分片复制到另一台物理计算机的目的,请将其分成几个小段。触发脚本以逐段从M1复制到M2。复制期间,将传入的写入复制到M1和M2。
解决方案2
像以前一样,将碎片分成几个较小的部分。
我觉得解决方案2 更好,因为它不会写到两个地方,因此客户端写请求会更快。