如果 slave 在 Symfony2 中不工作,自动连接到 MySQL master

Automatically connect to MySQL master if slave not working in Symfony2

我已经建立了一个工作正常的主从连接。它似乎从奴隶读取并写入主人。对于 MySQL 部分,我使用了 this guide。对主服务器所做的任何修改也会立即应用于从服务器。两个数据库都使用5.6版本。

doctrine:
    dbal:
        default_connection:   default
        connections:
            default:
                driver:   pdo_mysql
                host:     "%database_host%"
                port:     "%database_port%"
                dbname:   "%database_name%"
                user:     "%database_user%"
                password: "%database_password%"
                charset:  UTF8

                slaves:
                    slave1:
                        host:     "%sdatabase_host%"
                        port:     "%sdatabase_port%"
                        dbname:   "%sdatabase_name%"
                        user:     "%sdatabase_user%"
                        password: "%sdatabase_password%"

但是,如果从服务器的 mysql 服务器已关闭(或配置错误),那么与主服务器建立连接是否有意义?在这种情况下,整个应用程序崩溃了,我觉得有点烦人。

我想知道如果从站不工作,是否有办法连接到主站。或者请告诉我这是否是一种不好的做法。

我相信这与使用 MasterSlaveConnection since that one seems to be used when slaves are configured for a dbal connection, otherwise Connection 有关。

我认为最舒适的选择是(在这种情况下)在 MySQL-slave 服务器之前设置一个 HAProxy 实例。然后在 Symfony 配置中指定 HAProxy 作为从服务器。如果代理检测到它(从属)关闭,它将透明地将整个连接传递到主服务器。

查看一些示例,了解如何使用我描述的行为设置 HAProxy:

https://www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing--3