首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于某种原因而增加

由于某种原因而增加
EN

Database Administration用户
提问于 2022-11-10 06:20:51
回答 1查看 55关注 0票数 0

这对我来说是新的。我一直在网上搜索,但没有结果。

我有一个服务器,Server A,它已经运行了几周了,它是一台新服务器。我为这个服务器设置了FDW来访问来自2个数据库( public B1和db B2)的所有表,我们称之为Server B。所有表都“存储”在服务器A上3个不同数据库(db A1、A2、A3)上的特定模式上。There也是 streaming replication此服务器和服务器C

以下是我对外籍家政工人的总结:

  • 设置Server B:在pg_hba上添加条目以接受所有连接,create user fdwuser,重新加载配置文件
  • 设置Server A
  1. db A1、A2、A3上创建这些模式以保存来自Server B的数据:创建模式引用;创建模式概要;将模式配置文件上的使用授予jhon,bon;
  2. 为db A1、A2、A3上的每个数据库创建FDW扩展:如果不存在postgres_fdw,则创建扩展;
  3. 创建外部服务器:创建服务器foreign_profile外部数据包装器postgres_fdw选项(主机'10.10.8.40',端口'5432',dbname 'db_profile');CREATE SERVER foreign\_referensi FOREIGN DATA WRAPPER postgres\_fdw OPTIONS (host '10.10.8.40', port '5432', dbname 'db\_reference');
  4. 创建用户映射:为jhon服务器foreign_reference选项创建用户映射(用户fdwuser,密码‘foreign_profile’);为bon服务器foreign_profile选项创建用户映射(用户fdwuser,密码‘foreign_profile’);为jhon服务器foreign_reference选项创建用户映射(用户fdwuser,密码‘机密’);为bon服务器foreign_profile选项创建用户映射(用户fdwuser,密码‘机密’);为jhon foreign_reference选项创建用户映射(用户fdwuser,密码‘foreign_reference’);创建foreign_profile服务器的用户映射选项(用户参考,密码‘秘密’);
  5. 将外部模式导入数据库A1、A2、A3:将外部模式公共从服务器foreign_profile导入配置文件,将外部模式公共从服务器foreign_referencd导入到引用中;

整个过程是成功的。I可以从服务器A访问服务器B上的外部表。好吧没问题。

现在,我使用SELECT COUNT(*) FROM pg_ls_dir('pg_wal') WHERE pg_ls_dir ~ '^[0-9A-F]{24}';检查WAL文件。It显示了一些2100+文件。这是令人担心的。

以下是服务器A上的设置:

代码语言:javascript
运行
复制
archive_command cd .
archive_mode    on
checkpoint_completion_target    0.9
checkpoint_flush_after  32
checkpoint_timeout  300
wal_level   replica
wal_keep_segments   8
max_wal_senders 10
max_wal_size    8192
hot_standby on

然后我做一些检查:

  1. select * from pg_catalog.pg_stat_activity有250个条目,以backend_type = parallel workerclient backend为主
  2. select * from pg_catalog.pg_stat_archiver Failed_count =0,Archived_count = 71;
  3. 经过几分钟之后,我再次运行select * from pg_catalog.pg_stat_archiver。它现在写着: Failed_count = 0;Archived_count = 3;-由于某些原因,它似乎被重置了
  4. 检查复制:select * from pg_catalog.pg_stat_replication。结果:state = streaming sync_state = async

我想这台服务器似乎很忙。

问题:

  1. 为什么WALs持续增长?这是正常的吗?如果没有,我应该减少吗?
  2. 为什么archived_count要重置?
  3. 这个命令是做什么的:archive_command cd .
EN

回答 1

Database Administration用户

回答已采纳

发布于 2022-11-10 15:29:39

导入外部模式需要生成WAL,因为它需要将这些表的描述输入系统目录。但是它不应该生成大量的WAL,除非这些外部模式有大量的表(即重要的表和列的数量,而不是表中的行数)。因为只记录表的描述,而不记录内容)。

所以最有可能的是,FDW与此无关。它是生成WAL的其他东西,也是导致WAL被保留的另一些东西(可能是复制槽)。

您可以在保留的WAL上运行pg_waldump,试图找出造成这种情况的原因。这是不容易理解的,所以最好先考虑一下你的系统正在做什么,而不是FDW先想出理论。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/319437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档