如果slave无法在Symfony2

时间:2016-03-22 09:23:26

标签: mysql symfony doctrine-orm master-slave

我已经建立了一个主从连接,工作得很好。它似乎从奴隶读取并写入主人。对于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有关,因为当配置一个dbal连接时,似乎会使用那个,否则会使用Connection

1 个答案:

答案 0 :(得分:1)

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

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

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