د لیکلو ځنډ هغه وخت ورټوپ کړ چې یوه ریپلیکا دوهم ځای ته ولېږدول شوه، او تونل تر ټولو نوی برخه ده، نو تور پر هغې ورځي۔ تونل ممکن بې ګناه وي: د همغږي تصویب لرونکې د شتون ډلې په داخل کې لومړنۍ ریپلیکا نشي کولی تصویب ومني تر څو چې لرې د لاګ لیکل بشپړ نه شي، نو هرې معاملې د تګ او راتګ بیه ورکوي، هر څومره میګابیټ چې لینګ یې وړلای شي۔ د تیریدو وړتیا په ثانیه کې بایټ اندازه کوي، ځنډ اندازه کوي چې یوه تبادله څومره وخت نیسي، او تصویب ته د بشپړیدو لپاره یوازې یوه کوچنۍ تبادله پکار ده۔ یوه شمیره بحث فیصله کوي: د یوې کوچنۍ معاملې د تصویب موده، چې د شتون په ډیټابیس کې او بیا د همدې انسټنس په سیمه ییزه جدول کې اندازه کیږي۔

لومړنۍ ریپلیکا واقعاً د څه په تمه ده

د همغږي تصویب لاندې لومړنۍ ریپلیکا د تصویب مننه ساتي تر څو چې ملګری تایید کړي چې د هغه لاګ ریکارډونه کلک شوي۔ کلک شوي مانا په دوهمې ریپلیکا د معاملو لاګ کې په دوامداره توګه لیکل شوي، نه چې د هغې په ډیټا پاڼو کې بیا چلول شوي۔ Redo کولای شي د دقیقو لپاره شاته پاتې شي، پرته له دې چې د لومړنۍ ریپلیکا تصویب ته یوه ملی ثانیه هم ورزیاته کړي۔

د شتون د حالتونو په اړه د Microsoft اسناد هغه لاس ورکول تشریح کوي او بیانوي چې پلیټفارم څه کوي کله چې ملګری ووځي۔ د همغږي په توګه نښه شوې ریپلیکا د انتظار قاعده ده، نه دایمي ژمنه چې د هر تصویب لپاره روغه لرې کاپي شته۔ جلا شوې لار په جلا توګه تعریف شوې، او دا یوازې دا نه ده چې تصویب ناکام شي۔

نو هغه انتظار چې تاسو یې ګورئ یوه مجموعه ده: د لاګ لیږد، په دواړو کوربه توبونو کې مهالویش او لرې زېرمې ته لیکل۔ د لاګ اشباع شوې حجم لرونکې دوهمه ریپلیکا هغه وخت زیاتوي چې هیڅ د سرعت ازموینه به یې ونه ښیي۔ هغه ډیسک لږ اندازه کیږي کله چې شکایت VPN نوموي۔

د بینډ ویت د تګ او راتګ ځنډ نه دی

د سرعت ازموینه لار لنډ مهال ډکه کوي او یو نرخ راپور کوي۔ تصویب یو څه تنګ غواړي: یو کوچنی پیغام څومره وخت نیسي تر څو بل لوري ته ورسیږي، وساتل شي او بیرته راشي۔ د لارې اوږدوالی، قطارونه او د پاکټ ضایعه هغه شمیره ټاکي، او کله چې عرضه کوونکی حد پورته کوي، له دې څخه هیڅ هم نه ښه کیږي۔

نو یو «چټک» تونل کولای شي د ډیرو کوچنیو پرله پسې معاملو څخه جوړ شوي لیکلو درانه کاري بار ته ښکاره جریمه ورزیاته کړي۔ هماغه ټول بایټ چې پر زرو تصویبونو ووېشل شي تګ او راتګ زره ځله ورکوي؛ یو لوی لیږد یې یو ځل ورکوي۔

د شبکې مالک ته ووایاست چې د استازیتوب بار لاندې پر همدې ریپلیکا لار ځنډ او ضایعه اندازه کړي۔ د دفتر له لیپ ټاپ څخه VPN دروازې ته ping، یا نږدې نوډ ته د سرعت ازموینه، هغې لارې ته چې لاګ واقعاً پرې ځي نږدې هیڅ هم نه ورټاکي۔ ډاډ ترلاسه کړئ چې د اندازې کړکۍ د ورو لیکلو ساعتونو سره سمون ولري۔

مخکې له دې چې څه بدل کړئ، د ریپلیکا حالت ولولئ

له هغه څخه پیل وکړئ چې انسټنسونه د ځانونو په اړه راپور ورکوي، ځکه دواړه خواوې ممکن د دې په اړه سره موافق نه وي چې ملګرتیا څومره روغه ده او د ډشبورډ اوسط پټوي چې کوم قطار ښیښي۔ لاندې پوښتنې بېلابېلو پوښتنو ته ځواب وایي: یوه د هر ډیټابیس لپاره د تکرار حالت لولي، بله لولي چې هر ریپلیکا څنګه تنظیم شوې۔ مخکې له دې چې کوم حالت ته لاس ووهئ، دواړه چل کړئ۔

SELECT ag.name AS ag_name, drs.database_id, drs.synchronization_state_desc,
       drs.log_send_queue_size, drs.redo_queue_size, drs.secondary_lag_seconds
FROM sys.dm_hadr_database_replica_states AS drs
JOIN sys.availability_groups AS ag ON ag.group_id = drs.group_id;

SELECT ar.replica_server_name, ar.availability_mode_desc, ar.failover_mode_desc
FROM sys.availability_replicas AS ar;

لومړنی پایله د لاګ لیږد له redo څخه جلا کوي۔ log_send_queue_size چې لوړیږي پداسې حال کې چې redo_queue_size هوار پاتې کیږي مانا دا ده چې لاګ نه دی رسیدلی؛ برعکس یې مانا دا ده چې رسیدلی او بیا چلول شاته دي۔ پر تصویب لاره یوازې لومړنی حالت ناست دی۔

دوهمه پایله تاییدوي چې کومې ریپلیکاوې واقعاً هغسې تنظیم شوې چې تاسو یې فرض کوئ، ځکه چې په پخواني پېښه کې بدل شوی حالت معمولاً بدل او بې اسناده پاتې کیږي۔ د ډلې د ډیفالټ پرځای هغه کرښه ولولئ چې تاسو ته مهمه ده: availability_mode_desc او failover_mode_desc د هر ریپلیکا لپاره دي۔ secondary_lag_seconds یوازې په SQL Server 2016 او وروستیو کې شته، نو زوړ جوړښت تاسو ته یوازې د لیږلو قطار او redo کالمونه پریږدي۔

بیا د ډشبورډ اوسط ته د باور کولو پرځای یو استازیتوب لیکل اندازه کړئ۔ لاندې بلاک په شتون ډیټابیس کې چل کړئ، بیا یې په همدې انسټنس کې د ډلې څخه بهر ډیټابیس کې د همدې جدول شکل په وړاندې بیا چل کړئ۔ د دواړو مودو ترمنځ توپیر د لرې لاګ نږدې بیه ده، او د شبکې ټیم سره په بحث کې ګراف ته په پرتله ډېر ښه ټینګ پاتې کیږي۔ له هغې وروسته په یو وخت کې یو متغیر بدل کړئ، که نه توپیر بیا هیڅ مانا نه لري۔

IF OBJECT_ID('dbo.CommitProbe') IS NULL
    CREATE TABLE dbo.CommitProbe (probe_id int PRIMARY KEY, touched_at datetime2(3));
IF NOT EXISTS (SELECT 1 FROM dbo.CommitProbe WHERE probe_id = 1)
    INSERT INTO dbo.CommitProbe (probe_id) VALUES (1);
SET STATISTICS TIME ON;
BEGIN TRANSACTION;
UPDATE dbo.CommitProbe SET touched_at = SYSUTCDATETIME() WHERE probe_id = 1;
COMMIT TRANSACTION;
SET STATISTICS TIME OFF;

ناهمغږي تصویب څه اخلي او څه لګښت لري

د ناهمغږي تصویب سره لومړنۍ ریپلیکا د لرې کلکیدو د تایید انتظار بندوي، نو تګ او راتګ د تصویب له لارې وځي۔ د تصویب ځنډ کمیږي او دوهمه ریپلیکا آزاده ده چې هغومره شاته پاتې شي چې هیڅوک یې نه کنټرولوي۔ دا د انتظار ریښتینی سمون او په ژمنه کې ریښتینی بدلون دی۔

بیه د بیا رغونې نقطې په اړه پریکړه ده۔ که لومړنۍ ریپلیکا مخکې له دې مړه شي چې لاګ یې هغه د ناکامۍ انتقال هدف ته ورسیږي چې تاسو یې واقعاً کارولی شئ، نو خدمت ناهمغږي کاپي ته لېږدول هغه معاملې غورځوي چې اپلیکیشن مخکې له مخکې تصویب شوې ګڼلې وې۔ هیڅ تنظیماتي خبرې اترې دا داسې نه ښیي، ځکه دا د منلو وړ زیان په اړه سوداګریزه پوښتنه ده، نه د فعالیت تنظیم۔ د زغملو وړ زیان کړکۍ مخکې له پېښې ولیکئ، نه د هغې په جریان کې۔

د معلوماتو له مالک سره په حالت سره په لیکلي ډول سره موافق شئ، د غوره هدف د نه شتون حالت لپاره د ناکامۍ انتقال د بهیر سره یوځای۔ په ډیزاین سند کې همغږي عملیاتي لارښود نه دی، او ناهمغږي د قطارونو څارلو د بندولو اجازه نه ده۔

هغه سمون وټاکئ چې وروسته یې دفاع کولی شئ

څلور ریښتیني انتخابونه شته۔ د تصویب هغه د تګ او راتګ چې کولی شي مخنیوی یې وشي، هلته قطع کړئ چې د اپلیکیشن مانا د ټولګې کولو اجازه ورکوي؛ هغه لیدل شوې لیږد یا زېرمه خنډ سم کړئ، چې کیدای شي پر دوهمه ریپلیکا د لوی پایپ پرځای چټک لاګ حجم مانا ولري؛ ریپلیکا نږدې کړئ تر څو تګ او راتګ کوچنی شي؛ یا د ساتنې تګلاره نرمه کړئ او پراخه زیان کړکۍ ومنئ۔ هر یو ځنډ په بل څه لګولو اخلي، او څلورم یې دوام لګوي۔ مخکې له ټاکلو لګښت ونوموئ۔

پریکړه وکړئ پداسې حال کې چې د کاري بار د ځنډ هدف او د هغې د دوام غوښتنه یوځای ستاسو مخې ته وي، ځکه د یو اصلاح کول په خاموشۍ بل لګوي۔ بیا هغه هماغه معامله چې مخکې له بدلون مو اندازه کړې وه بیا چل کړئ۔ هغه سمون چې نشي کولی دا شمیره وخوځوي یو اټکل دی چې د بدلون ټکټ یې اغوستی۔

په بدلون ریکارډ کې د مخکې او وروسته لوستنې وساتئ۔ که نه، بل کس چې ورو لیکل ویني، پلټنه له سره تکراروي او بیا د تونل تورنولو څخه پیل کوي۔

اړوندې مقالې