Laravel 8 读写分离
有时候你希望 SELECT 语句使用一个数据库连接,而 INSERT、UPDATE 和 DELETE 语句使用另一个数据库连接。在 Laravel 中,无论你是使用原生查询,查询构造器,还是 Eloquent ORM,都能轻松的实现。
为了弄明白读写分离是如何配置的,我们先来看个例子:
'mysql' => [
'read' => [
'host' => [
'192.168.1.1',
'196.168.1.2',
],
],
'write' => [
'host' => [
'196.168.1.3',
],
],
'sticky' => true,
'driver' => 'mysql',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
],
注意在以上的例子中,配置数组中增加了三个键,分别是 read
、write
和 sticky
。read
和 write
都包含一个键为 host
的数组。而 read
和 write
的其他数据库选项都在键为 mysql
的数组中。
如果你想重写主数组中的配置,只需要修改 read
和 write
数组即可。所以,这个例子中:192.168.1.1
和 192.168.1.2
将作为 「读」 连接主机,而 192.168.1.3
将作为 「写」 连接主机。这两个连接会共享 mysql
数组的各项配置,如数据库的凭证(用户名 / 密码),前缀,字符编码等。