将MySQL数据库从共享主机传输到云提供程序

时间:2017-07-08 13:25:24

标签: php mysql database database-migration digital-ocean

我目前正在为我的数据库使用共享托管服务提供商。它大约15GB,并且想开始使用更强大的东西(考虑使用Digitalocean)。最终我也会切换我的网站,但是现在我只想移动数据库,然后将我的网站(仍在共享主机提供商上)指向新的数字海洋服务器。在我相信事情都很好之后,我最终也会移动代码。

我在这里查看这篇文章: https://www.digitalocean.com/community/tutorials/how-to-migrate-a-mysql-database-between-two-servers

这个想法似乎很好,但我担心错过一些数据和整个策略。我认为我的数据库足够大,以至于在复制数据库并进行设置所需的时间内,我会错过发生的新事务(可能大约有300条记录没有太多)

解决方案是:

  1. 复制数据库,并进行设置以确保其正常工作
  2. 更新我的PHP代码以指向新数据库
  3. 在旧数据库上运行MySQL脚本以获取创建日期大于x的任何记录(我仍然认为我会在此处获取重复记录)或者可能是主键为> = x和&lt的任何记录; = y(所以我可以获得db xfers之间添加的几百条记录)
  4. 有更好的方法吗?也许我将数据分叉,以便暂时同时转到两个数据库,然后我可以安全地将遗留数据放入新的数据库,只有当一切都相同时,我才能切换?

    任何建议和帮助都将不胜感激!

1 个答案:

答案 0 :(得分:1)

在页面仍在运行时,保持它们两者同步的唯一方法是主从设置,在您切换PHP代码之前,主设备是旧数据库。

如果您不能这样做,则需要在移动数据时禁用对旧数据库的所有写入请求。 Mysql可以以--read-only模式启动。您当然可以建立一个维护页面并阻止对数据库的所有访问。

然后在最后一次写入请求之后获取一个新转储,将其复制,然后将PHP指向新数据库。之后,您可以删除维护模式。

你可以使用你在3中提到的方法,但这是有风险的。您需要调整自动增量值,以便为缺少的条目腾出空间。

有趣,正如我即将编辑此内容一样。 SO进入数据库传输的只读模式; - )