áá¯á¶áá°áá°ážááŒááºážááẠá¡áááºááááºážááŒááºážááá¯ááºáá«á áá«ááŸááá¯ááºááá¯ááºáá«? á€áááºááŸá¬ áá»áœááºá¯ááºááá¯á·ááẠááŒááºáááºážááá·áºááºáá»á¬ážááᯠááá±á¬áºáá áá»ááºááŒááºážá០ááŒááºáááºááá°ááẠááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ áá¯á¶áá°ááœá¬ážááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááá·áºáááºážááŒá
áºáááºá
áá°ážáá°ááŒááºážááẠáá±áá¬áá±á·á
áºáá»á¬ážááᯠá¡áááºáá°ážááŒááºážáááºážáááºážááá¯ááºáá« (gitlab-ce
ááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ áá¯á¶á á¶áá°ááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠá.á áá¬áá®á¡ááœááºáž áá±áá¬ááᯠááŒááºáááºááá°áááºá áááºááá¯ááŒá áºáá¬áá² ááŒáá·áºááá¯ááºáá«áŠážá
PostgreSQL ááŒáá·áº á¡áá»áááºááŒááºáááºááá°ááŒááºážááᯠá¡ááŸááºá¡áá¬ážááŒá¯áá«á
PostgreSQL ááœáẠáá±áá¬áá±á·á
áºáá
áºáá¯áá¡ááŒá±á¡áá±ááᯠá¡áá»áááºááŸáá·áºáá
áºááŒá±ážáá®áááºááŸááºáá¬ážáá±á¬áá±áá¬ááá¯á· ááŒááºáááºáá±á¬ááºááŸáá
á±ááá·áº built-in áá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯ááŸááááºá á¡á²á·áá«ááá¯áá±á«áºáááº
á¡á±ážáá±á¬á¡áááºááááºážááŒááºážá¡ááœáẠá€á¡ááºá¹áá«áááºááá¯á¡áá¯á¶ážááŒá¯áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒá±áá¶áá±áá¬áá±á·á
áºá¡áááºááᯠáá¯á¶ááŸááºááŒá¯áá¯ááºááŒá®áž áááºážááᯠáá±á¬áºááœááºážááá¯ááºááœáẠááááºážáááºážáá¬ážáá«ááẠ(GitLab áá±á¬áºááœááºážááá¯ááºáá»á¬ážááẠááá¯ááºááá¯ááºáááºááŸááááº
ááœáŸá±á·ááá¯ááºáž áá°ážáá°ááŒááºážááá¯áááºááŸá¬ á¡áááºáááºážá
Lazy replication ááẠááŸá±á¬áá·áºááŸá±ážááŸá¯ááŸáá·áºá¡áá° 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 áá±á¬áºááœááºážááá¯ááºááẠáááºážááá¯á·ááᯠááŸá±á¬ááºááŸá¬ážááá¯ááºá
á±áá«áááºá
parameter ááẠ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 á¡ááœáẠá¡á¡á±ážáááá±á¬ á¡áááºáá°ážáá°ááŒááºážáááº)á
áá»áœááºá¯ááºááá¯á·ááẠááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ Postgres á á¶ááá°áá¬ááᯠááŒááºáááºá áááºááŒá®áž 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'
. á¡áááºá áá»áœááºá¯ááºááá¯á·ááœáẠááœá±áá±ážááœá±áá° ID áá
áºáá¯ááŸááá»áŸáẠáá»áœááºá¯ááºááá¯á· áá°áá«áááºá recovery_target_xid
áá±á¬ááºážááá¯ááŸá¯áááá¯ááºááŸá® á¡áá±á¬ááºážá¡áááºáá¯ááºááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºáá²á·áááºá DELETE
.
á¡áá¯ááºááŒááºáááºážááŒááºážááẠá¡ááœááºááá¯ážááŸááºážáá«áááº- ááŒá±á¬ááºážáá²ááŸá¯á¡á¬ážáá¯á¶ážááᯠáááºááŸá¬ážááá¯ááºáá«á recovery.conf
ááŒá®áž Postgres ááᯠááŒááºáááºá
áááºáá«á áá¯á¶áá°ááẠáááŒá¬áá® ááŸá
áºáá¬áá®ááŒá¬ ááŒáá·áºááŒá¬áá±áá±á¬á·áááºááŒá
áºáᬠá¡áá¬áááºááŒá¿áá¬áá»á¬ážá¡ááœáẠáá»áœááºá¯ááºááá¯á· ááŒááºáááºáá¬ážáá«áááºá
ááŒááºáááºááá°ááŒááºáž á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬áž
á¡á¡á±ážáááá±á¬ á¡áááºááááºážáááºážááŒááºážá¡á á¬áž ááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ áá¯á¶á á¶áá°ááŒáá·áºá ááŸááºáááºážáá±á¬ááºážá០áá¯á¶áá áºáá¯áá¯á¶ážááᯠááŒááºáááºááá°ááẠáá¬áá®áá»á¬ážá áœá¬ áá¯á¶ážá áœá²ááẠáááá¯á¡ááºáá«á á¥ááá¬á¡á¬ážááŒáá·áºá á¡ááŒá±áᶠ2 TB á¡áááºáá°ážáá°ááẠáá«ážáá¬áá®ááŒá¬áááºá ááá¯á·áá±á¬áẠáááºá¡ááá¯ááŸááá±á¬ á¡ááŒá±á¡áá±ááá¯á· ááŒááºáááºááá°ááẠ(á¡ááá¯ážáá¯á¶ážá¡ááŒá±á¡áá±ááœááº) áá±á·á á¥áº WAL áá áºáá¯áá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáá±áá±ážáááºá
ááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ áá¯á¶á á¶áá°ááẠáááºážáááºážááŸá áºáá»áá¯ážááŒáá·áº á¡á¡á±ážáááá±á¬ á¡áááºáá°ážááŒááºážááẠááá¯áá±á¬ááºážáááº-
- archive ááŸá¡ááŒá±áá¶á¡áááºáá°ážáá°ááŸá¯áá áºáá¯áá¯á¶ážááá¯áááºááŸá¬ážáááºáááá¯á¡ááºáá«á
- áááºáá«ááá²áá²áá¯ááºáááá·áº WAL á¡ááá¯ááºážáá»á¬ážá ááŸá áºáá¬áá®ááŒá¬áááºážááá¯ážáá áºáá¯ááŸááááºá
WAL á០PITR áá áºáá¯ááᯠááŒá¯áá¯ááºááá¯ááºáá»á± ááŸáá áááŸáááá¯áááºáž á¡á ááºáá áá¯áẠá á áºáá±ážááŒá®áž WAL áá±á¬áºááœááºážááá¯ááºááœáẠááŒá á¬ážááŸá¯ ááá¯á·ááá¯áẠá¡ááŒá¬ážááŒá¿áá¬áá»á¬ážááᯠáá»ááºááŒááºá áœá¬ áááááŒá¯ááááá¯ááºáááºááŒá áºáááºá
á€á¥ááá¬ááœááºá ááŒááºáááºááá°ááẠáááá
Ạ50 ááŒá¬áááºá ááá¯ááá¯áááºááŸá¬ á¡ááŒááºááŸá¯ááºážááẠáá
áºáá¬áá®áá»áŸáẠWAL áá±áᬠ110 GB ááŒá
áºááẠ(ááŸááºáááºážááᯠááœáá·áºáá¬ážáá²ááŒá
áºáááºá
ááááºáá»á¬áž- ááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ áá¯á¶á á¶áá°ááẠá¡áá¯á¶ážáááºááá·áºáá±áᬠ(áááºážááá¯ááºááá·áºáá±áá¬ááœááº)
áá±áá¬áá»á¬áž ááá±á¬áºáá áá»á±á¬ááºáá¯á¶ážááœá¬ážáᬠááŒááºáááºáá¬ážáá±á¬ ááŸá±á¬áá·áºááŸá±ážááŸá¯á¡ááœááºáž á€ááŒá¿áá¬ááᯠáááááŒá¯áááá«á ááŸá±á¬áá·áºááŸá±ážááŒáá·áºááŒá¬áá±á¬ áá°ážáá°ááŸá¯ááᯠááŸá±ážáŠážáá°áá¬ááŒá¯á á¯áááºážá¡ááŒá Ạá¡áá¯á¶ážááŒá¯áá«á
ááá¯á·áá±á¬áº ááŸááºáá¬ážáá¬ážáá«- áá¯á¶áá°áá°ážááŒááºážááẠá¡áááºááááºážááŒááºážááá¯ááºáá«á
áááá¹áá°áá°ážááŒááºážááŸáá·áº áá°ážáá°ááŒááºážááœáẠááá°áá®áá±á¬ áááºááœááºáá»ááºáá»á¬ážááŸááááºá áááºááá±á¬áºáááá¯ááºáááá«á á¡á¡á±ážáááá±á¬áááá¹áá°áá
áºáá¯ááẠá¡áááºááŒá±áá«áááá·áºáááºá DELETE
ááá¯á·ááá¯áẠDROP TABLE
. áá»áœááºá¯ááºááá¯á·ááẠá¡á¡á±ážáááºážááá¯ááŸá±á¬ááºááŸá¯á០á¡áááºáá°ážáá°ááŒá®áž ááá¬ážá ááááºá¡ááŒá±á¡áá± ááá¯á·ááá¯áẠáá±áá¬áá±á·á
áºáá
áºáá¯áá¯á¶ážááᯠááŒááºáááºááá°áááºá áá«áá±ááá·áº ááá»áááºáááºážááŸá¬áá² áá±á¬ááºážááá¯áááºá DROP TABLE
á¡áá¯ááºáá¯ááºáá±á¬ á¡á
á¯á¡áá±ážááŸá áá¯á¶áá°áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá»ááºáá»ááºážáá®ážáá«áž ááŒááºáá¯ááºáá±ážáááºááŒá
áºáá±á¬ááŒá±á¬áá·áº áá¬áááºáá¯á¶áá°ááœá¬ážááŒááºážááẠá€áá±áá¬ááœáẠá¡áá±á¬ááºá¡áá°áááŒá
áºáá«á áá°ážáá°ááŸá¯ááá¯ááºááá¯ááºá áá¬áá¬áá
áºáá¯áá»ááºážá
á®ááᯠááŸá¬ážáááºážááŒá®áž áááºááᯠááŒáá·áºáá±ááá·áºá¡áá«ááœáẠáá±áá¬áá±á·á
áºááᯠááááºážáááºážáá±ážáááºá
ááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ áá¯á¶á á¶áá°ááŒáá·áºáááºá áá±áá¬á ááºáᬠáá»áá¯á·ááœááºážááŸá¯á áá»áŸáá¯á·ááŸááºáá»ááºá á®ážááŸá¯ ááá¯á·ááá¯áẠáá»ááºáá»ááºážáááá¬áááºááŸá¬ážááŒááºážáááŸáááá·áº á¡ááŒá¬ážááŒá áºáááºáá»á¬áž ááŒá áºáá±á«áºáá¬áá«á áá áºáá«áá áºáá¶ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá¯á¶ááŒá¯á¶áá±á¬áá±áá¬ááœáẠá¡á¡á±ážáááá±á¬ á¡áááºááᯠá¡ááŸááºáááẠááá¯á¡ááºáá«áááºá Replication áá áºáá¯áááºážá áá®ááŸá¬ á¡áá¯á¶ážááááºáá«áá°ážá
ááœá±á¬ááá¯á á¡áá±á«áº
source: www.habr.com