āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻāĻāĻĒ āĻ¨āĻ¯āĻŧ. āĻ
āĻĨāĻŦāĻž āĻ¨āĻž? āĻāĻāĻ¨āĻžāĻā§āĻ°āĻŽā§ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻļāĻ°ā§āĻāĻāĻžāĻāĻā§āĻ˛āĻŋ āĻĨā§āĻā§ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻā§āĻāĻžāĻŦā§ āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻāĻŋ āĻ¤āĻž āĻāĻāĻžāĻ¨ā§āĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŦā§āĻ¯āĻžāĻ āĻāĻĒ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻ¯āĻŧ āĻ¨āĻ¯āĻŧ (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 āĻāĻŋāĻāĻžāĻŦā§ āĻāĻāĻž āĻāĻ°ā§?
āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻā§āĻāĻžāĻŦā§ āĻ
āĻ˛āĻ¸ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§ āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧāĨ¤ āĻāĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻžāĻ¨ 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
āĻ¸ā§āĻ āĻĻā§āĻ°ā§āĻāĻžāĻā§āĻ¯āĻāĻ¨āĻ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻāĻŋ āĻ¤āĻžāĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĻā§āĨ¤ āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĄā§āĻāĻž āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻŽāĻ°āĻž āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻ˛ā§āĻŦā§āĻ˛ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ˛āĻŋāĻā§āĻ āĻāĻŦāĻ āĻŽāĻžāĻ°ā§āĻ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ˛āĻŋ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻāĻ°ā§āĻāĻŋā§ˇ āĻ¯āĻĻāĻŋ āĻā§āĻˇāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻŦāĻĄāĻŧ āĻāĻāĻžāĻ°ā§āĻ° āĻšāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻŋ āĻā§āĻŦāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻĒāĻāĻŋāĻā§ āĻĒā§āĻ°āĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻŦāĻŋāĻ¨ā§āĻĻā§āĻ¤ā§ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°ā§āĻāĻŋ āĻ¤āĻžāĻ° āĻĒāĻ°ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§āĨ¤
āĻāĻžāĻāĻŽāĻ¸ā§āĻā§āĻ¯āĻžāĻŽā§āĻĒā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻāĻāĻĄāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻžāĻ˛āĨ¤ āĻāĻ āĻāĻāĻĄāĻŋāĻā§āĻ˛āĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ°ā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĄāĻŋāĻĄāĻŋāĻāĻ˛ āĻ¸ā§āĻā§āĻāĻŽā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ (āĻ¯ā§āĻŽāĻ¨ DROP TABLE
), āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ log_statements = 'ddl'
. āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻāĻāĻĄāĻŋ āĻĨāĻžāĻāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻ¤āĻžāĻŽ recovery_target_xid
āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻā§ āĻāĻ˛ā§ āĻā§āĻā§ DELETE
.
āĻāĻžāĻā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻā§āĻŦāĻ āĻ¸āĻšāĻ: āĻĨā§āĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻŽā§āĻā§ āĻĢā§āĻ˛ā§āĻ¨ recovery.conf
āĻāĻŦāĻ Postgres āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻĒāĻāĻŋ āĻļā§āĻā§āĻ°āĻ āĻāĻŦāĻžāĻ° āĻāĻ āĻāĻ¨ā§āĻāĻž āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻšāĻŦā§, āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĨ¤
āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ°ā§āĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž
āĻā§āĻ˛ā§āĻĄ āĻŦā§āĻ¯āĻžāĻāĻāĻĒā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻĒ āĻ¸āĻš, āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ° āĻĨā§āĻā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻŋāĻ¤ā§āĻ° āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻ¨ā§āĻāĻž āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŽā§āĻ˛āĻŋāĻ 2 āĻāĻŋāĻŦāĻŋ āĻŦā§āĻ¯āĻžāĻāĻāĻĒ āĻĒā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻžāĻāĻ āĻāĻ¨ā§āĻāĻž āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻā§āĨ¤ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§āĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻžāĻā§āĻā§āĻˇāĻŋāĻ¤ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻ¤ā§ (āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻžāĻ°āĻžāĻĒ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§) āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻĻā§āĻ¨āĻŋāĻ WAL āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻĒ āĻĻā§āĻāĻŋ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻ āĻžāĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻžāĻāĻāĻĒā§āĻ° āĻā§āĻ¯āĻŧā§ āĻāĻžāĻ˛:
- āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ° āĻĨā§āĻā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŽā§āĻ˛āĻŋāĻ āĻŦā§āĻ¯āĻžāĻāĻāĻĒ āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤
- WAL āĻ¸ā§āĻāĻŽā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ-āĻāĻ¨ā§āĻāĻž āĻāĻāĻ¨ā§āĻĄā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻāĨ¤
WAL āĻĨā§āĻā§ āĻĒāĻŋāĻāĻāĻāĻŋāĻāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻŋāĻ¨āĻž āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¸ā§āĻĨāĻāĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻĒā§āĻ° āĻŦā§āĻ¯āĻŦāĻ§āĻžāĻ¨ āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻāĻ°ā§ āĻāĻŽāĻ°āĻž āĻĻā§āĻ°ā§āĻ¤ WAL āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°ā§ āĻĻā§āĻ°ā§āĻ¨ā§āĻ¤āĻŋ āĻŦāĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻŦāĨ¤
āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻāĻŋ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° 50 āĻŽāĻŋāĻ¨āĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛ā§āĻā§āĻā§, āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ā§ āĻāĻ¤āĻŋ āĻāĻŋāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋ āĻāĻ¨ā§āĻāĻžāĻ¯āĻŧ 110 GB WAL āĻĄā§āĻāĻž (āĻāĻ°ā§āĻāĻžāĻāĻāĻāĻŋ āĻāĻāĻ¨āĻ āĻāĻžāĻ˛ā§ āĻāĻŋāĻ˛
āĻĢāĻ˛āĻžāĻĢāĻ˛: āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻĒ āĻĻāĻ°āĻāĻžāĻ°ā§ (āĻāĻŦāĻ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻāĻŋ āĻ¨āĻ¯āĻŧ)
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻā§āĻ˛āĻŦāĻļāĻ¤ āĻĄā§āĻāĻž āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§ āĻĢā§āĻ˛ā§āĻ¨ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻāĻŋāĻāĻŋā§āĻ¸āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨: āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻāĻāĻĒ āĻ¨āĻ¯āĻŧāĨ¤
āĻŦā§āĻ¯āĻžāĻāĻāĻĒ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻāĻā§. āĻāĻĒāĻ¨āĻŋ āĻā§āĻ˛āĻŦāĻļāĻ¤ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ˛ā§ āĻāĻāĻāĻŋ āĻ āĻžāĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻžāĻāĻāĻĒ āĻāĻžāĻā§ āĻāĻ¸āĻŦā§ DELETE
āĻŦāĻž DROP TABLE
. āĻāĻŽāĻ°āĻž āĻā§āĻ˛ā§āĻĄ āĻ¸ā§āĻā§āĻ°ā§āĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻžāĻāĻāĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ
āĻŦāĻ¸ā§āĻĨāĻž āĻŦāĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ āĻ¸āĻā§āĻā§ āĻ
āĻ¨ā§āĻ°ā§āĻ§ DROP TABLE
āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°ā§ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¤āĻžāĻ¤ā§āĻā§āĻˇāĻŖāĻŋāĻāĻāĻžāĻŦā§ āĻĒā§āĻ¨āĻ°ā§āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻāĻžāĻ¨ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŦā§ āĻ¨āĻžāĨ¤ āĻ¯āĻāĻ¨ āĻĒā§āĻĨāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻžāĻĄāĻŧāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ˛ā§āĻĄ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻ¨āĻŋāĻā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻ°āĻžāĻā§āĨ¤
āĻāĻŽāĻ¨āĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ˛āĻŽā§āĻŦāĻŋāĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻĒā§āĻ° āĻ¸āĻžāĻĨā§āĻ, āĻĄā§āĻāĻž āĻ¸ā§āĻ¨ā§āĻāĻžāĻ°ā§āĻ° āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻž, āĻ˛ā§āĻāĻžāĻ¨ā§ āĻā§āĻˇāĻ¤āĻŋ, āĻŦāĻž āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ˛āĻā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¨āĻ¯āĻŧ āĻāĻŽāĻ¨ āĻāĻāĻ¨āĻž āĻāĻāĻ˛ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻŽāĻžāĻā§ āĻŽāĻžāĻā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻ āĻžāĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻžāĻāĻāĻĒā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻāĻžāĻ¨ā§ āĻā§āĻ¨ āĻāĻžāĻā§ āĻāĻ¸ā§ āĻ¨āĻž.
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯āĨ¤ āĻāĻĒāĻ°
āĻāĻ¤ā§āĻ¸: www.habr.com