เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฌเฉเจเจ
เฉฑเจช เจจเจนเฉเจ เจนเฉเฅค เจเจพเจ เจจเจนเฉเจ? เจเจฒเจคเฉ เจจเจพเจฒ เจฎเจฟเจเจพเจเจฃ เจตเจพเจฒเฉ เจธเจผเจพเจฐเจเจเฉฑเจเจพเจ เจคเฉเจ เจฎเฉเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจ
เจธเฉเจ เจฎเฉเจฒเจคเจตเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฟเจตเฉเจ เจเฉเจคเฉ เจนเฉเฅค
เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจกเฉเจเจพเจฌเฉเจธ เจฆเจพ เจฌเฉเจเจ
เฉฑเจช เจฒเฉเจฃ เจฆเจพ เจธเจพเจงเจจ เจจเจนเฉเจ เจนเฉ (gitlab-ce
เจเฉฑเจ เจฎเฉเจฒเจคเจตเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฆเฉ เจจเจพเจฒ, เจ เจธเฉเจ เจธเจฟเจฐเจซเจผ 1,5 เจเฉฐเจเจฟเจเจ เจตเจฟเฉฑเจ เจกเจพเจเจพ เจฎเฉเฉ เจชเฉเจฐเจพเจชเจค เจเฉเจคเจพเฅค เจฆเฉเจเฉ เจเจน เจเจฟเจตเฉเจ เจนเฉเจเจเฅค
PostgreSQL เจจเจพเจฒ เจธเจฎเฉเจ เจฆเฉ เจฐเจฟเจเจตเจฐเฉ เจตเจฟเฉฑเจ เจชเฉเจเจเฉฐเจ
PostgreSQL เจตเจฟเฉฑเจ เจเฉฑเจ เจฌเจฟเจฒเจ-เจเจจ เจซเฉฐเจเจธเจผเจจ เจนเฉ เจเฉ เจเฉฑเจ เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ เจธเจฎเฉเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจพเจธ เจฌเจฟเฉฐเจฆเฉ เจคเฉฑเจ เจฌเจนเจพเจฒ เจเจฐเจฆเจพ เจนเฉเฅค เจเจธ เจจเฉเฉฐ เจเจฟเจนเจพ เจเจฟเจ เจนเฉ
เจเฉเจฒเจก เจฌเฉเจเจ
เฉฑเจช เจฒเจ เจเจธ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฒเจ, เจ
เจธเฉเจ เจจเจฟเจฏเจฎเจฟเจค เจคเฉเจฐ 'เจคเฉ เจเฉฑเจ เจฌเฉเจจเจฟเจเจฆเฉ เจกเจพเจเจพเจฌเฉเจธ เจฌเฉเจเจ
เฉฑเจช เจฌเจฃเจพเจเจเจฆเฉ เจนเจพเจ เจ
เจคเฉ เจเจธเจจเฉเฉฐ เจเฉฑเจ เจชเฉเจฐเจพเจฒเฉเจ เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเจฐเจฆเฉ เจนเจพเจ (GitLab เจชเฉเจฐเจพเจฒเฉเจเจพเจ เจตเจฟเฉฑเจ เจฐเจนเจฟเฉฐเจฆเฉ เจนเจจ
เจฎเฉเจฒเจคเจตเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจเฉ เจนเฉ?
เจเจฒเจธเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจเฉฑเจ เจฆเฉเจฐเฉ เจจเจพเจฒ WAL เจคเฉเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจนเฉเฅค เจฏเจพเจจเฉ เจเฉฑเจ เจเฉฐเจเฉ เจตเจฟเฉฑเจ เจฒเฉเจฃ-เจฆเฉเจฃ เจนเฉเจเจ X
, เจชเจฐ เจเจน เจฆเฉเจฐเฉ เจจเจพเจฒ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจตเจฟเฉฑเจ เจฆเจฟเจเจพเจ เจฆเฉเจตเฉเจเจพ d
เจเฉฑเจ เจเฉฐเจเฉ เจตเจฟเฉฑเจ X + d
.
PostgreSQL เจเฉเจฒ เจเฉฑเจ เจญเฉเจคเจฟเจ เจกเฉเจเจพเจฌเฉเจธ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฆเฉ 2 เจคเจฐเฉเจเฉ เจนเจจ: เจฌเฉเจเจ
เจช เจฐเจฟเจเจตเจฐเฉ เจ
เจคเฉ เจธเจเฉเจฐเฉเจฎเจฟเฉฐเจ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉเฅค
เจเฉฑเจ เจเจฐเจเจพเจเจต เจคเฉเจ เจฆเฉเจฐเฉ เจจเจพเจฒ เจฐเจฟเจเจตเจฐเฉ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจธเฉเฉฑเจ เจเจฐเจจเจพ เจนเฉ
recovery.conf
. เจเจฆเจพเจนเจฐเจจ:
standby_mode = 'on'
restore_command = '/usr/bin/envdir /etc/wal-e.d/env /opt/wal-e/bin/wal-e wal-fetch -p 4 "%f" "%p"'
recovery_min_apply_delay = '8h'
recovery_target_timeline = 'latest'
เจเจนเจจเจพเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฆเฉ เจจเจพเจฒ, เจ
เจธเฉเจ เจฌเฉเจเจ
เฉฑเจช เจฐเจฟเจเจตเจฐเฉ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจฎเฉเจฒเจคเจตเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจเฉเจคเจพ เจนเฉเฅค เจเฉฑเจฅเฉ เจเจน เจตเจฐเจคเจฟเจ เจเจฟเจ เจนเฉ restore_command
เจชเฉเจฐเจพเจฒเฉเจ เจคเฉเจ, เจ
เจคเฉ เจคเจฌเจฆเฉเจฒเฉเจเจ เจ
เฉฑเจ เจเฉฐเจเจฟเจเจ เจฌเจพเจ
เจฆ เจฒเจพเจเฉ เจเฉเจคเฉเจเจ เจเจพเจฃเจเฉเจเจ (recovery_min_apply_delay
). เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจเจฐเจเจพเจเจต เจตเจฟเฉฑเจ เจเจพเจเจฎเจฒเจพเจเจจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฒเจ เจฆเฉเจเฉเจเจพ, เจเจฆเจพเจนเจฐเจจ เจฒเจ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจซเฉเจฒเจเจตเจฐ เจฆเฉ เจเจพเจฐเจจ (recovery_target_timeline
).
ะก recovery_min_apply_delay
เจคเฉเจธเฉเจ เจเฉฑเจ เจฆเฉเจฐเฉ เจจเจพเจฒ เจธเจเฉเจฐเฉเจฎเจฟเฉฐเจ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจจเฉเฉฐ เจธเฉเจ เจ
เจช เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจชเจฐ เจเฉฑเจฅเฉ เจเฉเจ เจเจฒเจคเฉเจเจ เจนเจจ เจเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจธเจฒเจพเจ, เจเจฐเจฎ เจธเจเฉเจเจกเจฌเจพเจ เจซเฉเจกเจฌเฉเจ, เจ
เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจนเจจเฅค WAL เจชเฉเจฐเจพเจฒเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจนเจจเจพเจ เจคเฉเจ เจฌเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค
เจชเฉเจฐเจพเจฎเฉเจเจฐ recovery_min_apply_delay
เจธเจฟเจฐเจซเจผ PostgreSQL 9.3 เจตเจฟเฉฑเจ เจชเฉเจฐเจเจ เจนเฉเจเจเฅค เจชเจฟเจเจฒเฉ เจธเฉฐเจธเจเจฐเจฃเจพเจ เจตเจฟเฉฑเจ, เจฎเฉเจฒเจคเจตเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฒเจ เจคเฉเจนเจพเจจเฉเฉฐ เจธเฉเจฎเฉเจฒ เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ pg_xlog_replay_pause(), pg_xlog_replay_resume()
) เจเจพเจ เจฆเฉเจฐเฉ เจฆเฉ เจฎเจฟเจเจฆ เจฒเจ เจชเฉเจฐเจพเจฒเฉเจ เจตเจฟเฉฑเจ WAL เจญเจพเจเจพเจ เจจเฉเฉฐ เจนเฉเจฒเจก เจเจฐเฉเฅค
PostgreSQL เจเจน เจเจฟเจตเฉเจ เจเจฐเจฆเจพ เจนเฉ?
เจเจน เจฆเฉเจเจฃเจพ เจฆเจฟเจฒเจเจธเจช เจนเฉ เจเจฟ PostgreSQL เจเจฒเจธเฉ เจฐเจฟเจเจตเจฐเฉ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจฒเจพเจเฉ เจเจฐเจฆเจพ เจนเฉเฅค เจเจ เจฆเฉเจเฉเจ recoveryApplyDelay(XlogReaderState)
static bool
recoveryApplyDelay(XLogReaderState *record)
{
uint8 xact_info;
TimestampTz xtime;
long secs;
int microsecs;
/* nothing to do if no delay configured */
if (recovery_min_apply_delay <= 0)
return false;
/* no delay is applied on a database not yet consistent */
if (!reachedConsistency)
return false;
/*
* Is it a COMMIT record?
*
* We deliberately choose not to delay aborts since they have no effect on
* MVCC. We already allow replay of records that don't have a timestamp,
* so there is already opportunity for issues caused by early conflicts on
* standbys.
*/
if (XLogRecGetRmid(record) != RM_XACT_ID)
return false;
xact_info = XLogRecGetInfo(record) & XLOG_XACT_OPMASK;
if (xact_info != XLOG_XACT_COMMIT &&
xact_info != XLOG_XACT_COMMIT_PREPARED)
return false;
if (!getRecordTimestamp(record, &xtime))
return false;
recoveryDelayUntilTime =
TimestampTzPlusMilliseconds(xtime, recovery_min_apply_delay);
/*
* Exit without arming the latch if it's already past time to apply this
* record
*/
TimestampDifference(GetCurrentTimestamp(), recoveryDelayUntilTime,
&secs, µsecs);
if (secs <= 0 && microsecs <= 0)
return false;
while (true)
{
// Shortened:
// Use WaitLatch until we reached recoveryDelayUntilTime
// and then
break;
}
return true;
}
เจคเจฒ เจฒเจพเจเจจ เจเจน เจนเฉ เจเจฟ เจฆเฉเจฐเฉ เจเฉเจฐเจพเจเจเฉเจเจธเจผเจจ เจชเฉเจฐเจคเฉเจฌเฉฑเจง เจเจพเจเจฎเจธเจเฉเจเจช เจตเจฟเฉฑเจ เจฆเจฐเจ เจญเฉเจคเจฟเจ เจธเจฎเฉเจ 'เจคเฉ เจ
เจงเจพเจฐเจค เจนเฉ (xtime
). เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจตเฉเจ เจธเจเจฆเฉ เจนเฉ, เจฆเฉเจฐเฉ เจธเจฟเจฐเจซ เจเจฎเจฟเจเจพเจ 'เจคเฉ เจฒเจพเจเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ เจ
เจคเฉ เจนเฉเจฐ เจเจเจเจฐเฉเจเจ เจจเฉเฉฐ เจชเฉเจฐเจญเจพเจตเจค เจจเจนเฉเจ เจเจฐเจฆเฉ - เจธเจพเจฐเฉเจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจธเจฟเฉฑเจงเฉ เจคเฉเจฐ 'เจคเฉ เจฒเจพเจเฉ เจนเฉเฉฐเจฆเฉเจเจ เจนเจจ, เจ
เจคเฉ เจตเจเจจเจฌเฉฑเจงเจคเจพ เจตเจฟเฉฑเจ เจฆเฉเจฐเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจเจธเจฒเจ เจ
เจธเฉเจ เจธเจฟเจฐเจซ เจธเฉฐเจฐเจเจจเจพ เจเฉเจคเฉ เจฆเฉเจฐเฉ เจคเฉเจ เจฌเจพเจ
เจฆ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฆเฉเจเจพเจเจเฉเฅค
เจกเจพเจเจพ เจฐเฉเจธเจเฉเจฐ เจเจฐเจจ เจฒเจ เจฆเฉเจฐเฉ เจตเจพเจฒเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฟเจตเฉเจ เจเจฐเฉเจ
เจฎเฉฐเจจ เจฒเจ เจเจฟ เจธเจพเจกเฉ เจเฉเจฒ เจเฉฑเจ เจกเฉเจเจพเจฌเฉเจธ เจเจฒเฉฑเจธเจเจฐ เจนเฉ เจ
เจคเฉ เจเจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจ เจ
เฉฑเจ เจเฉฐเจเฉ เจฆเฉ เจฆเฉเจฐเฉ เจจเจพเจฒ เจเฉฑเจ เจชเฉเจฐเจคเฉเจฐเฉเจช เจนเฉเฅค เจเจ เจฆเฉเจเฉเจ เจเจฟ เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจกเฉเจเจพ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจฐเจฟเจเจตเจฐ เจเจฐเจจเจพ เจนเฉ
เจเจฆเฉเจ เจธเจพเจจเฉเฉฐ เจธเจฎเฉฑเจธเจฟเจ เจฌเจพเจฐเฉ เจชเจคเจพ เจฒเฉฑเจเจพ, เจ
เจธเฉเจ
SELECT pg_xlog_replay_pause();
เจเฉฑเจ เจตเจฟเจฐเจพเจฎ เจฆเฉ เจจเจพเจฒ, เจธเจพเจจเฉเฉฐ เจเฉเจ เจเจคเจฐเจพ เจจเจนเฉเจ เจธเฉ เจเจฟ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฌเฉเจจเจคเฉ เจจเฉเฉฐ เจฆเฉเจนเจฐเจพเจเจเฉ DELETE
. เจเฉฑเจ เจฒเจพเจญเจฆเจพเจเจ เจเฉเจเจผ เจเฉเจเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจนเจฐ เจเฉเจเจผ เจฆเจพ เจชเจคเจพ เจฒเจเจพเจเจฃ เจฒเจ เจธเจฎเจพเจ เจเจพเจนเฉเจฆเจพ เจนเฉ.
เจฌเจฟเฉฐเจฆเฉ เจเจน เจนเฉ เจเจฟ เจฎเฉเจฒเจคเจตเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจจเฉเฉฐ เจฌเฉเจจเจคเฉ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจฆเฉ เจชเจฒ เจคเฉฑเจ เจชเจนเฉเฉฐเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ DELETE
. เจธเจพเจจเฉเฉฐ เจฒเจเจญเจ เจนเจเจพเจเจฃ เจฆเจพ เจญเฉเจคเจฟเจ เจธเจฎเจพเจ เจชเจคเจพ เจธเฉเฅค เจ
เจธเฉเจ เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเจพ เจนเฉ recovery_min_apply_delay
เจ
เจคเฉ เจเฉเฉเจฟเจ เจเจฟเจ recovery_target_time
ะฒ recovery.conf
. เจเจธ เจคเจฐเฉเจนเจพเจ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฌเจฟเจจเจพเจ เจฆเฉเจฐเฉ เจฆเฉ เจธเจนเฉ เจธเจฎเฉเจ 'เจคเฉ เจชเจนเฉเฉฐเจเจฆเฉ เจนเฉ:
recovery_target_time = '2018-10-12 09:25:00+00'
เจเจพเจเจฎ เจธเจเฉเจเจชเจธ เจฆเฉ เจจเจพเจฒ, เจตเจพเจงเฉ เจจเฉเฉฐ เจเจเจพเจเจฃเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ เจคเจพเจ เจเฉ เจเฉเฉฐเจ เจจเจพ เจเจพเจตเฉเฅค เจเจน เจธเฉฑเจ เจนเฉ เจเจฟ เจเจฟเฉฐเจจเจพ เจเจผเจฟเจเจฆเจพ เจเจฎเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจเจจเจพ เจนเฉ เจเจผเจฟเจเจฆเจพ เจกเจพเจเจพ เจ
เจธเฉเจ เจเฉเจเจเจเจฆเฉ เจนเจพเจเฅค เจฆเฉเจฌเจพเจฐเจพ, เจเฉ เจ
เจธเฉเจ เจฌเฉเจจเจคเฉ เจจเฉเฉฐ เจเฉเฉฐเจเจฆเฉ เจนเจพเจ DELETE
, เจธเจญ เจเฉเจ เจฆเฉเจฌเจพเจฐเจพ เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเจพ เจเจพเจตเฉเจเจพ เจ
เจคเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจธเจผเฉเจฐเฉ เจเจฐเจจเจพ เจชเจเจเจพ (เจเจพเจ PITR เจฒเจ เจเฉเจฒเจก เจฌเฉเจเจ
เฉฑเจช เจตเฉ เจฒเฉเจฃเจพ เจนเฉเจตเฉเจเจพ)เฅค
เจ เจธเฉเจ เจฎเฉเจฒเจคเจตเฉ เจชเฉเจธเจเจเฉเจฐเฉเจธ เจเจฆเจพเจนเจฐเจจ เจจเฉเฉฐ เจฎเฉเฉ-เจเจพเจฒเฉ เจเฉเจคเจพ เจ เจคเฉ WAL เจญเจพเจเจพเจ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจธเจฎเฉเจ เจคเฉฑเจ เจฆเฉเจนเจฐเจพเจเจ เจเจฟเจเฅค เจคเฉเจธเฉเจ เจเจธ เจชเฉเจพเจ 'เจคเฉ เจเจน เจชเฉเฉฑเจ เจเฉ เจชเฉเจฐเจเจคเฉ เจจเฉเฉฐ เจเจฐเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ:
SELECT
-- current location in WAL
pg_last_xlog_replay_location(),
-- current transaction timestamp (state of the replica)
pg_last_xact_replay_timestamp(),
-- current physical time
now(),
-- the amount of time still to be applied until recovery_target_time has been reached
'2018-10-12 09:25:00+00'::timestamptz - pg_last_xact_replay_timestamp() as delay;
เจเฉเจเจฐ เจเจพเจเจฎเจธเจเฉเจเจช เจนเฉเจฃ เจฌเจฆเจฒเจฆเจพ เจจเจนเฉเจ เจนเฉ, เจคเจพเจ เจฐเจฟเจเจตเจฐเฉ เจชเฉเจฐเฉ เจนเฉ เจเจ เจนเฉเฅค เจเจพเจฐเจตเจพเจ เจจเฉเฉฐ เจ
เจจเฉเจเฉเจฒเจฟเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ recovery_target_action
เจเจธ เจฎเฉฐเจฆเจญเจพเจเฉ เจฌเฉเจจเจคเฉ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจกเฉเจเจพเจฌเฉเจธ เจเจชเจฃเฉ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจตเจพเจชเจธ เจ เจเจฟเจเฅค เจนเฉเจฃ เจคเฉเจธเฉเจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจกเจพเจเจพ เจจเจฟเจฐเจฏเจพเจค เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจ เจธเฉเจ เจฎเจฟเจเจพเจ เจเจ เจฒเฉเจฌเจฒ เจกเฉเจเจพ เจ เจคเฉ เจฎเฉเฉฑเจฆเจฟเจเจ เจฆเฉ เจธเจพเจฐเฉ เจฒเจฟเฉฐเจเจพเจ เจจเฉเฉฐ เจจเจฟเจฐเจฏเจพเจค เจเฉเจคเจพ เจ เจคเฉ เจฌเฉเจจเจคเฉเจเจ เจจเฉเฉฐ เจฎเจฟเจฒเจพเจเจ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจคเจชเจพเจฆเจจ เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจญเฉเจ เจฆเจฟเฉฑเจคเจพเฅค เจเฉเจเจฐ เจจเฉเจเจธเจพเจจ เจตเฉฑเจกเฉ เจชเฉเจฎเจพเจจเฉ 'เจคเฉ เจนเจจ, เจคเจพเจ เจคเฉเจธเฉเจ เจธเจฟเจฐเจซเจผ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจจเฉเฉฐ เจเจคเจธเจผเจพเจนเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจฎเฉเฉฑเจ เจตเจเฉเจ เจตเจฐเจค เจธเจเจฆเฉ เจนเฉเฅค เจชเจฐ เจซเจฟเจฐ เจเจธ เจฌเจฟเฉฐเจฆเฉ เจคเฉเจ เจฌเจพเจ เจฆ เจธเจพเจฐเฉเจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจเจคเจฎ เจนเฉ เจเจพเจฃเจเฉเจเจ เจเจฟเจธ เจคเฉฑเจ เจ เจธเฉเจ เจฎเฉเฉ เจชเฉเจฐเจพเจชเจค เจเฉเจคเจพ เจนเฉเฅค
เจเจพเจเจฎเจธเจเฉเจเจชเจพเจ เจฆเฉ เจฌเจเจพเจ, เจเฉเจฐเจพเจเจเฉเจเจธเจผเจจ เจเจเจกเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉเฅค เจเจนเจจเจพเจ IDs เจจเฉเฉฐ เจฐเจฟเจเจพเจฐเจก เจเจฐเจจเจพ เจฒเจพเจญเจฆเจพเจเจ เจนเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, DDL เจธเจเฉเจเจฎเฉเจเจเจพเจ (เจเจฟเจตเฉเจ เจเจฟ DROP TABLE
), เจตเจฐเจค เจเฉ log_statements = 'ddl'
. เจเฉเจเจฐ เจธเจพเจกเฉ เจเฉเจฒ เจเฉเจฐเจพเจเจเฉเจเจธเจผเจจ เจเจเจกเฉ เจนเฉเฉฐเจฆเฉ, เจคเจพเจ เจ
เจธเฉเจ เจฒเฉ เจฒเฉเจเจฆเฉ recovery_target_xid
เจ
เจคเฉ เจฌเฉเจจเจคเฉ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจฒเฉเจฃ-เจฆเฉเจฃ เจฒเจ เจธเจญ เจเฉเจ เจนเฉเจ เจพเจ เจเจฒเจพ เจเจฟเจ DELETE
.
เจเฉฐเจฎ 'เจคเฉ เจตเจพเจชเจธ เจเจพเจฃเจพ เจฌเจนเฉเจค เจธเฉเจเจพ เจนเฉ: เจเจธ เจคเฉเจ เจธเจพเจฐเฉ เจฌเจฆเจฒเจพเจ
เจนเจเจพเจ recovery.conf
เจ
เจคเฉ เจชเฉเจธเจเจเฉเจฐเฉเจธ เจจเฉเฉฐ เจฎเฉเฉ เจเจพเจฒเฉ เจเจฐเฉเฅค เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจตเจฟเฉฑเจ เจเจฒเจฆเฉ เจนเฉ เจ
เฉฑเจ เจเฉฐเจเฉ เจฆเฉ เจฆเฉเจฐเฉ เจนเฉเจตเฉเจเฉ, เจ
เจคเฉ เจ
เจธเฉเจ เจญเจตเจฟเฉฑเจ เจฆเฉเจเจ เจฎเฉเจธเฉเจฌเจคเจพเจ เจฒเจ เจคเจฟเจเจฐ เจนเจพเจเฅค
เจฐเจฟเจเจตเจฐเฉ เจฒเจพเจญ
เจเฉเจฒเจก เจฌเฉเจเจ เจช เจฆเฉ เจฌเจเจพเจ เจฎเฉเจฒเจคเจตเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฆเฉ เจจเจพเจฒ, เจคเฉเจนเจพเจจเฉเฉฐ เจชเฉเจฐเจพเจฒเฉเจ เจคเฉเจ เจชเฉเจฐเฉ เจเจฟเฉฑเจคเจฐ เจจเฉเฉฐ เจฌเจนเจพเจฒ เจเจฐเจจ เจฒเจ เจเฉฐเจเฉ เจฌเจฟเจคเจพเจเจฃ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจจเจนเฉเจ เจนเฉ. เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจชเฉเจฐเจพ เจฎเฉเจฒ 2 เจเฉเจฌเฉ เจฌเฉเจเจ เฉฑเจช เจฒเฉเจฃ เจตเจฟเฉฑเจ เจธเจพเจจเฉเฉฐ เจชเฉฐเจ เจเฉฐเจเฉ เจฒเฉฑเจเจฆเฉ เจนเจจเฅค เจ เจคเฉ เจซเจฟเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจ เจเฉ เจตเฉ เจฒเฉเฉเฉเจเจฆเฉ เจธเจฅเจฟเจคเฉ (เจธเจญ เจคเฉเจ เจฎเจพเฉเฉ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ) เจตเจฟเฉฑเจ เจฎเฉเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจชเฉเจฐเจพ เจฐเฉเจเจผเจพเจจเจพ WAL เจฒเจพเจเฉ เจเจฐเจจเจพ เจชเจตเฉเจเจพเฅค
เจเฉฑเจ เจธเจฅเจเจค เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฆเฉ เจคเจฐเฉเจเจฟเจเจ เจจเจพเจฒ เจเฉเจฒเจก เจฌเฉเจเจ เฉฑเจช เจจเจพเจฒเฉเจ เจฌเจฟเจนเจคเจฐ เจนเฉ:
- เจเจฐเจเจพเจเจต เจคเฉเจ เจชเฉเจฐเฉ เจฎเฉเจฒ เจฌเฉเจเจ เฉฑเจช เจจเฉเฉฐ เจนเจเจพเจเจฃ เจฆเฉ เจเฉเจ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉเฅค
- WAL เจเฉฐเจกเจพเจ เจฆเฉ เจเฉฑเจ เจจเจฟเจธเจผเจเจฟเจค เจ เฉฑเจ -เจเฉฐเจเฉ เจฆเฉ เจตเจฟเฉฐเจกเฉ เจนเฉ เจเจฟเจธเจจเฉเฉฐ เจฆเฉเจนเจฐเจพเจเจ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจ เจธเฉเจ เจเจน เจฆเฉเจเจฃ เจฒเจ เจฒเจเจพเจคเจพเจฐ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟ เจเฉ WAL เจคเฉเจ PITR เจฌเจฃเจพเจเจฃเจพ เจธเฉฐเจญเจต เจนเฉ, เจ เจคเฉ เจ เจธเฉเจ เจฎเฉเจฒเจคเจตเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฆเฉ เจชเจเฉเจพเจ เจฆเฉ เจจเจฟเจเจฐเจพเจจเฉ เจเจฐเจเฉ WAL เจเจฐเจเจพเจเจต เจตเจฟเฉฑเจ เจญเฉเจฐเจฟเจธเจผเจเจพเจเจพเจฐ เจเจพเจ เจนเฉเจฐ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจจเฉเฉฐ เจคเฉเจฐเฉฐเจค เจจเฉเจเจฟเจธ เจเจฐเจพเจเจเฉเฅค
เจเจธ เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ, เจธเจพเจจเฉเฉฐ เจฐเฉเจธเจเฉเจฐ เจเจฐเจจ เจตเจฟเฉฑเจ 50 เจฎเจฟเฉฐเจ เจฒเฉฑเจเฉ, เจฎเจคเจฒเจฌ เจธเจชเฉเจก 110 GB WAL เจกเจพเจเจพ เจชเฉเจฐเจคเฉ เจเฉฐเจเจพ เจธเฉ (เจชเฉเจฐเจพเจฒเฉเจ เจ
เจเฉ เจตเฉ เจเจพเจฒเฉ เจธเฉ
เจจเจคเฉเจเฉ: เจเจฟเฉฑเจฅเฉ เจเฉฑเจ เจฎเฉเจฒเจคเจตเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฒเจพเจญเจฆเจพเจเจ เจนเฉ (เจ เจคเฉ เจเจฟเฉฑเจฅเฉ เจเจน เจจเจนเฉเจ เจนเฉ)
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจฒเจคเฉ เจจเจพเจฒ เจกเจพเจเจพ เจเฉเจ เจฌเฉเจ เจฆเฉ เจนเฉ เจ เจคเฉ เจเฉเจเจซเจฟเจเจฐ เจเฉเจคเฉ เจฆเฉเจฐเฉ เจฆเฉ เจ เฉฐเจฆเจฐ เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจฆเฉเจเจฟเจ เจนเฉ เจคเจพเจ เจฆเฉเจฐเฉ เจตเจพเจฒเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจจเฉเฉฐ เจชเจนเจฟเจฒเฉ เจธเจนเจพเจเจคเจพ เจตเจเฉเจ เจตเจฐเจคเฉเฅค
เจชเจฐ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจฐเฉฑเจเฉ: เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจเฉฑเจ เจฌเฉเจเจ เฉฑเจช เจจเจนเฉเจ เจนเฉเฅค
เจฌเฉเจเจ
เฉฑเจช เจ
เจคเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฆเฉ เจตเฉฑเจ-เจตเฉฑเจ เจเจฆเฉเจธเจผ เจนเจจเฅค เจเฉ เจคเฉเจธเฉเจ เจเจฒเจคเฉ เจจเจพเจฒ เจฌเจฃเจพเจเจ เจนเฉ เจคเจพเจ เจเฉฑเจ เจ เฉฐเจกเจพ เจฌเฉเจเจ
เฉฑเจช เจเฉฐเจฎ เจเจตเฉเจเจพ DELETE
เจ DROP TABLE
. เจ
เจธเฉเจ เจเฉเจฒเจก เจธเจเฉเจฐเฉเจ เจคเฉเจ เจฌเฉเจเจ
เฉฑเจช เจฌเจฃเจพเจเจเจฆเฉ เจนเจพเจ เจ
เจคเฉ เจเฉเจฌเจฒ เจเจพเจ เจชเฉเจฐเฉ เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจชเจฟเจเจฒเฉ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ เจฌเจนเจพเจฒ เจเจฐเจฆเฉ เจนเจพเจเฅค เจชเจฐ เจเจธเฉ เจตเฉเจฒเฉ เจฌเฉเจจเจคเฉ DROP TABLE
เจตเจฐเจเจฟเฉฐเจ เจเจฒเฉฑเจธเจเจฐ 'เจคเฉ เจธเจพเจฐเฉเจเจ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉเจเจ เจตเจฟเฉฑเจ เจฒเจเจญเจ เจคเฉเจฐเฉฐเจค เจฆเฉเจฌเจพเจฐเจพ เจคเจฟเจเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเจธเจฒเจ เจเจฎ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจเฉฑเจฅเฉ เจฎเจฆเจฆ เจจเจนเฉเจ เจเจฐเฉเจเฉเฅค เจเจฆเฉเจ เจตเจฟเจ
เจเจคเฉเจเจค เจธเจฐเจตเจฐ เจเจฟเจฐเจพเจ 'เจคเฉ เจฆเจฟเฉฑเจคเฉ เจเจพเจเจฆเฉ เจนเจจ เจ
เจคเฉ เจฒเฉเจก เจจเฉเฉฐ เจตเฉฐเจกเจฆเจพ เจนเฉ เจคเจพเจ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจเฉเจฆ เจนเฉ เจกเฉเจเจพเจฌเฉเจธ เจจเฉเฉฐ เจเจชเจฒเจฌเจง เจฐเฉฑเจเจฆเฉ เจนเฉเฅค
เจธเจฅเจเจค เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจคเฉ เจฆเฉ เจจเจพเจฒ เจตเฉ, เจธเจพเจจเฉเฉฐ เจเจฆเฉ-เจเจฆเจพเจเจ เจเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจฅเจพเจ 'เจคเฉ เจเฉฑเจ เจ เฉฐเจกเฉ เจฌเฉเจเจ เฉฑเจช เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ เจเฉเจเจฐ เจเฉเจ เจกเจพเจเจพ เจธเฉเจเจเจฐ เจ เจธเจซเจฒเจคเจพ, เจฒเฉเจเจฟเจ เจนเฉเจเจ เจจเฉเจเจธเจพเจจ, เจเจพเจ เจนเฉเจฐ เจเจเจจเจพเจตเจพเจ เจตเจพเจชเจฐเจฆเฉเจเจ เจนเจจ เจเฉ เจคเฉเจฐเฉฐเจค เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจเจเจเจฆเฉเจเจ เจนเจจเฅค เจเฉฑเจฅเฉ เจเจเฉฑเจฒเฉ เจจเจเจฒ เจฆเจพ เจเฉเจ เจซเจพเจเจฆเจพ เจจเจนเฉเจ เจนเฉเฅค
เจเจฟเฉฑเจชเจฃเฉ. เจคเฉ
เจธเจฐเฉเจค: www.habr.com