summaryrefslogtreecommitdiff
path: root/packages/backend
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-04-08 15:53:36 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-04-08 15:53:36 +0900
commit9114c8cb8e7d0bb0f686190d47c60591ac211f35 (patch)
tree153b2ca2f6f07a291704ea5a8b7a1e003655cce1 /packages/backend
parent:art (diff)
downloadsharkey-9114c8cb8e7d0bb0f686190d47c60591ac211f35.tar.gz
sharkey-9114c8cb8e7d0bb0f686190d47c60591ac211f35.tar.bz2
sharkey-9114c8cb8e7d0bb0f686190d47c60591ac211f35.zip
feat(backend): support replication of postgresql
Resolve #10205
Diffstat (limited to 'packages/backend')
-rw-r--r--packages/backend/src/config.ts10
-rw-r--r--packages/backend/src/postgres.ts16
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のコネクションが内部的に残り続けるようで、テストの際に支障が出るため無効にする(キャッシュも含めてテストしたいため本当は有効にしたいが...)