ಪ್ರತಿಕೃತಿಯು ಬ್ಯಾಕ್ಅಪ್ ಅಲ್ಲ. ಅಥವಾ ಇಲ್ಲವೇ? ಆಕಸ್ಮಿಕವಾಗಿ ಅಳಿಸಲಾದ ಶಾರ್ಟ್ಕಟ್ಗಳಿಂದ ಚೇತರಿಸಿಕೊಳ್ಳಲು ನಾವು ಮುಂದೂಡಲ್ಪಟ್ಟ ಪ್ರತಿಕೃತಿಯನ್ನು ಹೇಗೆ ಬಳಸಿದ್ದೇವೆ ಎಂಬುದು ಇಲ್ಲಿದೆ.
ಪ್ರತಿಕೃತಿಯು ಡೇಟಾಬೇಸ್ಗಳನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡುವ ಸಾಧನವಲ್ಲ (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
ಆ ದುರದೃಷ್ಟಕರ ವಿನಂತಿಯ ಮೊದಲು ಡೇಟಾಬೇಸ್ ತನ್ನ ಸ್ಥಿತಿಗೆ ಮರಳಿತು. ಈಗ ನೀವು ಉದಾಹರಣೆಗೆ, ಡೇಟಾವನ್ನು ರಫ್ತು ಮಾಡಬಹುದು. ನಾವು ಅಳಿಸಲಾದ ಲೇಬಲ್ ಡೇಟಾ ಮತ್ತು ಸಮಸ್ಯೆಗಳಿಗೆ ಎಲ್ಲಾ ಲಿಂಕ್ಗಳನ್ನು ರಫ್ತು ಮಾಡಿದ್ದೇವೆ ಮತ್ತು ವಿನಂತಿಗಳನ್ನು ವಿಲೀನಗೊಳಿಸಿದ್ದೇವೆ ಮತ್ತು ಅವುಗಳನ್ನು ಉತ್ಪಾದನಾ ಡೇಟಾಬೇಸ್ಗೆ ಸರಿಸಿದೆವು. ನಷ್ಟಗಳು ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿದ್ದರೆ, ನೀವು ಸರಳವಾಗಿ ಪ್ರತಿಕೃತಿಯನ್ನು ಪ್ರಚಾರ ಮಾಡಬಹುದು ಮತ್ತು ಅದನ್ನು ಮುಖ್ಯವಾಗಿ ಬಳಸಬಹುದು. ಆದರೆ ನಾವು ಚೇತರಿಸಿಕೊಂಡ ನಂತರದ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳು ಕಳೆದುಹೋಗುತ್ತವೆ.
ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳ ಬದಲಿಗೆ, ವಹಿವಾಟು ಐಡಿಗಳನ್ನು ಬಳಸುವುದು ಉತ್ತಮ. ಈ ಐಡಿಗಳನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಇದು ಉಪಯುಕ್ತವಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, ಡಿಡಿಎಲ್ ಹೇಳಿಕೆಗಳಿಗೆ (ಉದಾಹರಣೆಗೆ 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