
(ts) Yandex.Ăomhaighean
Tha na caractaran uile ficseanail, buinidh na comharran-malairt dha na sealbhadairean fa leth aca, tha coltas sam bith dĂŹreach co-thuiteamas agus, san fharsaingeachd, is e seo mo âbhreithneachadh luach pearsanta, na bris sĂŹos an dorasâŚâ.
Tha eòlas farsaing againn air siostaman fiosrachaidh le loidsig stòr-dĂ ta a ghluasad bho aon DBMS gu fear eile. A rèir RĂšn an Riaghaltais Ăir. 1236 air 16 Samhain, 2016, bidh seo gu tric aâ toirt a-steach gluasad bho Oracle gu PostgreSQL. Is urrainn dhuinn beachdachadh air mar a chuireas sinn am pròiseas seo air dòigh cho èifeachdach agus cho furasta âs a ghabhas air leth. An-diugh, bruidhnidh sinn air mion-fhiosrachadh cleachdadh cruinneachadh agus na dĂšbhlain a dhâ fhaodadh tu a bhith an aghaidh nuair a bhios tu aâ togail shiostaman sgaoilte Ă rd-luchd le loidsig iom-fhillte ann an modhan-obrach agus gnĂŹomhan.
Spoiler: tha, tha cap, RAC agus pg multimaster nan fuasglaidhean gu math eadar-dhealaichte.
Abair gu bheil thu air do loidsig gu lèir a ghluasad bho plsql gu pgsql mu thrĂ th. Agus tha na deuchainnean ath-tharraing agad gu tur ceart gu leòr. A-nis tha thu gu nĂ darrach aâ smaoineachadh mu bhith aâ sgèileadh, leis nach eil deuchainnean luchdan na chĂšis mhòr, gu sònraichte air aâ bhathar-chruaidh a chaidh a dhealbhadh an toiseach airson an DBMS eile sin. Abair gu bheil thu air fuasgladh fhaighinn bho sholaraiche dachaigheil, Postgres Professional, le feart ris an canar âmultimaster,â nach eil ri fhaighinn ach anns an dreach âdeireannachâ, Postgres Pro Enterprise. Aâ breithneachadh bhon tuairisgeul, tha e glè choltach ris na dhâ fheumas tu, agus air aâ chiad sealladh, is dòcha gum bi thu aâ smaoineachadh, âO! DĂŹreach an rud an Ă ite RAC! Agus le taic theicnigeach dachaigheil cuideachd!â
Ach na bi ro thoilichte. MĂŹnichidh sinn carson a dhâfheumas tu a bhith mothachail air na diofaran beaga seo, oir tha iad duilich an ro-innse, eadhon an dèidh dhut sgrĂŹobhainnean an toraidh a leughadh gu faiceallach. Beachdaich a bheil thu deiseil airson dreachan DBMS Ăšrachadh gu tric gu dĂŹreach air an lĂ rach riochdachaidh, oir chan eil cuid de lochdan co-chòrdail ri cleachdadh riochdachaidh agus tha iad duilich an lorg rè deuchainnean.
Tòisich le bhith aâ leughadh gu faiceallach an earrann âmultimasterâ - âcuingealachadhâ air lĂ rach-lĂŹn an neach-dèanamh.
Is e aâ chiad rud a dhâ fhaodadh tu a thighinn tarsainn air na rudan sònraichte a tha an lĂšib mar a bhios gnothaichean ag obair anns aâ mhodh ris an canar âdĂ -ĂŹreâ, agus uaireannan chan eil dòigh ann air seo a chĂ radh ach ath-sgrĂŹobhadh loidsig iomlan do mhodh-obrach. Seo eisimpleir sĂŹmplidh:
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;Thachair mearachd:
ĐШĐĐĐĐ: [MTM] Transaction MTM-1-2435-10-605783555137701 (10654) is aborted on node 3. Check its log to see error details.Faodaidh tu leantainn air adhart aâ strĂŹ le bacaidhean ann an dreachan 10.5 agus 10.6 airson Ăšine mhòr, agus is e an aon fhuasgladh aithnichte, a sgriosas puing iomlan cruinneachadh gu tur, na clĂ ran âduilgheadaisâ a thoirt air falbh bhon chruinneachadh, i.e., aâ ruith make_table_local. Ach leigidh seo le rudan obrachadh co-dhiĂš, seach a bhith aâ tuiteam a h-uile cĂ il air sgĂ th feitheamh ri gnothaichean a dhèanamh. No faodaidh tu Ăšrachadh gu dreach 11.2, a bu chòir cuideachadh, ach is dòcha nach cuidich - bi cinnteach gun dèan thu sgrĂšdadh.
Ann an cuid de dhreachan, is dòcha gum faigh thu glas eadhon nas dÏomhaire:
username= mtm и backend_type = background workerAgus san t-suidheachadh seo, cha chuidich Úrachadh an dreach DBMS gu 11.2 no nas à irde thu, ach is dòcha nach cuidich e.
Faodaidh cuid de ghnĂŹomhachd clĂ r-amais mearachdan adhbhrachadh a tha aâ nochdadh gu soilleir gur e Ath-riochdachadh DĂ -shligheach a thâ ann; chĂŹ thu BDRan anns na logaichean MTM. An e 2naCeathramh a thâ ann? Chan eil... cheannaich sinn multimaster, chan eil ann ach co-thuiteamas; is e sin ainm na teicneòlais.
[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 Ma tha thu aâ cleachdadh chlĂ ran sealach, a dhâaindeoin nan geallaidhean: âBidh an leudachadh ioma-mhaighstir aâ dèanamh ath-riochdachadh dĂ ta gu tur fèin-ghluasadach. Faodaidh tu gnothaichean sgrĂŹobhaidh a ruith aig an aon Ă m agus obrachadh le clĂ ran sealach air nĂłd cruinneachaidh sam bith."
Gu dearbh, thig crĂŹoch air an ath-riochdachadh nach obraich thar gach clĂ r a thathar aâ cleachdadh sa mhodh-obrach ma chruthaicheas an còd clĂ r sealach, agus cha chuidich eadhon cleachdadh multimaster.remote_functions. Feumaidh tu an loidsig agad Ăšrachadh no ath-sgrĂŹobhadh sa mhodh-obrach. Ma dhâ fheumas tu an dĂ leudachan multimaster agus pg_pathman a chleachdadh aig an aon Ă m ann am Postgres Pro Enterprise v10.5, dèan cinnteach gu bheil an eisimpleir shĂŹmplidh seo ag obair:
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);Bidh na mearachdan a leanas aâ tòiseachadh aâ nochdadh anns na logaichean air na nĂłdan 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
Gheibh thu a-mach dè na mearachdan seo le bhith aâ cur fios gu taic theicnigeach; cha bâ ann gun adhbhar a cheannaich thu e.
Dè bu chòir dhomh a dhèanamh? Tha sin ceart! Ăraich gu Postgres Pro Enterprise (v11.2).
Tha e cudromach a thoirt fa-near nach eil luach cunbhalach aig sreath, leis gur e nĂŹ stòr-dĂ ta ath-riochdaichte a thâ ann, air feadh aâ chruinneachaidh gu lèir. Tha gach sreath ionadail do gach nĂłd. Ma tha raointean agad le cuingealachaidhean sònraichte a bhios aâ cleachdadh sreath, chan urrainn dhut ach Ă rdachadh leis an Ă ireamh nĂłd cruinneachaidh. Tha seo aâ ciallachadh, mar as motha de nĂłdan anns aâ chruinneachadh, âs ann as luaithe a dhâfhĂ sas an sreath agad, agus ruithidh an dĂ chuid sreath agus int a-mach nas luaithe na bha dĂšil. Gus obair le sreathan a dhèanamh nas sĂŹmplidhe, tha gnĂŹomh alter_sequences anns an toradh eadhon, a nĂŹ na h-Ă rdachaidhean riatanach airson gach sreath air na nĂłdan uile. Ach, bi mothachail nach obraich an gnĂŹomh seo anns a h-uile dreach. Gu dearbh, faodaidh tu a sgrĂŹobhadh thu fhèin, aâ cleachdadh aâ chòd bho GitHub no ga atharrachadh gu dĂŹreach anns an DBMS. Bidh raointean Serialbigserial ag obair nas ceart, ach is dòcha gum feum thu na modhan-obrach agus na gnĂŹomhan agad ath-sgrĂŹobhadh ma chleachdas tu iad. Is dòcha gum bi an gnĂŹomh monotonic_sequences feumail do chuideigin.
Ro Postgres Pro Enterprise 11.2, cha bhith ath-riochdachadh ag obair ach ma tha prĂŹomh iuchraichean sònraichte ann, mar sin cumaibh seo san amharc nuair a bhios sibh aâ dealbhadh.
Bu mhath leam cuideachd iomradh a thoirt air mion-fhiosrachadh obrachadh npgsql ann am fuasgladh cruinneachaidh. Chan eil na duilgheadasan seo ag èirigh air aon nód, ach tha iad gu math follaiseach ann am fuasgladh ioma-mhaighstir.
Ann an cuid de dhreachan dhâ fhaodadh tu mearachd fhaighinn:
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. Dè a ghabhas dèanamh? Seachain dĂŹreach dreachan sònraichte a chleachdadh. Tha e cudromach fios a bhith agad orra, oir tha am biast aâ nochdadh ann am barrachd air aon dreach, agus eadhon an dèidh a chĂ radh tĂšsail, is dòcha gun tig thu tarsainn air nas fhaide air adhart. Bu chòir dhut a bhith deiseil airson seo cuideachd, agus tha e nas fheĂ rr a h-uile locht DBMS a chaidh a chomharrachadh a bhios an neach-reic aâ cĂ radh a chòmhdach le deuchainnean ath-tharraing fa leth. Earbsa, ach dearbhaich, mar gum biodh.
Ma chleachdas an aplacaid agad npgsql agus ma bhios e ag atharrachadh eadar nĂłdan, aâ smaoineachadh gu bheil iad uile mar an ceudna, is dòcha gun tig thu tarsainn air aâ mhearachd a leanas:
EXCEPTION:Npgsql.PostgresException (0x80004005): XX000: cache lookup failed for type ...Tachair am mearachd seo leis gu bheil an ceangal aâ dol air adhart.
(NpgsqlConnection.GlobalTypeMapper.MapComposite<SomeType>("some_composite_type");) Bithear aâ cleachdadh seòrsachan co-dhèanta aig Ă m tòiseachaidh an aplacaid airson a h-uile ceangal. Mar thoradh air an sin, chan eil comharraiche a gheibhear bho aon nĂłd aâ freagairt nuair a thèid iarraidh air nĂłd eile, agus mar thoradh air sin bidh mearachd ann. Tha seo aâ ciallachadh gum bi e do-dhèanta obrachadh gu follaiseach le seòrsachan co-dhèanta ann an cruinneachadh airson cuid de dhâaplacaidean Ă s aonais ath-sgrĂŹobhaidhean a bharrachd air taobh an aplacaid (ma tha e comasach dhut sin a dhèanamh).
Mar a tha fios againn uile, tha measadh iomlan air slĂ inte aâ chnuic deatamach airson breithneachadh agus eadar-theachdan obrachaidh. Tha cuid de fheartan anns an toradh a bu chòir do bheatha a dhèanamh nas fhasa, ach uaireannan is dòcha nach toir iad seachad na tha thusa, no eadhon an neach-dèanamh, an dĂšil.
Mar eisimpleir:
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 carson a tha an à ireamh 2 an-còmhnaidh air a shealltainn san raon LiveNodes, eadhon ged a tha tuairisgeul an multimaster ag rà dh AllNodes = 3? Freagairt: Feumaidh tu an dreach DBMS agad Úrachadh.
Bi deiseil airson logaichean a chruinneachadh airson gach nĂłd, oir mar as trice chĂŹ thu âmearachd suidhichte ann an loga nĂłd eile.â Gabhaidh taic theicnigeach ris na h-uireasbhaidhean uile a chomharraich thu agus cuiridh iad fios thugad nuair a bhios an ath dhreach deiseil, a dhâ fheumas Ăšine downt uaireannan, uaireannan eadhon airson Ăšine mhòr (a rèir meud an DBMS agad). Na bi an dĂšil gum bi cĂšisean obrachaidh ro dhragh don neach-reic, agus thèid Ăšrachadh mar thoradh air uireasbhaidhean a chaidh a lorg a dhèanamh le com-pĂ irteachadh riochdairean an neach-reic. Gu dearbh, cha bu chòir dhut eadhon riochdairean an neach-reic a thoirt a-steach, oir dhâ fhaodadh tu crĂŹochnachadh le cruinneachadh air a dhĂŹ-chruinneachadh ann an cinneasachadh gun chĂšl-taic.
Gu dearbh, anns aâ chead toraidh malairteach, tha an neach-dèanamh aâ toirt rabhadh soilleir: âTha am bathar-bog seo air a thoirt seachad air stèidh âmar a thaâ, agus chan eil Postgres Professional Limited Liability Company fo dhleastanas sam bith cumail suas, taic, Ăšrachaidhean, leudachadh no atharrachaidhean a thoirt seachad."
Mura h-eil thu air tomhas dè an toradh a tha sinn aâ bruidhinn mu dheidhinn fhathast, fhuaireadh an t-eòlas seo uile bho bhliadhna de bhith aâ cleachdadh stòr-dĂ ta Postgres Pro Enterprise. Faodaidh tu do cho-dhĂšnadh fhèin a tharraing: tha e cho tais is gu bheil e aâ fĂ s mar bhusan-buachair.
Ach cha bhiodh seo cho dona nan deidheadh ââa dhèanamh ann an deagh Ă m agus nan deidheadh ââfuasgladh fhaighinn air duilgheadasan sam bith a dhâèireas gu sgiobalta.
Ach is e sin dĂŹreach nach eil aâ tachairt. A rèir choltais, chan eil na goireasan aig an neach-dèanamh gus biastagan sam bith a lorgar a chĂ radh gu sgiobalta.
Chan fhaod ach luchd-cleachdaidh clĂ raichte pĂ irt a ghabhail san sgrĂšdadh. , mas e do thoil e.
A bheil eòlas agad air gluasad bho DBMS cèin/dÏlseanaich gu fear an-asgaidh/dachaigheil?
21,3%'S e, deimhinneach10
10,6%'S e, Ă icheil5
21,3%Chan eil, cha deach an DBMS atharrachadh.
4,3%Chaidh an DBMS atharrachadh, ach cha deach dad atharrachadh.
42,6%Seall toraidhean20
Bhòt 47 neach-cleachdaidh. Sheall 12 neach-cleachdaidh.
Source: www.habr.com
