
(ts) Yandex.Images
Tá na carachtair go léir bréige, baineann trádmharcanna lena n-úinéirí, tá aon chosúlachtaí randamach agus go ginearálta, is é seo mo “bhreithiúnas ar luach suibiachtúil, le do thoil ná bris an doras...”.
Tá taithí nach beag againn ar chórais faisnéise a bhfuil loighic acu a aistriú isteach i mbunachar sonraí ó DBMS amháin go ceann eile. I gcomhthéacs fhoraithne an rialtais Uimh. 1236 an 16.11.2016 Samhain, XNUMX, is minic gur aistriú é seo ó Oracle go Postgresql. Is féidir linn a insint duit ar leithligh conas an próiseas a eagrú chomh héifeachtach agus chomh gan phian agus is féidir; inniu beimid ag caint faoi na gnéithe a bhaineann le braisle a úsáid agus cad iad na fadhbanna a d'fhéadfadh a bheith ann nuair a bhíonn córais dáilte an-ualach á dtógáil le loighic chasta i nósanna imeachta agus feidhmeanna.
Spoiler - tá, tá caipín, RAC agus pg multimaster réitigh an-difriúil.
Ligean le rá go bhfuil an loighic go léir aistrithe agat cheana féin ó plsql go pgsql. Agus tá do thástálacha aischéimniúcháin ceart go leor, anois ar ndóigh tá tú ag smaoineamh ar scálú, mar... ní chuireann tástálacha ualaigh an-áthas ort, go háirithe ar na crua-earraí a bhí san áireamh sa tionscadal ar dtús, don DBMS an-difriúil sin. Ligean le rá go bhfuair tú réiteach ón díoltóir baile "Postgres Professional" le rogha ar a dtugtar "multimaster", atá ar fáil ach amháin sa leagan "uasmhéid" de "Postgres Pro Enterprise" agus de réir an tuairisc - tá sé an-chosúil leis an méid atá uait, agus leis an gcéad staidéar superficial tiocfaidh an smaoineamh isteach i mo cheann: “Ó! In ionad RAC, sin é! Agus fiú le píblíne theicniúil inár dtír dhúchais!”
Ach ná bíodh deifir ort le lúcháir a dhéanamh, agus ina theannta sin déanfaimid cur síos ar an bhfáth go gcaithfidh tú na nuances seo a bheith ar eolas agat, mar... is deacair iad a thuar, fiú tar éis doiciméadú an táirge a léamh go críochnúil. Déan measúnú an bhfuil tú réidh chun leaganacha DBMS a nuashonrú go minic go díreach ar an láithreán táirgthe, mar gheall ar Níl roinnt lochtanna comhoiriúnach le húsáid thionsclaíoch agus is deacair iad a bhrath le linn tástála.
Tosaigh tríd an rannán "ilmháistir" - "teorainneacha" ar shuíomh Gréasáin an mhonaróra a léamh go cúramach.
Is é an chéad rud a d'fhéadfadh teacht ort ná na tréithe a bhaineann le conas a oibríonn idirbhearta, mar a thugtar air. mód “dhá chéim”, agus uaireanta níl aon bhealach ann é seo a shocrú ach amháin trí loighic iomlán do nós imeachta a athscríobh. Seo sampla simplí:
create table test1 (id integer, id1 integer);
insert into test1 values (1, 1),(1, 2);
ALTER TABLE test1 ADD CONSTRAINT test1_uk UNIQUE (id,id1) DEFERRABLE INITIALLY DEFERRED;
update test1
set id1 =
case id1
when 1
then 2
else id1 - sign(2 - 1)
end
where id1 between 1 and 2;Tarlaíonn earráid:
ОШИБКА: [MTM] Transaction MTM-1-2435-10-605783555137701 (10654) is aborted on node 3. Check its log to see error details.Ansin is féidir leat troid ar feadh i bhfad le glas marbh i leaganacha 10.5, 10.6, agus is é an t-aon réiteach ar a dtugtar a mharaíonn bunús iomlán an bhraisle ná táblaí “fadhbanna” a bhaint den bhraisle, i.e. dhéanamh make_table_local, ach beidh sé seo ar a laghad a cheadaíonn dó a bheith ag obair, agus ní bheidh gach rud a chur ar fionraí mar gheall ar fanacht crochta le haghaidh gealltanais idirbheart. Bhuel, nó suiteáil nuashonrú ar leagan 11.2, rud a chabhródh, ach b'fhéidir nach ea, ná déan dearmad seiceáil.
I roinnt leaganacha is féidir leat glas níos mistéireach fós a fháil:
username= mtm и backend_type = background workerAgus sa chás seo, ní bheidh ach an leagan DBMS a nuashonrú go 11.2 agus níos airde ina chabhair duit, nó b'fhéidir nach gcabhróidh sé.
Is féidir earráidí a bheith mar thoradh ar roinnt oibríochtaí le hinnéacsanna, rud a léiríonn go soiléir go bhfuil an fhadhb i Macasamhlú Déthreo; feicfidh tú BDR go díreach sna logaí MTM. An 2ndQuadrant é i ndáiríre? Ní hea... cheannaigh muid ilmháistir, níl ann ach comhtharlú, is é ainm na teicneolaíochta é.
[MTM] bdr doesn't support index rechecks
[MTM] 12124: REMOTE begin abort transaction 4083
[MTM] 12124: send ABORT notification for transaction (5467) local xid=4083 to coordinator 3
[MTM] Receive ABORT_PREPARED logical message for transaction MTM-3-25030-83-605694076627780 from node 3
[MTM] Abort prepared transaction MTM-3-25030-83-605694076627780 status InProgress from node 3 originId=3
[MTM] MtmLogAbortLogicalMessage node=3 transaction=MTM-3-25030-83-605694076627780 lsn=9fff448 Má tá táblaí sealadacha á n-úsáid agat, in ainneoin na ndearbhuithe: “Déanann an síneadh ilmháistir macasamhlú sonraí ar bhealach iomlán uathoibríoch. Is féidir leat idirbhearta scríofa a dhéanamh ag an am céanna agus oibriú le táblaí sealadacha ar aon nód sa bhraisle.”
Ansin i ndáiríre gheobhaidh tú nach n-oibríonn macasamhlú ar fud na dtáblaí go léir a úsáidtear sa nós imeachta, má tá cruthú tábla sealadach sa chód, agus fiú nach gcabhróidh úsáid multimaster.remote_functions, beidh ort do loighic a nuashonrú nó a athscríobh i an nós imeachta. Más gá duit dhá shíneadh multimaster agus pg_pathman a úsáid go comhuaineach laistigh de Postgres Pro Enterprise v 10.5, seiceáil é sin leis an sampla simplí seo:
CREATE TABLE measurement (
city_id int not null,
logdate date not null,
peaktemp int,
unitsales int
) PARTITION BY RANGE (logdate);
CREATE TABLE measurement_y2019m06 PARTITION OF measurement FOR VALUES FROM ('2019-06-01') TO ('2019-07-01');
insert into measurement values (1, to_date('27.06.2019', 'dd.mm.yyyy'), 1, 1);
insert into measurement values (2, to_date('28.06.2019', 'dd.mm.yyyy'), 1, 1);
insert into measurement values (3, to_date('29.06.2019', 'dd.mm.yyyy'), 1, 1);
insert into measurement values (4, to_date('30.06.2019', 'dd.mm.yyyy'), 1, 1);Tosaíonn na hearráidí seo a leanas le feiceáil sna logaí ar na nóid DBMS:
…
PATHMAN_CONFIG doesn't contain relation 23245
> find_in_dynamic_libpath: trying "/opt/…/ent-10/lib/pg_pathman"
> find_in_dynamic_libpath: trying "/opt//…/ent-10/lib/pg_pathman.so"
> ОТЛАДКА: find_in_dynamic_libpath: trying "/opt/…/ent-10/lib/pg_pathman"
> find_in_dynamic_libpath: trying "/opt/…/ent-10/lib/pg_pathman.so"
> PrepareTransaction(1) name: unnamed; blockState: PREPARE; state: INPROGR, xid/subid/cid: 6919/1/40
> StartTransaction(1) name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0
> switched to timeline 1 valid until 0/0
…
Transaction MTM-1-13604-7-612438856339841 (6919) is aborted on node 2. Check its log to see error details.
...
[MTM] 28295: REMOTE begin abort transaction 7017
…
[MTM] 28295: send ABORT notification for transaction (6919) local xid=7017 to coordinator 1
Is féidir leat a fháil amach cad iad na hearráidí seo sa tacaíocht theicniúil, níl sé in vain gur cheannaigh tú é.
Cad atá le déanamh? Ceart! Uasghrádú go "Postgres Pro Enterprise" v 11.2
Ar leithligh, ní mór duit fios a bheith agat nach bhfuil luach ceann go ceann ar fud an bhraisle ag an seicheamh sin, toisc gur réad de bhunachar sonraí athdhéanta é, tá gach seicheamh áitiúil do gach nód agus má tá réimsí agat le srianta uathúla agus seicheamh úsáide, ansin ní féidir leat a dhéanamh ach incrimint comhionann leis an uimhir nód i mbraisle, mar gheall ar An oiread nóid sa bhraisle agus is féidir, fásfaidh seicheamh agus slánuimhir níos tapúla ná mar a bhí súil agat. Chun oibriú le seicheamh sa táirge a shimpliú gheobhaidh tú fiú an fheidhm alter_sequences, a dhéanfaidh na hincrimintí riachtanacha do gach seicheamh ar gach nóid, ach bí réidh nach n-oibreoidh an fheidhm i ngach leagan. Ar ndóigh, is féidir leat é a scríobh tú féin, ag baint úsáide as an gcód ó github mar bhunús nó é a cheartú go díreach sa DBMS. Sa chás seo, oibreoidh réimsí leis an gcineál sraitheach sraitheach i gceart, ach chun iad a úsáid, is dóichí go mbeidh ort cód do nósanna imeachta agus feidhmeanna a athscríobh. B'fhéidir go mbeidh an fheidhm monotonic_seicheamhaí úsáideach do dhuine.
Roimh leagan 11.2 de Postgres Pro Enterprise, ní oibreoidh macasamhlú ach amháin má tá príomheochracha uathúla ann, cuir é seo san áireamh agus tú ag forbairt.
Ar leithligh, ba mhaith liom na tréithe a bhaineann le conas a oibríonn npgsql i réiteach braisle a lua; ní thagann na fadhbanna seo chun cinn ar aon nód amháin, ach tá siad i láthair go leor i multimaster.
I roinnt leaganacha seans go dtiocfaidh earráid ort:
Exception Details: Npgsql.PostgresException: 25001: команда SET TRANSACTION ISOLATION LEVEL
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Cad is féidir a dhéanamh? Níl le déanamh agat ach roinnt leaganacha a úsáid. Ní mór duit iad a bheith ar an eolas, mar ... Tá an earráid le feiceáil i níos mó ná leagan amháin, agus fiú tar éis a chéad shocrú, seans go dtiocfaidh tú trasna air níos déanaí. Ní mór duit a bheith ullamh dó seo freisin agus is fearr na lochtanna DBMS aitheanta go léir a cheartaíonn an monaróir a chlúdach le tástálacha aischéimniúcháin ar leith. Mar sin a labhairt, muinín, ach a fhíorú.
Má úsáideann an feidhmchlár npgsql agus má athraíonn sé idir nóid ag smaoineamh go bhfuil siad go léir mar an gcéanna, d'fhéadfadh go bhfaighidh tú earráid:
EXCEPTION:Npgsql.PostgresException (0x80004005): XX000: cache lookup failed for type ...Tarlóidh an earráid seo toisc go bhfuil an ceangal ar siúl
(NpgsqlConnection.GlobalTypeMapper.MapComposite<SomeType>("some_composite_type");) cineálacha ilchodacha ag am tosaithe feidhmchláir do gach nasc. Mar thoradh air sin, faigheann muid aitheantóir ó nód amháin, agus nuair a iarraidh ar nód eile, ní ionann é, agus mar thoradh ar a bhfuil earráid ar ais, i.e. Ní bheifear in ann oibriú go trédhearcach le cineálacha ilchodacha i mbraisle i gcás roinnt feidhmchlár gan athscríobh breise ar thaobh an fheidhmchláir (má éiríonn leat é sin a dhéanamh).
Mar is eol dúinn go léir, tá measúnú foriomlán ar staid an bhraisle an-tábhachtach le haghaidh diagnóisic agus bearta oibríochtúla le linn oibríochta, sa táirge is féidir leat roinnt feidhmeanna a fháil ar cheart do shaol a dhéanamh níos éasca, ach uaireanta is féidir leo rud éigin go hiomlán difriúil a thabhairt ón méid tá tú féin agus fiú an monaróir féin ag súil uathu a bhfuil tú ag súil leo.
Mar shampla:
select mtm.collect_cluster_info();
на каждой ноде выдает одинаковый результат:
(1,Online,0,0,0,2,3,0,0,0,1,0,0,1,1,3,7,0,0,0,"2018-10-31 05:33:06")
(2,Online,0,0,0,2,3,0,0,0,1,0,0,1,1,3,7,0,0,0,"2018-10-31 05:33:06")
(3,Online,0,0,0,2,3,0,0,0,1,0,0,1,1,3,7,0,0,0,"2018-10-31 05:33:09")Ach cén fáth a bhfuil an uimhir 2 i ngach áit sa réimse LiveNodes, cé gur chóir go gcomhfhreagródh sé don uimhir AllNodes = 3 de réir an tuairisc ar oibríocht an ilmháistir? Freagra: ní mór duit an leagan DBMS a nuashonrú.
Agus bí réidh le logaí a bhailiú do gach nóid, mar... de ghnáth feicfidh tú "tá an earráid i logáil nód eile." Glacfaidh tacaíocht theicniúil leis na lochtanna go léir a shainaithníonn tú agus cuirfidh tú in iúl duit go bhfuil an chéad leagan eile réidh, a chaithfear a shuiteáil uaireanta leis an tseirbhís a stopadh, uaireanta ar feadh i bhfad (ag brath ar mhéid do DBMS). Níor cheart duit a bheith ag súil go gcuirfidh fadhbanna oibríochtúla isteach go mór ar an díoltóir, agus déanfar an nuashonrú mar gheall ar lochtanna aitheanta le rannpháirtíocht ionadaithe an díoltóra, nó ina áit sin, ní gá duit fiú ionadaithe an díoltóra a bheith páirteach, ós rud é sa deireadh is féidir leat deireadh suas le braisle disassembled i dtáirgeadh gan cúltaca.
I ndáiríre, sa cheadúnas do tháirge tráchtála, tugann an monaróir foláireamh go hionraic: “Cuirtear na bogearraí seo ar fáil ar bhonn “mar atá” agus níl aon oibleagáid ar Postgres Professional Dliteanais Company cothabháil, tacaíocht, nuashonruithe, síntí nó athruithe a sholáthar.”
Mura ndearna tú buille faoi thuairim fós cén táirge a bhfuilimid ag caint faoi, fuarthas an taithí seo go léir mar thoradh ar oibriú bliana ar bhunachar sonraí Postgres Pro Enterprise. Is féidir leat do chonclúid féin a tharraingt, tá sé chomh tais go bhfásann beacáin.
Ach ní bheadh sé seo chomh dona dá ndéanfaí é go tráthúil agus go gcuirfí deireadh go pras le fadhbanna a tháinig chun cinn.
Ach is é seo go beacht cad nach dtarlóidh. Is cosúil nach bhfuil go leor acmhainní ag an monaróir chun fabhtanna aitheanta a dhíchur go pras.
Ní féidir ach le húsáideoirí cláraithe páirt a ghlacadh sa suirbhé. , le do thoil.
An bhfuil taithí agat ar aistriú ó DBMS eachtrach/dílseánaigh go ceann saor/tí?
21,3%Sea, dearfach10
10,6%Sea, diúltach5
21,3%Níor athraíodh an DBMS10
4,3%Athraíodh an DBMS, ach níor athraigh rud ar bith2
42,6%Féach ar thorthaí20
Vótáil 47 úsáideoir. Staon 12 úsáideoir.
Foinse: will.com
