laravel(lumen)配置读写分离后,强制读主(写)库数据库,解决主从延迟问题

在Model里面加上下面这句,强制读主(写)库数据库,解决主从延迟问题。

    public static function boot()
    {
        //清空从连接,会自动使用主连接
        DB::connection()->setReadPdo(null);
    }

--------------------------------------------------------------------------------------------

laravel5.5可以使用新增特性:

“粘性”数据库连接


sticky 选项

当配置读/写数据库连接时,支持一个新的配置项 sticky:

'mysql' => [
    'read' => [
        'host' => '192.168.1.1',
    ],
    'write' => [
        'host' => '196.168.1.2'
    ],
    'sticky'    => true,
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '',
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix'    => '',
],


sticky 选项是可选的值,可用于允许在当前请求生命周期内立即读取刚刚写入数据库的记录。如果 sticky 选项被开启并且在当前请求生命周期内在数据库上进行了一次”写”操作,任意后续的”读”操作将会使用”写”连接,这样就可以确保任何在当前请求周期内写入的数据可以立即在同一个请求生命周期内被正确地从数据库读取。这可以看作是解决分布式数据库主从延迟的一种方案,至于是否启用这样的功能最终取决于你。

原文地址:https://www.cnblogs.com/xuhuaiqu/p/6601961.html