Zergatik zure SQL baieztapen sinkronoak VPNeko joan-etorria itxaroten duen
Erabilgarritasun talde bateko baieztapen sinkronoak urruneko logaren gogortzea barne hartzen du. Neurtu bide hori banda-zabalera erruduntzat jo edo modua aldatu aurretik.
Idazteko latentzia salto egin zuen erreplika bat bigarren gunera mugitu ondoren, eta tunela da osagairik berriena, beraz, hark hartzen du errua. Tunela errugabea izan daiteke: baieztapen sinkronoa duen erabilgarritasun talde baten barruan primarioak ezin du baieztapen bat onartu urruneko log idazketa bat osatu arte, beraz, transakzio bakoitzak joan-etorri bat ordaintzen du estekak zenbat megabit garraia ditzakeen edozein dela ere. Errendimenduak segundo bakoitzeko byteak neurtzen ditu, latentziak truke batek zenbat irauten duen neurtzen du, eta baieztapen batek truke txiki bat baino ez du behar amaitzeko. Zenbaki batek erabakitzen du eztabaida: transakzio txiki baten baieztapenaren iraupena, erabilgarritasun datu-basean neurtuta eta gero instantzia bereko taula lokal baten aurka berriro neurtuta.
Zeren zain dagoen primarioa benetan
Baieztapen sinkronoarekin primarioak baieztapenaren oihartzuna atxikitzen du bazkideak bere log erregistroak gogortuta daudela baieztatu arte. Gogortuta esan nahi du sekundarioaren transakzio-logean iraunkorki idatzita, bere datu-orrietan berriz exekutatu gabe. Redo minutuka atzeratu daiteke primarioaren baieztapenari milisegundo bat ere gehitu gabe.
Microsoft-en erabilgarritasun moduei buruzko dokumentazioa eskuko agur hori azaltzen du eta plataformak bazkidea erortzen denean zer egiten duen deskribatzen du. Sinkronotzat markatutako erreplika itxarotearen inguruko araua da, ez baieztapen bakoitzerako urruneko kopia osasuntsu bat dagoelako promesa iraunkorra. Deskonektatutako bidea bereizita definitzen da, eta ez da soilik baieztapena huts egiten duela.
Beraz, ikusten duzun itxaronaldia batuketa bat da: log garraioa, bi ostalarietan plangintza eta urruneko biltegiko idazketa. Log bolumen saturatuak dituen sekundarioak inongo abiadura-probak erakutsiko ez duen denbora gehitzen du. Disko hori gutxitan neurtzen da salaketak VPN aipatzen duenean.
Banda-zabalera ez da joan-etorriko atzerapena
Abiadura-probak bidea laburki gainezkatzen du eta tasa bat jakinarazten du. Baieztapenak zerbait estuagoa eskatzen du: zenbat denbora behar duen mezu txiki batek beste aldera iristeko, gordetzeko eta itzultzeko. Bidearen luzerak, ilarak eta pakete-galerak zehazten dute zenbaki hori, eta horietako batek ere ez du hobera egiten hornitzaileak sabaia igotzen duenean.
Beraz, «azkar» batek zigor ikusgai bat gehi diezaioke transakzio txiki sekuentzial askoz osatutako idazketa-lan astunari. Byte-kopuru bera mila baieztapenen artean banatuta joan-etorria mila aldiz ordaintzen du; garraio masibo batek behin ordaintzen du.
Eskatu sarearen jabeari atzerapena eta galera erreplikaren ibilbidearen gainean neurtzeko, karga adierazgarriaren pean. Bulegoko eramangarri batetik VPN atebidera egindako ping batek, edo inguruko nodo batera egindako abiadura-probak, ia ezer ez dio egozten logak benetan egiten duen ibilbideari. Egin neurketa-leihoa idazketa motela den orduetan sartzeko.
Irakurri erreplikaren egoera ezer aldatu aurretik
Hasi instantziek euren buruari buruz jakinarazten dutenetik, bi aldeek bat egin ez dezaketelako elkarteak zenbat osasun duen eta panelaren batez bestekoak ezkutatzen du zein ilara mugitzen den. Beheko kontsultek galdera desberdinak erantzuten dituzte: batek datu-base bakoitzeko erreplikazio-egoera irakurtzen du, besteak erreplika bakoitza nola konfiguratuta dagoen irakurtzen du. Exekutatu biak modu bat ukitu aurretik.
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;
Lehen emaitzak log garraioa redotik bereizten du. log_send_queue_size igotzen ari den bitartean redo_queue_size laua badago, loga ez da iritsi; alderantzizkoak iritsi dela eta erreprodukzioa atzetik dabilela esan nahi du. Lehen kasua soilik dago baieztapenaren bidean.
Bigarren emaitzak egiaztatzen du zein erreplika dauden benetan zuk uste duzun moduan konfiguratuta, lehengo gorabehera batean aldatutako moduak aldatuta eta dokumentatu gabe jarraitzen baitu normalean. Irakurri axola zaizun errenkada taldearen balio lehenetsiaren ordez: availability_mode_desc eta failover_mode_desc erreplika bakoitzeko dira. secondary_lag_seconds SQL Server 2016 eta berriagoetan bakarrik dago, beraz, eraikuntza zaharrago batek bidalketa-ilararen eta redoaren zutabeekin uzten zaitu.
Ondoren neurtu idazketa adierazgarri bat panelaren batez bestekoan fidatu beharrean. Exekutatu beheko blokea erabilgarritasun datu-basean, eta gero exekutatu berriro taula-forma beraren aurka taldetik kanpoko datu-base batean instantzia berean. Bi iraupenen arteko aldea urruneko logaren prezio zakarra da, eta sare-taldearekin eztabaida batean grafiko batek baino askoz hobeto eusten du. Ondoren aldatu aldagai bat aldi berean, bestela aldeak ez du ezer esan nahi izango.
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;
Zer erosten duen baieztapen asinkronoak eta zenbat kostatzen den
Baieztapen asinkronoarekin primarioak urruneko gogortzearen baieztapenaren zain egoteari uzten dio, beraz, joan-etorria baieztapenaren bidetik ateratzen da. Baieztapenaren latentziak behera egiten du eta sekundarioa libre da inork kontrolatzen ez duen neurrian atzeratzeko. Hori itxaronaldirako konponbide erreala da eta promesarako aldaketa erreala.
Prezioa berreskuratze-puntuaren erabakia da. Primarioa hiltzen bada bere loga benetan erabil dezakezun failover helmugara iritsi aurretik, zerbitzua kopia asinkronora eramateak aplikazioak baieztatutzat jakinarazi dituen transakzioak botatzen ditu. Inongo konfigurazio-elkarrizketak ez du horrela aurkezten, galera onargarriari buruzko negozio-galdera delako, ez errendimendu-ezarpena. Idatzi jasaten den galera-leihoa gorabeheraren aurretik, ez bitartean.
Adostu modua datuen jabearekin, idatziz, nahiago den helmuga eskuragarri ez den kasurako failover prozedurarekin batera. Sinkronoa diseinu-dokumentu batean ez da eragiketa-eskuliburu bat, eta asinkronoa ez da ilarak behatzeari uzteko baimena.
Aukeratu gero defenda dezakezun konponbide bat
Lau aukera zintzo daude. Moztu saihestekoak diren baieztapenaren joan-etorriak aplikazioaren semantikak sortak egitea onartzen duen tokian; konpondu neurtu duzun garraio- edo biltegi-lepoa, eta horrek sekundarioan log bolumen azkarragoa esan dezake hodi handiagoa izan beharrean; hurbildu erreplika joan-etorria txikitu dadin; edo lasaitu babes-politika eta onartu galera-leiho zabalagoa. Bakoitzak latentzia erosten du beste zerbait gastatuz, eta laugarrenak iraunkortasuna gastatzen du. Izenda ezazu gastua aukeratu aurretik.
Erabaki lan-kargaren latentzia-helburua eta iraunkortasun-betekizuna aldi berean aurrean dituzula, bata optimizatzeak bestea isilka gastatzen duelako. Gero exekutatu berriro aldaketaren aurretik neurtu zenuen transakzio bera. Zenbaki hori mugitu ezin duen konponbidea aldaketa-txartel bat daraman uste bat da.
Gorde aurretiko eta osteko irakurketak aldaketa-erregistroan. Bestela, idazketa motelak ikusten dituen hurrengo pertsonak hasieratik errepikatzen du ikerketa eta tunelei errua botatzen hasten da berriro.