Для начала надо потушить сервис дабы ничего не сломалось в процессе.
service postgresql stop
Дальше логинимся под пользователем postgres и выполняем следующие команды
pg_controldata /var/lib/pgsql/data
так как у меня данные базы данных постгреса находятся в этой папке
pg_control version number: 812
Catalog version number: 200510211
Database system identifier: 5089267790014707287
Database cluster state: in production
pg_control last modified: Fri 05 Feb 2010 10:02:41 AM EET
Current log file ID: 15
Next log file segment: 183
Latest checkpoint location: F/B647F62C
Prior checkpoint location: F/B62A62B0
Latest checkpoint's REDO location: F/B647F62C
Latest checkpoint's UNDO location: 0/0
Latest checkpoint's TimeLineID: 1
Latest checkpoint's NextXID: 111185702
Latest checkpoint's NextOID: 125184
Latest checkpoint's NextMultiXactId: 1
Latest checkpoint's NextMultiOffset: 0
Time of latest checkpoint: Fri 05 Feb 2010 10:02:41 AM EET
Maximum data alignment: 4
Database block size: 8192
Blocks per segment of large relation: 131072
Bytes per WAL segment: 16777216
Maximum length of identifiers: 64
Maximum columns in an index: 32
Date/time type storage: floating-point numbers
Maximum length of locale name: 128
LC_COLLATE: en_US.UTF-8
LC_CTYPE: en_US.UTF-8
Нас собственно интересуют тут две строчки
Latest checkpoint's NextXID: 111185702
Latest checkpoint's NextOID: 125184
Дальше запускаем собственно комманду для очистки логов транзакций
pg_resetxlog -o 125184 -x 111185702 -f /var/db/pgsql/
Она успешно выполнается
и выхотите из под постгреса и занова запускаете сервис
service postgreslq start
В моем случае размер папки постгреса уменьшился на 600MB примерно.