Engineyard 空间上的 Postgres 为 100%,pg_xlog 充满了文件

AKW*_*KWF 4 postgresql disk-space

我有一个快速增长的数据库。非常迅速。我的/db目录现在是 100%,并且pg_xlog.

我的背景是 Oracle 和 MySQL。我不知道这个数据库发生了什么。我知道我需要尽快聘请 Postgres DBA。

在短期内我可以做些什么来解决我的问题?我注意到删除数据并不能缓解我的空间问题。

pg_settings 的输出是:

archive_command             /bin/true                       configuration file
archive_mode                on                              configuration file
archive_timeout             1min                            configuration file
checkpoint_segments         100                             configuration file
checkpoint_timeout          5min                            configuration file
client_encoding             UTF8                            session
DateStyle                   ISO, MDY                        configuration file
default_statistics_target   100                             configuration file
default_text_search_config  pg_catalog.english              configuration file
effective_cache_size        1358MB                          configuration file
hot_standby                 on                              configuration file
hot_standby_feedback        on                              configuration file
lc_messages                 C                               configuration file
lc_monetary                 C                               configuration file
lc_numeric                  C                               configuration file
lc_time                     C                               configuration file
listen_addresses            *                               configuration file
log_destination             csvlog                          configuration file
log_line_prefix             %m:                             proc=%p,user=%u,db=%d,host=%r   configuration file
log_min_duration_statement  2s                              configuration file
log_rotation_age            1d                              configuration file
log_rotation_size           100MB                           configuration file
logging_collector           on                              configuration file
maintenance_work_mem        128MB                           configuration file
max_connections             512                             configuration file
max_files_per_process       65535                           configuration file
max_stack_depth             6MB                             configuration file
max_standby_streaming_delay -1                              configuration file
max_wal_senders             5                               configuration file
port                        5432                            configuration file
search_path                 public, "$user", public         session
shared_buffers              424MB                           configuration file
temp_tablespaces                                            configuration file
wal_buffers                 8MB                             configuration file
wal_keep_segments           128                             configuration file
wal_level                   hot_standby                     configuration file
wal_writer_delay            200ms                           configuration file
work_mem                    32MB                            configuration file
Run Code Online (Sandbox Code Playgroud)

bma*_*bma 7

您可以修改您的checkpoint_segments设置postgresql.confSELECT pg_reload_conf();作为postgres(超级)用户(在任何数据库中)发出,以使更改生效。对该设置所做的更改是减少保留在您的pg_xlog目录中的 WAL 段的数量。如果您的数据库中有大量数据流失,您需要将checkpoint_segments设置保持在 32 最小值(请参阅http://www.postgresql.org/docs/current/static/runtime-config-wal.html#GUC-CHECKPOINT -SEGMENTS了解更多详情)。

一些一般提示:

  • 确保您的autovacuum设置非常激进。
  • pg_xlog目录移动到与目录不同的卷$PGDATA。我测量了仅从该更改中获得的 10% - 30% 的性能提升。
  • 设置监控工具以密切关注表/索引/数据库/服务器大小的增加。例如。Nagios,新遗物,