postgresql 复制的大小太大

postgresql replication have too much size

postgresql 10.14@ubuntu18.04

我有主数据库和复制数据库。 问题是包含复制的目录的大小太大。另一方面,大约 7TB 包含主要目录是 1.5TB.But 这些目录内部的 du 调查结果看起来是一样的。只是目录大小不同,我找不到原因。

du的结果如下。

对于主数据库

du -sh database
1.5T    database

对于主内部数据库

du -sh *
4.0K    PG_VERSION
1.5T    base
456K    global
4.0K    pg_commit_ts
4.0K    pg_dynshmem
16K pg_logical
28K pg_multixact
12K pg_notify
12K pg_replslot
4.0K    pg_serial
4.0K    pg_snapshots
4.0K    pg_stat
4.0K    pg_stat_tmp
12K pg_subtrans
4.0K    pg_tblspc
4.0K    pg_twophase
273M    pg_wal
80K pg_xact
4.0K    postgresql.auto.conf
4.0K    postmaster.opts
4.0K    postmaster.pid

用于复制数据库

du -sh database
7.2T    database

用于复制

du -sh *
4.0K    PG_VERSION
1.5T    base
456K    global
4.0K    pg_commit_ts
4.0K    pg_dynshmem
16K pg_logical
28K pg_multixact
12K pg_notify
12K pg_replslot
4.0K    pg_serial
4.0K    pg_snapshots
4.0K    pg_stat
4.0K    pg_stat_tmp
12K pg_subtrans
4.0K    pg_tblspc
4.0K    pg_twophase
5.8T    pg_wal
80K pg_xact
4.0K    postgresql.auto.conf
4.0K    postmaster.opts
4.0K    postmaster.pid
4.0K    recovery.conf

请问有什么方法可以查出是什么原因吗? 如何减少复制的数据大小? 谢谢!

5.8T pg_wal

我想你已经找到原因了。

当您设置副本时,您可能复制了 pg_replslot 目录,这是您不应该做的。所以现在副本正在等待它自己的级联副本连接到它读取它正在保存的 WAL,但是没有副本可以这样做。删除副本上的该目录并重新启动副本。

或者,您可能将 archive_mode 设置为始终,但您的 archive_command 在副本上不起作用。

我在下面删除pg_wal。

  1. 连接到复制
  2. 使用 pg_drop_replication_slot
  3. 删除复制槽

之后,pg_wal的尺寸逐渐缩小。