我已经通过以下方式安装了 php5-mysqlnd:
apt-get install php5-mysqlnd
这是一个全新的 Debian 安装,仅包含 apache2 和 php5,安装方式如下:
apt-get install apache2
echo "deb http://http.us.debian.org/debian unstable main contrib non-free" >> /etc/apt/sources.list
apt-get update
apt-get install php5 php5-dev php5-cli libapache2-mod-php5 php5-mysqlnd
当我执行 phpinfo() 时,它显示正在使用 mysqlnd。
我的问题是,我应该在哪里放置配置详细信息来指定主/从详细信息,以便我可以使用自动负载平衡和读/写分割?
我已阅读并关注:http://www.php.net/manual/en/mysqlnd-ms.quickstart.configuration.php
我附加了:
mysqlnd_ms.enable=1
mysqlnd_ms.config_file=/etc/php5/mysqlnd_ms_plugin.ini
到 /etc/php5/conf.d/10-mysqlnd.ini
现在内容如下:
; configuration for php MySQL module
; priority=10
extension=mysqlnd.so
mysqlnd_ms.enable=1
mysqlnd_ms.config_file=/etc/php5/mysqlnd_ms_plugin.ini
不幸的是,这些设置似乎没有任何区别,因为我无法使用主机名“myapp”作为我在 /etc/php5/mysqlnd_ms_plugin.ini 中配置的部分名称来执行 mysql_connect():
{
"myapp": {
"master": {
"master_0": {
"host": "127.0.0.1",
"port": "3306"
}
},
"slave": {
"slave_0": {
"host": "10.0.0.1",
"port": "3306"
}
}
}
}
有人可以解释一下我的配置哪里出了问题吗?以及我该怎么做才能让它正常工作,以便我可以使用复制的数据库通过读/写拆分进行连接?
编辑:看到下面的评论后,我意识到我实际上并没有添加 mysqlnd_ms 插件。尝试通过 pecl 安装此插件后,我收到有关缺少 mysqlnd.h 的错误。
答案1
你不仅需要 php5-mysqlnd,还需要 mysqlnd_ms 插件(http://pecl.php.net/package/mysqlnd_ms) 已安装。
答案2
因此,在收到有关缺少 mysqlnd.h 的错误后,我切换到 DotDeb 存储库并从头开始重建云服务器。之后插件编译成功。