Mysql 如果读服务器没有响应,那么所有请求都将转到laravel中的主写服务器

Mysql 如果读服务器没有响应,那么所有请求都将转到laravel中的主写服务器,mysql,laravel,Mysql,Laravel,我在laravel中设置了读/写数据库连接,用于数据库优化。我想知道,如果我们的读取服务器没有响应,那么所有请求都应该转到主数据库写入服务器。在拉雷维尔有可能吗? 这是我的database.php配置文件 'mysql' => [ 'read' => [ 'host' => '192.168.1.1', ], 'write' => [ '

我在laravel中设置了读/写数据库连接,用于数据库优化。我想知道,如果我们的读取服务器没有响应,那么所有请求都应该转到主数据库写入服务器。在拉雷维尔有可能吗? 这是我的database.php配置文件

'mysql' => [
            'read' => [
                'host' => '192.168.1.1',
            ],
            'write' => [
                'host' => '192.168.1.2'
            ],
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'laravel'),
            'username'  => env('DB_USERNAME', 'root'),
            'password'  => env('DB_PASSWORD', 'root'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

如果不扩展Laravel core,我们就无法实现。基本上,我认为这类问题应该通过基础设施配置来解决,而不是通过应用程序来解决

例如,如果您使用的是AWS Aurora,则可以使用readerreadonly端点

日本人 如果群集的写入程序终结点是cluster1.cluster-xxxxx.us-east-1.rds.amazonaws.com,则reader one将提供后缀*-ro:cluster1.cluster-ro-xxxxx.us-east-1.rds.amazonaws.com

读卡器端点的行为完全符合您的要求。通常,通过循环调度来平衡负载。当读卡器崩溃时,它将自动从网络中排除。当写入程序崩溃时,其中一个读卡器将自动升级为写入程序。这是一个非常酷的功能