use read replica for "read"
This commit is contained in:
@ -23,26 +23,27 @@ export const appDataSource = new DataSource({
|
||||
max: env.pg.pool.max,
|
||||
idleTimeoutMillis: 10000, // 10 seconds
|
||||
},
|
||||
replication: env.pg.slave
|
||||
? {
|
||||
// set the default destination for read queries as the master instance
|
||||
defaultMode: 'master',
|
||||
master: {
|
||||
host: env.pg.host,
|
||||
port: env.pg.port,
|
||||
username: env.pg.userName,
|
||||
password: env.pg.password,
|
||||
database: env.pg.dbName,
|
||||
},
|
||||
slaves: [
|
||||
{
|
||||
host: env.pg.slave.host,
|
||||
port: env.pg.slave.port,
|
||||
username: env.pg.slave.userName,
|
||||
password: env.pg.slave.password,
|
||||
database: env.pg.slave.dbName,
|
||||
},
|
||||
],
|
||||
}
|
||||
: undefined,
|
||||
})
|
||||
|
||||
if (env.pg.replication) {
|
||||
appDataSource.setOptions({
|
||||
replication: {
|
||||
master: {
|
||||
host: env.pg.host,
|
||||
port: env.pg.port,
|
||||
username: env.pg.userName,
|
||||
password: env.pg.password,
|
||||
database: env.pg.dbName,
|
||||
},
|
||||
slaves: [
|
||||
{
|
||||
host: env.pg.slave.host,
|
||||
port: env.pg.slave.port,
|
||||
username: env.pg.slave.userName,
|
||||
password: env.pg.slave.password,
|
||||
database: env.pg.slave.dbName,
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@ -19,7 +19,8 @@ export interface BackendEnv {
|
||||
pool: {
|
||||
max: number
|
||||
}
|
||||
slave?: {
|
||||
replication: boolean
|
||||
slave: {
|
||||
host: string
|
||||
port: number
|
||||
userName: string
|
||||
@ -186,6 +187,12 @@ const nullableEnvVars = [
|
||||
'NOTION_CLIENT_SECRET',
|
||||
'NOTION_AUTH_URL',
|
||||
'SCORE_API_URL',
|
||||
'PG_REPLICATION',
|
||||
'PG_SLAVE_HOST',
|
||||
'PG_SLAVE_PORT',
|
||||
'PG_SLAVE_USER',
|
||||
'PG_SLAVE_PASSWORD',
|
||||
'PG_SLAVE_DB',
|
||||
] // Allow some vars to be null/empty
|
||||
|
||||
const envParser =
|
||||
@ -225,15 +232,14 @@ export function getEnv(): BackendEnv {
|
||||
pool: {
|
||||
max: parseInt(parse('PG_POOL_MAX'), 10),
|
||||
},
|
||||
slave: parse('PG_SLAVE_HOST')
|
||||
? {
|
||||
host: parse('PG_SLAVE_HOST'),
|
||||
port: parseInt(parse('PG_SLAVE_PORT'), 10),
|
||||
userName: parse('PG_SLAVE_USER'),
|
||||
password: parse('PG_SLAVE_PASSWORD'),
|
||||
dbName: parse('PG_SLAVE_DB'),
|
||||
}
|
||||
: undefined,
|
||||
replication: parse('PG_REPLICATION') === 'true',
|
||||
slave: {
|
||||
host: parse('PG_SLAVE_HOST'),
|
||||
port: parseInt(parse('PG_SLAVE_PORT'), 10),
|
||||
userName: parse('PG_SLAVE_USER'),
|
||||
password: parse('PG_SLAVE_PASSWORD'),
|
||||
dbName: parse('PG_SLAVE_DB'),
|
||||
},
|
||||
}
|
||||
const server = {
|
||||
jwtSecret: parse('JWT_SECRET'),
|
||||
|
||||
Reference in New Issue
Block a user