Read replication - 读取复制

优质
小牛编辑
151浏览
2023-12-01

Sequelize 支持读复制,即当你想要进行 SELECT 查询时,可以连接多个服务器. 执行读取复制时,指定一个或多个服务器作为只读副本,并且一个服务器替换相同的副本(请注意,Sequelize不会处理实际的复制过程,而应由后端数据库处理).

const sequelize = new Sequelize('database', null, null, {
  dialect: 'mysql',
  port: 3306
  replication: {
    read: [
      { host: '8.8.8.8', username: 'read-username', password: 'some-password' },
      { host: '9.9.9.9', username: 'another-username', password: null }
    ],
    write: { host: '1.1.1.1', username: 'write-username', password: 'any-password' }
  },
  pool: { // 如果要覆盖用于读/写池的参数,可以在此处执行此操作
    max: 20,
    idle: 30000
  },
})

如果你有适用于每个实例的任何常规设置. 在上面的代码中,数据库名称和端口将传播到所有副本. 对于用户和密码,如果你将其留给任何副本,也会发生同样的情况.每个副本都有以下参数:host,port,username,password,database.

Sequelize 使用池来管理与副本的连接. 内部 Sequelize 将维护使用 pool 配置创建的两个池.

如果要修改这些,可以在实例化 Sequelize 时将池作为参数传递,如上所示.

每个 writeuseMaster: true 查询都将使用写入池. 对于 SELECT,将使用读取池. 使用基本循环调度切换只读副本.