Ìdúró kíkọ fò sókè lẹ́yìn tí a gbé ẹ̀dà kan lọ sí ojú-ìwé kejì, àti pé ọ̀nà àbẹ̀wò ni ẹ̀yà tuntun jùlọ, nítorí náà ó gba ẹ̀bi. Ọ̀nà àbẹ̀wò lè jẹ́ aláìlẹ́bi: nínú ẹgbẹ́ wíwà pẹ̀lú commit alájọṣepọ̀, akọ́kọ́ kò lè gba commit káàkiri títí kíkọ log jíjìnnà yóò fi parí, nítorí náà gbogbo ìsọdọ̀tún san ìrìn àjò lọ àti padà, bó ti wù kí ìsopọ̀ gbé mélòó méjìbìtì. Ìmúkún ń dí ìkọ̀wé ní ojú-ẹ̀yà kan, ìdúró ń dí bí ìpààrọ̀ kan ṣe ń gba àkókò tó, àti pé commit kò nílò ju ìpààrọ̀ kékeré kan lọ láti parí. Nọ́mbà kan ṣoṣo yanjú àríyànjiyàn náà: àkókò commit ìsọdọ̀tún kékeré, tí a dí ní inú dátábésì wíwà àti lẹ́yìn náà ní ìdájú pẹ̀lú tábìlì àdúgbò lórí instance kan náà.

Ohun tí akọ́kọ́ ń dúró de gan-an

Nínú commit alájọṣepọ̀, akọ́kọ́ ń dá ìjẹ́rìí commit dúró títí alábàáṣiṣẹ́ yóò fi jẹ́rìí pé àwọn àkọsílẹ̀ log rẹ̀ ti ṣinṣin. Ṣinṣin túmọ̀ sí pé a kọ ọ́ sí log ìsọdọ̀tún ti èkejì ní ọ̀nà tí ó dúró, kì í ṣe pé a tún ṣe é nínú àwọn ojú-ìwé dátà rẹ̀. Redo lè sẹ́yìn ní ìṣẹ́jú láìfi ìlàjì kan péré kún commit akọ́kọ́.

Ìwé Microsoft nípa àwọn ipò wíwà ṣàlàyé ìfọwọ́kàn náà ó sì ṣàpèjúwe ohun tí pẹpẹ ń ṣe nígbà tí alábàáṣiṣẹ́ kan já bo. Ẹ̀dà tí a sàmì sí bí alájọṣepọ̀ jẹ́ òfin nípa dídúró, kì í ṣe ìlérí tí ó dúró pé ẹ̀dà jíjìnnà tí ó ní ìlera wà fún gbogbo commit. Ọ̀nà tí a gé kúrò ni a ṣàlàyé lọ́tọ̀, kì í sì í ṣe pé commit kùnà nìkan.

Nítorí náà dídúró tí o ń rí jẹ́ àpapọ̀: gbígbé log, ìṣètò lórí àwọn agbàlejò méjèèjì àti kíkọ sí ibi ìpamọ́ jíjìnnà. Èkejì tí ó ní ìwọ̀n log tí ó kún ń fi àkókò kún tí kò sí ìdánwò ìyára kankan tí yóò fi hàn. A kì í fi dííbà kan dí nígbà tí ẹ̀sùn náà dárúkọ VPN.

Ìbú láàárín kì í ṣe ìdúró ìrìn àjò lọ àti padà

Ìdánwò ìyára ń bo ọ̀nà náà lẹ́ẹ̀kan ó sì ń jábọ̀ ìwọ̀n kan. Commit béèrè ohun tí ó tóóró jù: bí ìfiránṣẹ́ kékeré kan ṣe ń gba àkókò tó láti dé ẹ̀gbẹ́ kejì, kí a fi pamọ́ kí ó sì padà. Gígùn ọ̀nà, ìlà àti pípadà àpò ń pinnu nọ́mbà náà, kò sì sí ọ̀kan nínú wọn tí ó ń dára sí i nígbà tí olùpèsè gbé òrùlé sókè.

Nítorí náà ọ̀nà àbẹ̀wò «yára» lè fi ìjìyà tí ó hàn kún ẹrù iṣẹ́ tí ó wúwo nínú kíkọ tí a kọ́ láti inú ọ̀pọ̀lọpọ̀ ìsọdọ̀tún kékeré tí ó tẹ̀le ara wọn. Àpapọ̀ báìtì kan náà tí a pín sí ẹgbẹ̀rún commit ń san ìrìn àjò lọ àti padà ní ẹgbẹ̀rún ìgbà; gbígbé ẹrù ńlá kan ń san án lẹ́ẹ̀kan.

Béèrè lọ́wọ́ olówó nẹ́tíwọ́kì kí ó dí ìdúró àti pípàdánù lórí ọ̀nà ẹ̀dà gan-an lábẹ́ ẹrù aṣojú. Ping láti kọ̀ǹpútà àgbáyé ọ́fíìsì sí ẹnubodè VPN, tàbí ìdánwò ìyára sí ipò tí ó súnmọ́, kò fi ohunkóhun fẹ́rẹ̀ẹ́ ka ọ̀nà tí log ń gbà gan-an. Rí i dájú pé fèrèsé ìdíwọ̀n náà bá àwọn wákàtí tí kíkọ ń lọ jẹ́ẹ́rẹ́.

Ka ipò ẹ̀dà kí o tó yí ohunkóhun padà

Bẹ̀rẹ̀ pẹ̀lú ohun tí àwọn instance ń jábọ̀ nípa ara wọn, nítorí pé ẹ̀gbẹ́ méjèèjì lè má fohùn ṣọ̀kan nípa bí àjọṣepọ̀ náà ṣe ní ìlera tó àti àpapọ̀ ojú-ìwé ìṣàkóso ń fi ipa tí ó ń rìn pa mọ́. Àwọn ìbéèrè ní ìsàlẹ̀ ń dáhùn àwọn ìbéèrè ọ̀tọ̀ọ̀tọ̀: ọ̀kan ń ka ipò àtúnṣe fún dátábésì kọ̀ọ̀kan, èkejì ń ka bí a ṣe ṣètò ẹ̀dà kọ̀ọ̀kan. Ṣe àwọn méjèèjì kí o tó fi ọwọ́ kan ipò kankan.

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;

Àbájáde àkọ́kọ́ ya gbígbé log kúrò lára redo. log_send_queue_size tí ó ń gòkè nígbà tí redo_queue_size dúró pẹ̀tẹ́lẹ̀ túmọ̀ sí pé log kò tíì dé; ìdàkejì rẹ̀ túmọ̀ sí pé ó ti dé àti pé àtúnṣe ń sẹ́yìn. Ipa àkọ́kọ́ nìkan ni ó jókòó lórí ọ̀nà commit.

Àbájáde kejì ń jẹ́rìí àwọn ẹ̀dà tí a ṣètò gan-an gẹ́gẹ́ bí o ṣe rò, nítorí pé ipò tí a yí padà nígbà ìṣẹ̀lẹ̀ àtẹ́lẹ̀ máa ń dúró bí a ti yí í padà láìsí ìwé. Ka ìlà tí ó kàn ọ́ dípò àìlábòsí ẹgbẹ́: availability_mode_desc àti failover_mode_desc jẹ́ fún ẹ̀dà kọ̀ọ̀kan. secondary_lag_seconds wà ní SQL Server 2016 àti ìgbà tí ó tẹ̀le nìkan, nítorí náà bíríkì àtijọ́ ń fi àwọn ọ̀wọ̀n ìlà ìfiránṣẹ́ àti redo sílẹ̀ fún ọ.

Lẹ́yìn náà dí kíkọ aṣojú kan dípò gbígbẹ́kẹ̀lé àpapọ̀ ojú-ìwé ìṣàkóso. Ṣe àkójọpọ̀ ní ìsàlẹ̀ nínú dátábésì wíwà, lẹ́yìn náà tún ṣe é ní ìdájú pẹ̀lú irú tábìlì kan náà nínú dátábésì tí ó wà ní ìta ẹgbẹ́ lórí instance kan náà. Ìyàtọ̀ láàárín àwọn àkókò méjèèjì jẹ́ iye owó tí kò tó àwọn log jíjìnnà, àti nínú àríyànjiyàn pẹ̀lú ẹgbẹ́ nẹ́tíwọ́kì ó dúró ṣinṣin ju àwòrán lọ. Lẹ́yìn náà yí àyípadà kan padà ní ìgbà kan, bí bẹ́ẹ̀ kọ́ ìyàtọ̀ náà kò ní túmọ̀ ohunkóhun mọ́.

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;

Kí ni commit aláìṣọ̀kan ń ra, kí ni ó ń ná

Pẹ̀lú commit aláìṣọ̀kan, akọ́kọ́ ń jáwọ́ dídúró de ìjẹ́rìí ṣíṣe ṣinṣin jíjìnnà, nítorí náà ìrìn àjò lọ àti padà ń kúrò ní ọ̀nà commit. Ìdúró commit ń sọ̀kalẹ̀ àti èkejì ní òmìnira láti sẹ́yìn ní ìwọ̀n tí kò sí ẹnikẹ́ni tí ń ṣàkóso. Ìyẹn jẹ́ àtúnṣe gidi fún dídúró àti ìyípadà gidi nínú ìlérí.

Iye owó náà jẹ́ ìpinnu nípa ibi ìmúpadàbọ̀sípò. Bí akọ́kọ́ bá kú kí log rẹ̀ tó dé àfojúsùn ìyípadà ìkùnà tí o lè lò gan-an, gbígbé iṣẹ́ lọ sí ẹ̀dà aláìṣọ̀kan ń sọ àwọn ìsọdọ̀tún tí ohun-èlò ti jábọ̀ pé wọ́n ti commit nù. Kò sí àpótí ìjíròrò ìṣètò kankan tí ń fi bẹ́ẹ̀ hàn, nítorí pé ìbéèrè ìṣòwò nípa pípàdánù tí a lè gbà ni, kì í ṣe ètò ìṣiṣẹ́. Kọ fèrèsé pípàdánù tí a lè faradà kí ìṣẹ̀lẹ̀ tó ṣẹlẹ̀, kì í ṣe nígbà tí ó ń ṣẹlẹ̀.

Fohùn ṣọ̀kan lórí ipò pẹ̀lú ẹni tí ó ni dátà náà, ní àkọsílẹ̀, pẹ̀lú ìlànà ìyípadà ìkùnà fún ọ̀rọ̀ tí àfojúsùn tí a fẹ́ kò sí. Alájọṣepọ̀ nínú ìwé àpẹẹrẹ kì í ṣe ìwé ìtọ́sọ́nà iṣẹ́, àti aláìṣọ̀kan kì í ṣe ìwé àṣẹ láti jáwọ́ ṣíṣe àkíyèsí àwọn ìlà.

Yan àtúnṣe tí o lè gbèjà lẹ́yìn náà

Àwọn àṣàyàn olóòótọ́ mẹ́rin wà. Gé àwọn ìrìn àjò commit lọ àti padà tí a lè yẹ̀wò kúrò níbi tí ìtumọ̀ ohun-èlò gbà ìṣàkójọpọ̀; tún àfojúsùn gbígbé tàbí ìpamọ́ tí o dí ṣe, èyí tí ó lè túmọ̀ sí ìwọ̀n log tí ó yára jù lórí èkejì dípò píìpù ńlá; sún ẹ̀dà náà mọ́ kí ìrìn àjò lọ àti padà dín kù; tàbí jẹ́ kí ìlànà ààbò rọ̀ kí o sì gba fèrèsé pípàdánù tí ó gbòòrò. Ọ̀kọ̀ọ̀kan ń ra ìdúró nípa ná ohun mìíràn, ẹ̀kẹrin sì ń ná ìdúróṣinṣin. Dárúkọ ìnáwó náà kí o tó yan.

Pinnu pẹ̀lú àfojúsùn ìdúró ẹrù iṣẹ́ àti ìbéèrè ìdúróṣinṣin rẹ̀ níwájú rẹ ní àkókò kan náà, nítorí pé ṣíṣe àtúnṣe ọ̀kan ń ná èkejì ní ìdákẹ́jẹ́. Lẹ́yìn náà tún ìsọdọ̀tún kan náà tí o dí kí ìyípadà tó ṣẹlẹ̀ ṣe. Àtúnṣe tí kò lè gbé nọ́mbà yẹn kúrò jẹ́ àròsọ tí ó wọ tikẹ́ẹ̀tì ìyípadà.

Fi àwọn ìkàwé ṣáájú àti lẹ́yìn pamọ́ nínú àkọsílẹ̀ ìyípadà. Bí bẹ́ẹ̀ kọ́ ẹni tí ó tẹ̀le tí ó rí kíkọ tí ó lọ jẹ́ẹ́rẹ́ yóò tún ìwádìí náà ṣe láti ìbẹ̀rẹ̀ yóò sì tún bẹ̀rẹ̀ ní fífi ẹ̀bi ọ̀nà àbẹ̀wò.

Àwọn àpilẹ̀kọ tó jọra