2017-06-19 27 views
5

我打算将一个PHP应用程序(从Googel云平台之外的服务器)连接到Google Cloud SQL。我想知道如何设计应用程序以正确地故障转移其数据库。故障转移如何在Google Cloud SQL上运行?

按照manual

当纬向发生中断时,你的主人故障转移到故障转移 副本,以实例的任何现有的连接被关闭。但是,您的应用程序可以使用相同的连接字符串或IP地址 来重新连接 ;在故障转移后您不需要更新您的应用程序。

看起来一切都是在幕后自动发生的,但是如果数据库的IP地址已经过期或超时了怎么办?

+1

故障切换后,IP将被移至新实例。没有什么需要在应用程序中发生。 – Vadim

回答

0

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

  • 它是利用被路由流量掌握连接器的虚拟IP,因此当主设备发生故障的备份将开始通告虚拟IP,这会导致您的TCP连接失败。

注释意味着如果你在mysqli.reconnect必须php.ini启用,以便能够在故障发生时你的PHP代码自动连接到备份mysql连接器。 read here

如果你的mysqli.reconnect被启用,那么你不必担心任何事情。

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

+0

PHP的mysqli将在连接列表中打破任何事务。如果它自动重新连接,则部分事务将被ROLLBACK'd并且新事务将开始。这可能会导致一团糟。你最好不要自动重新连接,并将其视为失败的事务,并让你的_code_重新开始事务。 –

+0

当然,如果SQL事务代码没有写成预防措施,连接可能在事务中的任何时候断开连接,那么这将是一团糟,这种情况必须在代码中处理。当启用自动提交并且您不在事务中时,简单的自动重新连接可以解决几乎任何其他情况。 –

+0

(我觉得有必要指出“当然”的新手阅读此线程。) –