【问题标题】:How failover works on Google Cloud SQL?故障转移如何在 Google Cloud SQL 上运行?
【发布时间】:2017-11-21 20:35:18
【问题描述】:

我打算将 PHP 应用程序(从 Googel Cloud Platform 外部的服务器)连接到 Google Cloud SQL。我想知道如何设计应用程序以正确地对其数据库进行故障转移。

根据manual

当发生区域性中断并且您的主服务器故障转移到您的故障转移时 副本,任何与实例的现有连接都将关闭。然而, 您的应用程序可以使用相同的连接字符串或 IP 重新连接 地址;您无需在故障转移后更新您的应用程序。

似乎一切都在幕后自动发生,但如果数据库的 IP 地址超时或超时怎么办?

【问题讨论】:

  • 故障转移后IP将被移动到新实例。应用程序中不需要发生任何事情。

标签: php mysql google-app-engine


【解决方案1】:

Google 没有透露 here 后端使用什么来提供数据库服务,但我的假设是:

  • 它使用虚拟 IP 将流量路由到主连接器,因此当主连接失败时,备份将开始通告虚拟 IP,这将导致您的 TCP 连接失败。

注释表示如果您的php.ini 中的mysqli.reconnect 必须启用以允许您的PHP 代码在发生故障时自动连接到备份MySQL 连接器。 read here

如果您的 mysqli.reconnect 已启用,那么您无需担心任何事情。

编辑:在回答关于 SQL 事务的问题时——当然,如果 SQL 事务代码没有写在事务期间连接可能随时断开的预防措施,那将是一团糟,这种情况必须在代码中处理.当启用自动提交并且您不在事务中时,简单的自动重新连接几乎可以解决任何其他情况。

【讨论】:

  • PHP 的 mysqli 会在连接为 list 时中断任何事务。如果它自动重新连接,则部分事务将被回滚并启动一个新事务。这可能会造成混乱。您最好不要自动重新连接并将其视为失败的事务,并让您的 代码 重新启动事务。
  • 当然如果不写SQL事务代码的话会很乱,事务过程中连接可能随时断开,这种情况必须在代码中处理。当启用自动提交并且您不在事务中时,简单的自动重新连接几乎可以解决任何其他情况。
  • (我觉得有必要将“当然”指向阅读此主题的新手。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多