如何配置PHP PDO以连接到多主机集群?
我使用的是负载平衡数据库 连接到数据库的常用方法是:如何配置PHP PDO以连接到多主机集群?,php,mysql,pdo,percona,database-cluster,Php,Mysql,Pdo,Percona,Database Cluster,我使用的是负载平衡数据库 连接到数据库的常用方法是: $db = new \PDO('mysql:dbname=foo;host=127.0.0.1'); 但是,有多个主节点,每个主节点在任何时间点都可能已死亡 如何通过负载平衡和安全故障转移建立与数据库群集的连接?我的直觉猜测很简单: <?php $cluster = ['10.128.155.150', '10.128.155.151', '10.128.155.152']; shuffle($cluster); foreach
$db = new \PDO('mysql:dbname=foo;host=127.0.0.1');
但是,有多个主节点,每个主节点在任何时间点都可能已死亡
如何通过负载平衡和安全故障转移建立与数据库群集的连接?我的直觉猜测很简单:
<?php
$cluster = ['10.128.155.150', '10.128.155.151', '10.128.155.152'];
shuffle($cluster);
foreach ($cluster as $i => $ip) {
try {
$db = new \PDO('mysql:dbname=foo;host=' . $ip . ';charset=utf8');
break;
} catch (\PDOException $e) {
if ($i === count($cluster)) {
throw $e;
}
}
}
对于那些对此投反对票的人:解释这种方法为什么是错误的或者至少提供一个你喜欢的方法的例子是有意义的。这不是一个完美的解决方案,但会起作用,我也对一种更好的方法感兴趣。集群的重点不是让你选择连接到哪个主机。这是负载平衡器的工作。