我有一个巨大的InnoDB表(> 5亿行),我想通过散列进行分区以减少索引大小。我希望以最短的停机时间(例如10分钟可接受)实现这一目标,有哪些可能的选择?
我正在考虑如下事情:
主要问题是在步骤4中可以使用什么工具。问题是在步骤2中可能会对原始表进行大量更改:新插入,更新,删除 - 同步工具应该采取所有这些考虑到......
我认为另一种可能的方式是:
你会推荐哪一个?
答案 0 :(得分:1)
我会选择主/从复制。如果主设备和从设备可以位于同一子网上,我还会向主设备添加新IP,将客户端更改为指向新IP。然后,当您即将切换到奴隶时,只需:
在主人身上停止mysql
ifconfig关闭主人的额外IP
ifconfig up new master上的额外IP
客户端只会在没有任何客户端重新配置的情况下连接到新主服务器。然后当你切换回原始主人时(如果你切换回来),你会做同样的事情。
我建议一个slave总是与它的master相同的硬件,这样当它接管master时你就会发现它的速度太快以至于无法跟上并且你的整个系统都失败了。如果这样做,那么只需切换一次(从当前主设备切换到新主设备)。