diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-04-08 15:53:36 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-04-08 15:53:36 +0900 |
| commit | 9114c8cb8e7d0bb0f686190d47c60591ac211f35 (patch) | |
| tree | 153b2ca2f6f07a291704ea5a8b7a1e003655cce1 /packages/backend/src | |
| parent | :art (diff) | |
| download | sharkey-9114c8cb8e7d0bb0f686190d47c60591ac211f35.tar.gz sharkey-9114c8cb8e7d0bb0f686190d47c60591ac211f35.tar.bz2 sharkey-9114c8cb8e7d0bb0f686190d47c60591ac211f35.zip | |
feat(backend): support replication of postgresql
Resolve #10205
Diffstat (limited to 'packages/backend/src')
| -rw-r--r-- | packages/backend/src/config.ts | 10 | ||||
| -rw-r--r-- | packages/backend/src/postgres.ts | 16 |
2 files changed, 26 insertions, 0 deletions
diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index fd2b83cf2a..1443e63385 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -25,6 +25,16 @@ export type Source = { disableCache?: boolean; extra?: { [x: string]: string }; }; + dbReplications?: boolean; + dbSlaves?: { + host: string; + port: number; + db: string; + user: string; + pass: string; + disableCache?: boolean; + extra?: { [x: string]: string }; + }[]; redis: { host: string; port: number; diff --git a/packages/backend/src/postgres.ts b/packages/backend/src/postgres.ts index efeca46b49..bb21ed827e 100644 --- a/packages/backend/src/postgres.ts +++ b/packages/backend/src/postgres.ts @@ -200,6 +200,22 @@ export function createPostgresDataSource(config: Config) { statement_timeout: 1000 * 10, ...config.db.extra, }, + replication: config.dbReplications ? { + master: { + host: config.db.host, + port: config.db.port, + username: config.db.user, + password: config.db.pass, + database: config.db.db, + }, + slaves: config.dbSlaves!.map(rep => ({ + host: rep.host, + port: rep.port, + username: rep.user, + password: rep.pass, + database: rep.db, + })), + } : undefined, synchronize: process.env.NODE_ENV === 'test', dropSchema: process.env.NODE_ENV === 'test', cache: !config.db.disableCache && process.env.NODE_ENV !== 'test' ? { // dbをcloseしても何故かredisのコネクションが内部的に残り続けるようで、テストの際に支障が出るため無効にする(キャッシュも含めてテストしたいため本当は有効にしたいが...) |