Hot vs cold mysql架构迁移和提高速度

Chr*_*nch 7 mysql database-migration

我最近一直在进行冷迁移......这意味着我在执行迁移(维护页面)时无法从应用程序级别读取/写入数据库.

这样,对于结构的更改不会发生错误,如果有很多负载,我不希望mysql在迁移过程中崩溃.

我的结构是每个客户都有自己的数据库.这种方法的唯一缺点是它们的停机时间可能是15-45分钟,具体取决于进行了多少更改.

我对此的解决方案如下:

有2个代码副本同时运行.我有代码可以检测他们所在程序的版本,如果他们还在旧版本,则显示旧代码...如果他们在新的时候显示他们的新代码

令我害怕的唯一部分是,如果有人在迁移过程中发生拒绝服务攻击,我可能会遇到严重问题.

我现在有大约360个数据库.

是推荐的热门方法吗?我只是担心它中间的拒绝服务或某种mysql查询错误,因为它们可能正在进行数据更改.我确实曾经发生过这种情况,但幸运的是,就在我开始迁移之前.

Ran*_*eed 3

仅当“新代码库”与“旧数据库版本”100% 兼容时,您的想法才有效,否则在数据库迁移过程中可能会崩溃。此外,它要求在数据库迁移期间的任何阶段,数据库永远不会处于不一致的状态(也许通过将迁移步骤包装在适当的事务中)。

如果资源允许的话,我会:

  • 在新的虚拟主机下安装并配置新的代码库,指向新的数据库(见下文)
  • 将“旧”站点置于只读模式
  • 在同一数据库服务器上复制当前数据库
  • 将重复数据库迁移到新版本
  • 将虚拟主机切换到新的代码库(确保解除维护模式:)
  • 让新版本成熟几个小时,然后删除旧的代码库、数据库和虚拟主机。

(您甚至可以跳过虚拟主机的修改并使用符号链接代替)