Доброго времени суток!
На данный момент вожусь с потоковой репликацией и по ходу дела возникает куча непоняток.
Поставил цель сделать связку ведущий-ведомый сервер. Но не просто с потоковой репликацией, а с некоторой задержкой. То есть, на слэйве данные должны появляться, допустим, через 30 мин после записи на мастере. Связано это с тем, что если юзер накосячит в основной базе можно было накатить бэкап на состояние "было 30 мин назад", так как изменения в БД происходят достаточно часто, а накатывать суточный бэкап будет очень болезненно, так как потеряется куча данных.
Исходя из поставленной задачи начал ковырять в сторону WRITE AHEAD LOG. Наковырялся до такой степени, что в конец запутался.
Что имеется на данный момент. Привожу отдельные строки конфига postgresql.conf
1. На мастере:
wal_level = hot_standby
#checkpoint_segments = 16
checkpoint_timeout = 30min
archive_mode = on
archive_command = 'copy %p "path_to_wal\\%f"'
archive_timeout = 3600
max_wal_senders = 2
wal_keep_segments = 32
2. На слэйве:
postgresql.conf
wal_level = hot_standby
checkpoint_timeout = 30min
max_wal_senders = 2
hot_standby = on
recovery.conf
standby_mode = on
primary_conninfo = 'host port user'
trigger_file = '%\\PostgreSQL\\9.1\\failover'
restore_command = 'copy "\\X: %f" %p'
archive_cleanup_command = '"%\\PostgreSQL\\9.1\\bin\\pg_archivecleanup" %r'
Остальные строки в разделе WAL и Replication закомментированы.
Возможно ли сделать задержку? Если да, то как?