リードレプリケーション
Sequelizeはリードレプリケーション、つまり、SELECTクエリを実行する場合に接続できる複数のサーバーを持つことをサポートしています。リードレプリケーションを行う場合、1つ以上のサーバーをリードレプリカとして、1つのサーバーをメインライターとして指定します。メインライターはすべての書き込みと更新を処理し、それらをレプリカに伝播します(実際のレプリケーションプロセスは**Sequelizeでは**処理されず、データベースバックエンドで設定する必要があります)。
const sequelize = new Sequelize('database', null, null, {
  dialect: 'mysql',
  port: 3306,
  replication: {
    read: [
      {
        host: '8.8.8.8',
        username: 'read-1-username',
        password: process.env.READ_DB_1_PW,
      },
      {
        host: '9.9.9.9',
        username: 'read-2-username',
        password: process.env.READ_DB_2_PW,
      },
    ],
    write: {
      host: '1.1.1.1',
      username: 'write-username',
      password: process.env.WRITE_DB_PW,
    },
  },
  pool: {
    // If you want to override the options used for the read/write pool you can do so here
    max: 20,
    idle: 30000,
  },
});
すべてのレプリカに適用される一般的な設定がある場合、インスタンスごとにそれらを指定する必要はありません。上記のコードでは、データベース名とポートはすべてのレプリカに伝播されます。ユーザー名とパスワードについても、いずれかのレプリカで省略した場合、同様に伝播されます。各レプリカには、次のオプションがあります: `host`、`port`、`username`、`password`、`database`。
Sequelizeはプールを使用して、レプリカへの接続を管理します。内部的にSequelizeは、`pool`設定を使用して作成された2つのプールを維持します。
これらを変更する場合は、上記のようにSequelizeをインスタンス化するときにオプションとしてプールを渡すことができます。
各`write`クエリまたは`useMaster: true`クエリは書き込みプールを使用します。`SELECT`クエリには読み込みプールが使用されます。リードレプリカは、基本的なラウンドロビン方式で切り替えられます。