我经营一家共享托管服务提供商,我们希望将我们的托管迁移到高可用性(跨多个数据中心复制)设置。我们创建了一个具有故障转移功能的复制 MySQL 设置,它运行良好,我们想将所有客户的数据库迁移到该设置。
唯一的问题是我们有许多客户,他们都将他们的 Wordpress、Drupal 等安装配置为通过本地套接字连接到 MySQL,而不是连接到远程服务器的地址。
我不愿意手动去更改所有客户站点的连接声明。
我最希望看到的是一个程序,它监听 /tmp/mysql.sock 并将连接转发到我指定的远程服务器。我见过 SQL Relay,但它似乎要求我将所有数据库名称、用户名和密码硬编码到其配置文件中。这对我来说行不通,因为我们的用户一直在动态添加新数据库,我不想每次都编写代码来更新 SQLRelay 的配置文件。
有人知道如何做到这一点吗?
或者,我接受如何在 PHP 级别处理此问题的想法。(即将任何尝试调用 mysql_connect() 重定向到该主机名而不是 localhost)
谢谢,凯文
答案1
你可能想要MySQL 代理代理与真实服务器的连接。
答案2
目录中/etc/wordpress
应该有一个每个站点的配置文件。它们的格式为“config-网站名称.php"。它们应该有以 开头的行define('DB_HOST',
。编辑定义的值为 mysql 主机的名称。
验证远程主机上 mysql 中的权限,以确保它们允许用户从 Web 服务器进行连接。该表mysql.user
有一个主机名column
,可用于限制对主机的访问。将主机名设置为%
允许任何主机进行连接。将其设置为将要连接的主机的名称更为安全。
Drupal 应该使用类似的机制。
您可以通过启用服务器上的 mysql 进行监听localhost
并让用户从套接字转换到此处来开始转换。