跳至主要內容
版本:v6 - 穩定版

讀取複製

Sequelize 支援讀取複製,也就是說,當您想要執行 SELECT 查詢時,可以連接到多個伺服器。當您進行讀取複製時,您會指定一個或多個伺服器作為讀取複本,並指定一個伺服器作為主要寫入器,處理所有寫入和更新,並將它們傳播到複本(請注意,實際的複製過程並非由 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,
},
});

如果您有適用於所有複本的通用設定,則無需為每個實例提供這些設定。在上面的程式碼中,資料庫名稱和端口會傳播到所有複本。如果任何複本中遺漏了使用者和密碼,也會發生同樣的情況。每個複本都有以下選項:hostportusernamepassworddatabase

Sequelize 使用池來管理與複本的連線。在內部,Sequelize 將使用 pool 設定維護兩個池。

如果您想要修改這些,您可以在實例化 Sequelize 時傳遞 pool 作為選項,如上所示。

每個 writeuseMaster: true 查詢都會使用寫入池。對於 SELECT,將使用讀取池。讀取複本會使用基本的循環排程進行切換。