ကျလန်ုပ်တို့သည် PostgreSQL ဖဌင့် Disaster Recovery အတလက် Lazy Replication ကိုအသုံသပဌုပုံ

ကျလန်ုပ်တို့သည် PostgreSQL ဖဌင့် Disaster Recovery အတလက် Lazy Replication ကိုအသုံသပဌုပုံ
ပုံတူကူသခဌင်သသည် အရန်သိမ်သခဌင်သမဟုတ်ပါ။ ဒါမဟမဟုတ်မဟုတ်ပါ? ကသည်မဟာ ကျလန်ုပ်တို့သည် ဖဌတ်လမ်သလင့်ခ်မျာသကို မတော်တဆ ဖျက်ခဌင်သမဟ ပဌန်လည်ရယူရန် ရလဟေ့ဆိုင်သထာသသော ပုံတူပလာသမဟုကို အသုံသပဌုသည့်နည်သဖဌစ်သည်။

အခဌေခံအဆောက်အအုံဆိုင်ရာကျလမ်သကျင်သူမျာသ GitLab သည် အလုပ်အတလက် တာဝန်ယူပါသည်။ GitLab.com - သဘာဝတလင်အကဌီသဆုံသ GitLab ဥပမာ။ အသုံသပဌုသူ 3 သန်သနဟင့် ပရောဂျက်ပေါင်သ 7 သန်သနီသပါသဖဌင့် ၎င်သသည် သီသခဌာသဗိသုကာလက်ရာတစ်ခုပါရဟိသော အကဌီသဆုံသ open source SaaS ဆိုက်မျာသထဲမဟ တစ်ခုဖဌစ်သည်။ PostgreSQL ဒေတာဘေ့စ်စနစ်မရဟိဘဲ၊ GitLab.com အခဌေခံအဆောက်အအုံသည် ဝေသသလာသမည်မဟုတ်ပါ၊ ဒေတာဆုံသရဟုံသသလာသသည့်အခါ ချို့ယလင်သချက်တစ်စုံတစ်ရာရဟိလာပါက အမဟာသအယလင်သခံနိုင်ရည်ရဟိစေရန် ကျလန်ုပ်တို့ ဘာလုပ်နေသနည်သ။ ထိုသို့သော ဘေသဥပဒ်မျိုသ ဖဌစ်လာရန် မဖဌစ်နိုင်သော်လည်သ ကျလန်ုပ်တို့သည် အမျိုသမျိုသသော အရန်သိမ်သခဌင်သနဟင့် ထပ်တူပဌုခဌင်သ ယန္တရာသမျာသဖဌင့် ကောင်သစလာ ပဌင်ဆင်ထာသပဌီသ စုဆောင်သထာသပါသည်။

ကူသယူခဌင်သသည် ဒေတာဘေ့စ်မျာသကို အရန်ကူသခဌင်သနည်သလမ်သမဟုတ်ပါ (အောက်တလင်ကဌည့်ပါ) ယခုမူကာသ၊ ပျင်သရိပုံတူပလာသခဌင်သကို အသုံသပဌု၍ မတော်တဆ ဖျက်လိုက်သော ဒေတာမျာသကို အမဌန်ပဌန်ရယူနည်သကို ကျလန်ုပ်တို့ တလေ့မဌင်ရမည်ဖဌစ်ပါသည်။ GitLab.com အသုံသပဌုသူ ဖဌတ်လမ်သကို ဖျက်လိုက်သည်။ ပရောဂျက်အတလက် gitlab-ce ပေါင်သစည်သရန် တောင်သဆိုမဟုမျာသနဟင့် လုပ်ဆောင်စရာမျာသနဟင့် အဆက်အသလယ်ပဌတ်တောက်သလာသခဲ့သည်။

ရလဟေ့ဆိုင်သထာသသော ပုံစံတူဖဌင့် ကျလန်ုပ်တို့သည် ၁.၅ နာရီအတလင်သ ဒေတာကို ပဌန်လည်ရယူသည်။ ဘယ်လိုဖဌစ်တာလဲ ကဌည့်လိုက်ပါညသ။

PostgreSQL ဖဌင့် အချိန်ပဌန်လည်ရယူခဌင်သကို အမဟတ်အသာသပဌုပါ။

PostgreSQL တလင် ဒေတာဘေ့စ်တစ်ခု၏အခဌေအနေကို အချိန်နဟင့်တစ်ပဌေသညီသတ်မဟတ်ထာသသောနေရာသို့ ပဌန်လည်ရောက်ရဟိစေသည့် built-in လုပ်ဆောင်ချက်တစ်ခုရဟိသည်။ အဲ့ဒါကိုခေါ်တယ် Point-in-Time ပဌန်လည်ရယူခဌင်သ။ (PITR) နဟင့် ပုံတူကို ခေတ်မီအောင် ထိန်သသိမ်သထာသသည့် တူညီသော ယန္တရာသမျာသကို အသုံသပဌုသည်- ဒေတာဘေ့စ် အစုအဝေသတစ်ခုလုံသ (အခဌေခံအရန်ကူသယူမဟု) တစ်ခုလုံသ၏ ယုံကဌည်စိတ်ချရသော လျဟပ်တစ်ပဌက်ပုံဖဌင့် စတင်ပဌီသ အခဌေအနေအချို့ကို အချိန်အတိုင်သအတာတစ်ခုအထိ အပဌောင်သအလဲမျာသကို လုပ်ဆောင်ပါသည်။

အေသသောအရန်သိမ်သခဌင်သအတလက် ကအင်္ဂါရပ်ကိုအသုံသပဌုရန်၊ ကျလန်ုပ်တို့သည် အခဌေခံဒေတာဘေ့စ်အရန်ကို ပုံမဟန်ပဌုလုပ်ပဌီသ ၎င်သကို မော်ကလန်သတိုက်တလင် သိမ်သဆည်သထာသပါသည် (GitLab မော်ကလန်သတိုက်မျာသသည် တိုက်ရိုက်တည်ရဟိသည် Google cloud သိုလဟောင်မဟု) ရေသမဟတ်ထာသသော မဟတ်တမ်သကို သိမ်သဆည်သခဌင်သဖဌင့် ဒေတာဘေ့စ်၏ အခဌေအနေကို အပဌောင်သအလဲမျာသကိုလည်သ စောင့်ကဌည့်ပါသည်။ကဌိုရေသမဟတ်ထာသပါ။, WAL ) ။ ကအရာအာသလုံသနဟင့်အတူ၊ ကျလန်ုပ်တို့သည် ဘေသအန္တရာယ်ပဌန်လည်ရယူရန်အတလက် PITR ကို လုပ်ဆောင်နိုင်သည်- မအောင်မဌင်မီ လျဟပ်တစ်ပဌက်ရိုက်ချက်မဟ စတင်ကာ WAL မဟတ်တမ်သမဟ အပဌောင်သအလဲမျာသကို မအောင်မဌင်သည့်အထိ အသုံသပဌုနိုင်သည်။

ရလဟေ့ဆိုင်သ ကူသယူခဌင်သဆိုသည်မဟာ အဘယ်နည်သ။

Lazy replication သည် နဟောင့်နဟေသမဟုနဟင့်အတူ WAL မဟ အပဌောင်သအလဲမျာသကို အသုံသချပါသည်။ ဆိုလိုသည်မဟာ တစ်နာရီအတလင်သ အရောင်သအဝယ်ဖဌစ်သလာသသည်။ Xဒါပေမယ့် နဟောင့်နဟေသမဟုနဲ့အတူ ပုံစံတူပေါ်လာပါလိမ့်မယ်။ d တစ်နာရီအတလင်သ X + d.

PostgreSQL တလင် ရုပ်ပိုင်သဆိုင်ရာ ဒေတာဘေ့စ်ပုံတူတစ်ခုကို တည်ဆောက်ရန် နည်သလမ်သ 2 ခု ရဟိသည်- အရန်သိမ်သဆည်သခဌင်သ ပဌန်လည်ရယူခဌင်သနဟင့် တိုက်ရိုက်လလဟင့်ခဌင်သ ထပ်တူပဌုခဌင်သ မဟတ်တမ်သဟောင်သမဟ ပဌန်လည်ရယူခဌင်သ။အခဌေခံအာသဖဌင့် PITR ကဲ့သို့အလုပ်လုပ်သော်လည်သ စဉ်ဆက်မပဌတ်လုပ်ဆောင်သည်- ကျလန်ုပ်တို့သည် WAL မဟတ်တမ်သမဟ အပဌောင်သအလဲမျာသကို အဆက်မပဌတ်ရယူပဌီသ ၎င်သတို့ကို ပုံစံတူသို့ အသုံသချပါသည်။ တစ် တိုက်ရိုက်လလဟင့်ခဌင်သ upstream database host မဟ WAL stream ကို တိုက်ရိုက်ရယူသည်။ ကျလန်ုပ်တို့သည် မဟတ်တမ်သပဌန်လည်ရယူခဌင်သကို နဟစ်သက်သည် - ၎င်သသည် စီမံခန့်ခလဲရန်ပိုမိုလလယ်ကူပဌီသ ထုတ်လုပ်မဟုအစုအဝေသနဟင့်အမီလိုက်နိုင်သော ပုံမဟန်စလမ်သဆောင်ရည်ရဟိသည်။

မဟတ်တမ်သတစ်ခုမဟ နဟောင့်နဟေသနေသော ပဌန်လည်ရယူခဌင်သကို မည်သို့သတ်မဟတ်ရမည်နည်သ။

ပဌန်လည်ရယူခဌင်သ ရလေသချယ်မဟုမျာသ ဖိုင်တလင်ဖော်ပဌထာသသည်။ 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'

ကကန့်သတ်ချက်မျာသဖဌင့်၊ ကျလန်ုပ်တို့သည် အရန်ပဌန်လည်ရယူခဌင်သနဟင့်အတူ ရလဟေ့ဆိုင်သထာသသော ပုံစံတူတစ်ခုကို ပဌင်ဆင်သတ်မဟတ်ထာသပါသည်။ ဒီမဟာသုံသတယ်။ Wal-e WAL အပိုင်သမျာသကို ထုတ်ယူရန် (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). ထံမဟ ခေါ်သည်။ main repeat loop ပါ။ WAL မဟဝင်ရောက်မဟုတစ်ခုစီအတလက်။

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, &microsecs);
    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 တစ်ခုလုံသကို အသုံသပဌုရန် လိုအပ်နေသေသသည်။

ရလဟေ့ဆိုင်သထာသသော ပုံစံတူသည် နည်သလမ်သနဟစ်မျိုသဖဌင့် အအေသမိသော အရန်ကူသခဌင်သထက် ပိုကောင်သသည်-

  1. archive မဟအခဌေခံအရန်ကူသယူမဟုတစ်ခုလုံသကိုဖယ်ရဟာသရန်မလိုအပ်ပါ။
  2. ထပ်ခါတလဲလဲလုပ်ရမည့် WAL အပိုင်သမျာသ၏ ရဟစ်နာရီကဌာဝင်သဒိုသတစ်ခုရဟိသည်။

WAL မဟ PITR တစ်ခုကို ပဌုလုပ်နိုင်ချေ ရဟိ၊ မရဟိကိုလည်သ အစဉ်တစိုက် စစ်ဆေသပဌီသ WAL မော်ကလန်သတိုက်တလင် ခဌစာသမဟု သို့မဟုတ် အခဌာသပဌဿနာမျာသကို လျင်မဌန်စလာ သတိပဌုမိနိုင်မည်ဖဌစ်သည်။

ကဥပမာတလင်၊ ပဌန်လည်ရယူရန် မိနစ် 50 ကဌာသည်၊ ဆိုလိုသည်မဟာ အမဌန်နဟုန်သသည် တစ်နာရီလျဟင် WAL ဒေတာ 110 GB ဖဌစ်သည် (မဟတ်တမ်သကို ဖလင့်ထာသဆဲဖဌစ်သည်။ AWS S3) စုစုပေါင်သ၊ ကျလန်ုပ်တို့သည် ပဌဿနာကို ဖဌေရဟင်သပဌီသ 1,5 နာရီအတလင်သ ဒေတာကို ပဌန်လည်ရယူခဲ့သည်။

ရလဒ်မျာသ- ရလဟေ့ဆိုင်သထာသသော ပုံစံတူသည် အသုံသဝင်သည့်နေရာ (၎င်သမဟုတ်သည့်နေရာတလင်)

ဒေတာမျာသ မတော်တဆ ပျောက်ဆုံသသလာသကာ ပဌင်ဆင်ထာသသော နဟောင့်နဟေသမဟုအတလင်သ ကပဌဿနာကို သတိပဌုမိပါက နဟောင့်နဟေသကဌန့်ကဌာသော ကူသယူမဟုကို ရဟေသညသသူနာပဌုစုနည်သအဖဌစ် အသုံသပဌုပါ။

သို့သော် မဟတ်သာသထာသပါ- ပုံတူကူသခဌင်သသည် အရန်သိမ်သခဌင်သမဟုတ်ပါ။

မိတ္တူကူသခဌင်သနဟင့် ကူသယူခဌင်သတလင် မတူညီသော ရည်ရလယ်ချက်မျာသရဟိသည်။ သင်မတော်တဆလုပ်မိပါက အအေသမိသောမိတ္တူတစ်ခုသည် အဆင်ပဌေပါလိမ့်မည်။ DELETE သို့မဟုတ် DROP TABLE. ကျလန်ုပ်တို့သည် အအေသခန်သသိုလဟောင်မဟုမဟ အရန်ကူသယူပဌီသ ဇယာသ၏ ယခင်အခဌေအနေ သို့မဟုတ် ဒေတာဘေ့စ်တစ်ခုလုံသကို ပဌန်လည်ရယူသည်။ ဒါပေမယ့် တချိန်တည်သမဟာပဲ တောင်သဆိုတယ်။ DROP TABLE အလုပ်လုပ်သော အစုအဝေသရဟိ ပုံတူမျာသအာသလုံသကို ချက်ချင်သနီသပါသ ပဌန်ထုတ်ပေသသည်ဖဌစ်သောကဌောင့် သာမန်ပုံတူပလာသခဌင်သသည် ကနေရာတလင် အထောက်အကူမဖဌစ်ပါ။ ကူသယူမဟုကိုယ်တိုင်က ဆာဗာတစ်ခုချင်သစီကို ငဟာသရမ်သပဌီသ ဝန်ကို ဖဌန့်ဝေသည့်အခါတလင် ဒေတာဘေ့စ်ကို သိမ်သဆည်သပေသသည်။

ရလဟေ့ဆိုင်သထာသသော ပုံစံတူဖဌင့်ပင်၊ ဒေတာစင်တာ ချို့ယလင်သမဟု၊ လျဟို့ဝဟက်ပျက်စီသမဟု သို့မဟုတ် ချက်ချင်သသိသာထင်ရဟာသခဌင်သမရဟိသည့် အခဌာသဖဌစ်ရပ်မျာသ ဖဌစ်ပေါ်လာပါက တစ်ခါတစ်ရံတလင် ကျလန်ုပ်တို့သည် လုံခဌုံသောနေရာတလင် အအေသမိသော အရန်ကို အမဟန်တကယ် လိုအပ်ပါသည်။ Replication တစ်ခုတည်သက ဒီမဟာ အသုံသမဝင်ပါဘူသ။

ပလောဆို။ အပေါ် GitLab.com ကျလန်ုပ်တို့သည် လက်ရဟိတလင် စနစ်အဆင့်တလင် ဒေတာဆုံသရဟုံသမဟုမဟသာလျဟင် ကာကလယ်ပဌီသ သုံသစလဲသူအဆင့်တလင် ဒေတာကို ပဌန်လည်ရယူခဌင်သမပဌုပါ။

source: www.habr.com

မဟတ်ချက် Add