เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชฌเซเชเช
เชช เชจเชฅเซ. เชเซ เชจเชนเซเช? เชเชเชธเซเชฎเชฟเช เชฐเซเชคเซ เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเซเชฒเชพ เชถเซเชฐเซเชเชเชเซเชธเชฎเชพเชเชฅเซ เชชเซเชจเชเชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เช
เชฎเซ เชเซเชตเซ เชฐเซเชคเซ เชตเชฟเชฒเชเชฌเชฟเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟเชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเซ เชคเซ เช
เชนเซเช เชเซ.
เชชเซเชฐเชคเชฟเชเซเชคเชฟ เช เชกเซเชเชพเชฌเซเชธเซเชธเชจเซ เชฌเซเชเช
เชช เชฒเซเชตเชพเชจเซเช เชธเชพเชงเชจ เชจเชฅเซ (gitlab-ce
เชตเชฟเชฒเชเชฌเชฟเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชธเชพเชฅเซ, เช เชฎเซ เชฎเชพเชคเซเชฐ 1,5 เชเชฒเชพเชเชฎเชพเช เชกเซเชเชพ เชชเซเชจเชเชชเซเชฐเชพเชชเซเชค เชเชฐเซเชฏเซ. เชคเซ เชเซเชตเซ เชฐเซเชคเซ เชฅเชฏเซเช เชคเซ เชเซเช.
PostgreSQL เชธเชพเชฅเซ เชชเซเชเชจเซเช เชเชจ เชเชพเชเชฎ เชฐเชฟเชเชตเชฐเซ
PostgreSQL เชฎเชพเช เชฌเชฟเชฒเซเช-เชเชจ เชซเชเชเซเชถเชจ เชเซ เชเซ เชกเซเชเชพเชฌเซเชเชจเซ เชธเซเชฅเชฟเชคเชฟเชจเซ เชเซเชเซเชเชธ เชธเชฎเชฏเซ เชชเซเชจเชเชธเซเชฅเชพเชชเชฟเชค เชเชฐเซ เชเซ. เชคเซ เชเชนเซเชตเชพเชฏ เชเซ
เชเซเชฒเซเชก เชฌเซเชเช
เชช เชฎเชพเชเซ เช เชธเซเชตเชฟเชงเชพเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ, เช
เชฎเซ เชจเชฟเชฏเชฎเชฟเชคเชชเชฃเซ เชฎเซเชณเชญเซเชค เชกเซเชเชพเชฌเซเช เชฌเซเชเช
เชช เชฌเชจเชพเชตเซเช เชเซเช เช
เชจเซ เชคเซเชจเซ เชเชฐเซเชเชพเชเชตเชฎเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซเช เชเซเช (GitLab เชเชฐเซเชเชพเชเชตเซเชธ
เชตเชฟเชฒเชเชฌเชฟเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชถเซเช เชเซ?
เชธเซเชธเซเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟ เช เชตเชฟเชฒเชเชฌ เชธเชพเชฅเซ WAL เชฎเชพเชเชฅเซ เชซเซเชฐเชซเชพเชฐเซเชจเซ เช
เชฐเชเซ เชเซ. เชเชเชฒเซ เชเซ, เชเช เชเชฒเชพเชเชฎเชพเช เชตเซเชฏเชตเชนเชพเชฐ เชฅเชฏเซ X
, เชชเชฐเชเชคเซ เชคเซ เชตเชฟเชฒเชเชฌ เชธเชพเชฅเซ เชชเซเชฐเชคเชฟเชเซเชคเชฟเชฎเชพเช เชฆเซเชเชพเชถเซ d
เชเช เชเชฒเชพเชเชฎเชพเช X + d
.
เชชเซเชธเซเชเชเซเชฐเซเชเชธเชเซเชฏเซเชเชฒ เชชเชพเชธเซ เชญเซเชคเชฟเช เชกเซเชเชพเชฌเซเช เชชเซเชฐเชคเชฟเชเซเชคเชฟเชจเซ เชธเซเช เชเชฐเชตเชพเชจเซ 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 เช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเซ เชเซ?
เชชเซเชธเซเชเชเซเชฐเซเชเชธเชเซเชฏเซเชเชฒ เชเชณเชธเซ เชชเซเชจเชเชชเซเชฐเชพเชชเซเชคเชฟเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชฒเชพเชเซ เชเชฐเซ เชเซ เชคเซ เชเซเชตเชพเชจเซเช เชฐเชธเชชเซเชฐเชฆ เชเซ. เชเชพเชฒเซ เชเซเชเช 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
เชคเซ เชเชฎเชจเชธเซเชฌ เชตเชฟเชจเชเชคเซ เชชเชนเซเชฒเชพเช เชกเซเชเชพเชฌเซเช เชคเซเชจเซ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช เชชเชพเชเซ เชซเชฐเซเชฏเซ. เชนเชตเซ เชคเชฎเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชกเซเชเชพ เชจเชฟเชเชพเชธ เชเชฐเซ เชถเชเซ เชเซ. เช เชฎเซ เชเชพเชขเซ เชจเชพเชเซเชฒ เชฒเซเชฌเชฒ เชกเซเชเชพ เช เชจเซ เชธเชฎเชธเซเชฏเชพเช เช เชจเซ เชฎเชฐเซเช เชตเชฟเชจเชเชคเซเชเชจเซ เชฌเชงเซ เชฒเชฟเชเชเซเชธ เชจเชฟเชเชพเชธ เชเชฐเซ เช เชจเซ เชคเซเชฎเชจเซ เชเชคเซเชชเชพเชฆเชจ เชกเซเชเชพเชฌเซเชเชฎเชพเช เชเชธเซเชกเซเชฏเชพ. เชเซ เชจเซเชเชธเชพเชจ เชฎเซเชเชพ เชชเชพเชฏเซ เชนเซเชฏ, เชคเซ เชคเชฎเซ เชซเชเซเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟเชจเซ เชชเซเชฐเซเชคเซเชธเชพเชนเชจ เชเชชเซ เชถเชเซ เชเซ เช เชจเซ เชคเซเชจเซ เชฎเซเชเซเชฏ เชคเชฐเซเชเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ. เชชเชฐเชเชคเซ เชคเซ เชชเชเซ เชเซ เชฌเชฟเชเชฆเซ เชธเซเชงเซ เชเชชเชฃเซ เชชเซเชจเชเชชเซเชฐเชพเชชเซเชค เชฅเชฏเชพ เชเซเช เชคเซ เชชเชเซเชจเชพ เชฌเชงเชพ เชซเซเชฐเชซเชพเชฐเซ เชเซเชตเชพเช เชเชถเซ.
เชเชพเชเชฎเชธเซเชเซเชฎเซเชชเชจเซ เชฌเชฆเชฒเซ, เชเซเชฐเชพเชจเซเชเซเชเซเชถเชจ ID เชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ เชตเชงเซ เชธเชพเชฐเซเช เชเซ. เช ID เชจเซ เชฐเซเชเซเชฐเซเชก เชเชฐเชตเซเช เชเชชเชฏเซเชเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, DDL เชธเซเชเซเชเชฎเซเชจเซเชเซเชธ เชฎเชพเชเซ (เชเซเชฎ เชเซ DROP TABLE
), เชเชชเชฏเซเช เชเชฐเซเชจเซ log_statements = 'ddl'
. เชเซ เช
เชฎเชพเชฐเซ เชชเชพเชธเซ เชเซเชฐเชพเชจเซเชเซเชเซเชถเชจ เชเชเชกเซ เชนเชถเซ เชคเซ เช
เชฎเซ เชฒเชเชถเซเช recovery_target_xid
เช
เชจเซ เชตเชฟเชจเชเชคเชฟ เชชเชนเซเชฒเชพ เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช เชฌเชงเซเช เช เชเชฒเชพเชตเซเชฏเซเช DELETE
.
เชเชพเชฎ เชชเชฐ เชชเชพเชเชพ เชเชตเชตเซเช เชเซเชฌ เช เชธเชฐเชณ เชเซ: เชฎเชพเชเชฅเซ เชฌเชงเชพ เชซเซเชฐเชซเชพเชฐเซ เชฆเซเชฐ เชเชฐเซ recovery.conf
เช
เชจเซ Postgres เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชเชฐเซ. เชชเซเชฐเชคเชฟเชเซเชคเชฟเชฎเชพเช เชเซเชเช เชธเชฎเชฏเชฎเชพเช เชซเชฐเซเชฅเซ เชเช เชเชฒเชพเชเชจเซ เชตเชฟเชฒเชเชฌ เชฅเชถเซ, เช
เชจเซ เช
เชฎเซ เชญเชตเชฟเชทเซเชฏเชจเซ เชฎเซเชถเซเชเซเชฒเซเช เชฎเชพเชเซ เชคเซเชฏเชพเชฐ เชเซเช.
เชชเซเชจเชเชชเซเชฐเชพเชชเซเชคเชฟ เชฒเชพเชญเซ
เชเซเชฒเซเชก เชฌเซเชเช เชชเชจเซ เชฌเชฆเชฒเซ เชตเชฟเชฒเชเชฌเชฟเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชธเชพเชฅเซ, เชคเชฎเชพเชฐเซ เชเชฐเซเชเชพเชเชตเชฎเชพเชเชฅเซ เชธเชเชชเซเชฐเซเชฃ เชเชฌเซเชจเซ เชชเซเชจเชเชธเซเชฅเชพเชชเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชฒเชพเชเซ เชชเชธเชพเชฐ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชธเชเชชเซเชฐเซเชฃ เชฎเซเชณเชญเซเชค 2 TB เชฌเซเชเช เชช เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ เช เชฎเชจเซ เชชเชพเชเช เชเชฒเชพเช เชฒเชพเชเซ เชเซ. เช เชจเซ เชชเชเซ เชคเชฎเชพเชฐเซ เชนเชเซ เชชเชฃ เชเชเซเชเชฟเชค เชธเซเชฅเชฟเชคเชฟเชฎเชพเช เชชเซเชจเชเชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชธเชฎเชเซเชฐ เชฆเซเชจเชฟเช WAL เชฒเชพเชเซ เชเชฐเชตเซเช เชชเชกเชถเซ (เชธเซเชฅเซ เชเชฐเชพเชฌ เชเชฟเชธเซเชธเชพเชฎเชพเช).
เชตเชฟเชฒเชเชฌเชฟเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชฌเซ เชฐเซเชคเซ เชเซเชฒเซเชก เชฌเซเชเช เชช เชเชฐเชคเชพเช เชตเชงเซ เชธเชพเชฐเซ เชเซ:
- เชเชฐเซเชเชพเชเชตเชฎเชพเชเชฅเซ เชธเชเชชเซเชฐเซเชฃ เชฎเซเชณเชญเซเชค เชฌเซเชเช เชช เชฆเซเชฐ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
- WAL เชธเซเชเชฎเซเชจเซเชเชจเซ เชเช -เชเชฒเชพเชเชจเซ เชจเชฟเชถเซเชเชฟเชค เชตเชฟเชจเซเชกเซ เชเซ เชเซเชจเซเช เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เชเชฐเชตเซเช เชเชตเชถเซเชฏเช เชเซ.
เช เชฎเซ WAL เชฎเชพเชเชฅเซ PITR เชฌเชจเชพเชตเชตเซเช เชถเชเซเชฏ เชเซ เชเซ เชเซเชฎ เชคเซ เชเซเชตเชพ เชฎเชพเชเซ เชชเชฃ เชธเชคเชค เชคเชชเชพเชธ เชเชฐเซเช เชเซเช, เช เชจเซ เช เชฎเซ เชตเชฟเชฒเชเชฌเชฟเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟเชจเชพ เชฒเซเชเชจเซ เชฎเซเชจเชฟเชเชฐ เชเชฐเซเชจเซ WAL เชเชฐเซเชเชพเชเชตเชฎเชพเช เชญเซเชฐเชทเซเชเชพเชเชพเชฐ เช เชฅเชตเชพ เช เชจเซเชฏ เชธเชฎเชธเซเชฏเชพเชเชจเซ เชเชกเชชเชฅเซ เชเซเชถเซเช.
เช เชเชฆเชพเชนเชฐเชฃเชฎเชพเช, เช
เชฎเชจเซ เชชเซเชจเชเชธเซเชฅเชพเชชเชฟเชค เชเชฐเชตเชพเชฎเชพเช 50 เชฎเชฟเชจเชฟเชเชจเซ เชธเชฎเชฏ เชฒเชพเชเซเชฏเซ, เชเชเชฒเซ เชเซ เชเชกเชช เชชเซเชฐเชคเชฟ เชเชฒเชพเช 110 GB WAL เชกเซเชเชพ เชนเชคเซ (เชเชฐเซเชเชพเชเชต เชนเชเซ เชเชพเชฒเซ เชนเชคเซเช
เชชเชฐเชฟเชฃเชพเชฎเซ: เชเซเชฏเชพเช เชตเชฟเชฒเชเชฌเชฟเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชเชชเชฏเซเชเซ เชเซ (เช เชจเซ เชเซเชฏเชพเช เชคเซ เชจเชฅเซ)
เชเซ เชคเชฎเซ เชเชเชธเซเชฎเชฟเช เชฐเซเชคเซ เชกเซเชเชพ เชเซเชฎเชพเชตเซเชฏเซ เชนเซเชฏ เช เชจเซ เชฐเซเชชเชฐเซเชเชพเชเชเชฟเชค เชตเชฟเชฒเชเชฌเชฎเชพเช เช เชธเชฎเชธเซเชฏเชพ เชจเซเชเชงเชพเช เชนเซเชฏ เชคเซ เชชเซเชฐเชฅเชฎ เชธเชนเชพเชฏ เชคเชฐเซเชเซ เชตเชฟเชฒเชเชฌเชฟเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟเชจเซ เชเชชเชฏเซเช เชเชฐเซ.
เชชเชฐเชเชคเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฐเชพเชเซ: เชชเซเชฐเชคเชฟเชเซเชคเชฟ เช เชฌเซเชเช เชช เชจเชฅเซ.
เชฌเซเชเช
เชช เช
เชจเซ เชชเซเชฐเชคเชฟเชเซเชคเชฟเชจเชพ เชเซเชฆเชพ เชเซเชฆเชพ เชนเซเชคเซเช เชเซ. เชเซ เชคเชฎเซ เชเชเชธเซเชฎเชฟเช เชฐเซเชคเซ เชฌเชจเชพเชตเซเชฏเซเช เชนเซเชฏ เชคเซ เชเซเชฒเซเชก เชฌเซเชเช
เชช เชนเชพเชฅเชฎเชพเช เชเชตเชถเซ DELETE
เช
เชฅเชตเชพ DROP TABLE
. เช
เชฎเซ เชเซเชฒเซเชก เชธเซเชเซเชฐเซเชเชฎเชพเชเชฅเซ เชฌเซเชเช
เชช เชฌเชจเชพเชตเซเช เชเซเช เช
เชจเซ เชเซเชฌเชฒเชจเซ เช
เชเชพเชเชจเซ เชธเซเชฅเชฟเชคเชฟ เช
เชฅเชตเชพ เชธเชฎเชเซเชฐ เชกเซเชเชพเชฌเซเชเชจเซ เชชเซเชจเชเชธเซเชฅเชพเชชเชฟเชค เชเชฐเซเช เชเซเช. เชชเชฐเชเชคเซ เชคเซ เช เชธเชฎเชฏเซ เชตเชฟเชจเชเชคเซ DROP TABLE
เชตเชฐเซเชเชฟเชเช เชเซเชฒเชธเซเชเชฐ เชชเชฐเชจเซ เชคเชฎเชพเชฎ เชชเซเชฐเชคเชฟเชเซเชคเชฟเชเชฎเชพเช เชฒเชเชญเช เชคเชฐเชค เช เชชเซเชจเชเชเชคเซเชชเชพเชฆเชฟเชค เชฅเชพเชฏ เชเซ, เชคเซเชฅเซ เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชฐเชคเชฟเชเซเชคเชฟ เช
เชนเซเช เชฎเชฆเชฆ เชเชฐเชถเซ เชจเชนเซเช. เชเซเชฏเชพเชฐเซ เชตเซเชฏเชเซเชคเชฟเชเชค เชธเชฐเซเชตเชฐเซ เชญเชพเชกเซ เชเชชเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช
เชจเซ เชฒเซเชกเชจเซเช เชตเชฟเชคเชฐเชฃ เชเชฐเซ เชเซ เชคเซเชฏเชพเชฐเซ เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชชเซเชคเซ เช เชกเซเชเชพเชฌเซเชเชจเซ เชเชชเชฒเชฌเซเชง เชฐเชพเชเซ เชเซ.
เชตเชฟเชฒเชเชฌเชฟเชค เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชธเชพเชฅเซ เชชเชฃ, เชเซ เชกเซเชเชพ เชธเซเชจเซเชเชฐเชจเซ เชจเชฟเชทเซเชซเชณเชคเชพ, เชเซเชชเชพเชฏเซเชฒ เชจเซเชเชธเชพเชจ เช เชฅเชตเชพ เช เชจเซเชฏ เชเชเชจเชพเช เชเซ เชเซ เชคเชพเชคเซเชเชพเชฒเชฟเช เชงเซเชฏเชพเชจเชชเชพเชคเซเชฐ เชจ เชนเซเชฏ เชคเซ เช เชฎเชจเซ เชเซเชเชฒเซเชเชตเชพเชฐ เชธเชฒเชพเชฎเชค เชธเซเชฅเชณเซ เช เชเชกเชพ เชฌเซเชเช เชชเชจเซ เชเชฐเซเชฐ เชนเซเชฏ เชเซ. เชเชเชฒเชพ เชชเซเชฐเชคเชฟเชเซเชคเชฟเชจเซ เช เชนเซเช เชเซเช เชเชชเชฏเซเช เชจเชฅเซ.
เชจเซเชเชงเชฃเซ... เชชเชฐ
เชธเซเชฐเซเชธ: www.habr.com