读/写分离如何与 MySQL 复制配合使用?

读/写分离如何与 MySQL 复制配合使用?

我知道如何设置主->从复制,但我对如何使用 PHP 应用程序在两个 MySQL 服务器之间进行读/写分割有点困惑。

当我让 MySQL 复制工作并且 PHP 连接到主服务器时,它是否只从主服务器读取和写入,还是同时从主服务器和从服务器读取和写入?如果不是,我该如何实现这一点(通过 PHP/MySQL)或其他方式?

我一直认为 MySQL 复制具有一些内置功能,可以从从服务器读取数据以实现一些负载平衡,但现在我认为 MySQL 复制只是为了故障转移而将数据复制到从服务器。我想实现负载平衡,但就从从服务器读取数据和将数据写入主服务器而言,我仍然不知道 MySQL 复制的具体工作原理。

答案1

最简洁的答案是不。

长话短说,MySQL 复制确实如其名称所示。它复制数据(在另一台机器上重放日志)。与 Elasticsearch 等不同,它不关心读取。

必须在驱动程序中实现复制支持。由于 PHP MySQL/MySQLi/PDO 驱动程序(据我所知)不具备任何复制支持,因此剩下两个选项。

要么按照@MichaelHampton在评论中的建议使用代理,要么自己实现拆分。如果你唯一关心的是读/写拆分,那么这并不难。处理故障转移和/或观察复制滞后,以停止从延迟的从属服务器读取可能会变得有点棘手,但仍然不是火箭科学。

相关内容