谷歌云SQL如何实现故障转移?

5
我打算将一个位于 Google Cloud Platform 之外的 PHP 应用连接到 Google Cloud SQL,想知道如何设计应用程序以使其数据库能够正常故障转移。根据 手册
当发生区域性故障并且主服务器切换到故障转移副本时,任何现有的连接都将关闭。但是,您的应用程序可以使用相同的连接字符串或 IP 地址重新连接;在故障转移后,您无需更新应用程序。
看起来一切都在幕后自动进行,但如果数据库的 IP 地址失效或超时会怎么样呢?

1
故障转移后,IP 将被移动到新实例。应用程序中不需要进行任何操作。 - Vadim
1个回答

0

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

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

该评论意味着如果您在php.ini中启用了mysqli.reconnect,则允许您的PHP代码在发生故障时自动连接到备用MySQL连接器。 在这里阅读

如果启用了mysqli.reconnect,则无需担心任何事情。

编辑:回答有关SQL事务的问题--当然,如果SQL事务代码没有采取预防措施,即连接可能在事务期间的任何时候断开,那么情况会很混乱,必须在代码中处理这种情况。当启用自动提交并且您不在事务中时,简单的自动重新连接将解决几乎任何其他情况。


当PHP的mysqli连接丢失时,会中断任何事务。如果它自动重新连接,部分事务将被ROLLBACK,并启动一个新事务。这可能会导致混乱。最好不要自动重新连接,将其视为失败的事务,让您的代码重新启动事务。 - Rick James
当然,如果SQL事务代码没有预防在交易期间连接可能随时断开的措施,那么情况就会很混乱,必须在代码中处理这种情况。当启用自动提交并且您不在事务内时,简单的自动重新连接几乎可以解决任何其他情况。 - Mason.Chase
(我觉得有必要向阅读本帖的新手指出“当然”的含义。) - Rick James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接