5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LaravelでDBのread/write接続設定

Posted at

背景

Laravelでどうやってマスター(書き込み用), スレーブ(読み込み用)のDB接続設定をするのか調査したのでメモ

参考資料

設定方法

基本的に config/database.phpreadwrite のDBホスト名を記述するだけで、共通部分(ID/PWなど)の設定は mysql 直下の設定が使われる。
複数ホスト名が書かれている場合はランダムに使われるとのこと。

'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' => '',
],

sticky 設定について

有効にすると、書き込みクエリが1度でも発生すると同じリクエスト内では読み込みクエリでも書き込み用DB接続が使われるようになる、おそらくこれは「書き込み直後に読み込み処理で、データ同期がスレーブに反映される前に読み込みしてしまう」という問題を解決するためのもので、基本的に true に設定しておくべきものと認識しておくのが良さそう。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?