WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Georgy Rylov-en 2020ko hasierako txostenaren transkripzioa irakurtzea gomendatzen dizut "WAL-G: aukera berriak eta komunitatearen hedapena"

Kode irekiko mantentzaileek erronka asko dituzte hazten diren heinean. Nola idatzi gero eta beharrezko eginbide gehiago, gero eta arazo gehiago konpondu eta gero eta tira-eskaera gehiago ikustea? WAL-G (PostgreSQLrako babeskopia-tresna) adibide gisa erabiliz, arazo hauek nola konpondu genituen unibertsitatean kode irekiko garapenari buruzko ikastaro bat martxan jarriz, zer lortu dugun eta aurrerantzean nora joango garen kontatuko dizuet.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Kaixo berriro guztioi! Ekaterinburgeko Yandex garatzailea naiz. Eta gaur WAL-G buruz hitz egingo dut.

Txostenaren izenburuak ez zuen esaten babeskopiei buruzko zerbait zenik. Inork ba al daki zer den WAL-G? Edo denek dakite? Altxa eskua ez badakizu. Auskalo, txostenera etorri zara eta ez dakizu zertaz ari den.

Gaur zer gertatuko den kontatuko dizut. Gertatzen da gure taldeak denbora dezente daramala babeskopiak egiten. Eta hau beste txosten bat da, non datuak modu seguru, seguru, eroso eta eraginkorrean gordetzeko moduari buruz hitz egiten dugun.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Aurreko serieetan Andrei Borodin eta Vladimir Leskov-en txosten asko zeuden. Asko ginen. Eta urte asko daramatzagu WAL-G-i buruz hitz egiten.

clck.ru/F8ioz β€” https://www.highload.ru/moscow/2018/abstracts/3964

clck.ru/Ln8Qw β€” https://www.highload.ru/moscow/2019/abstracts/5981

Txosten hau besteen aldean apur bat ezberdina izango da atal teknikoari buruzkoa baitzen, baina hemen komunitatearen hazkuntzarekin lotutako arazoak nola topatu genituen hitz egingo dut. Eta nola bururatu zitzaigun honi aurre egiten laguntzen digun ideia txiki bat.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Duela urte batzuk, WAL-G Citus Data-tik lortu genuen proiektu nahiko txikia zen. Eta hartu besterik ez dugu egin. Eta pertsona batek garatu zuen.

Eta WAL-G-k bakarrik ez zuen:

  • Erreplika batetik babeskopia.
  • Ez zegoen babeskopia gehigarririk.
  • Ez zegoen WAL-Delta babeskopiarik.
  • Eta oraindik asko falta zen.

Urte gutxi hauetan, WAL-G asko hazi da.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Eta 2020rako, aurreko guztia agertu da dagoeneko. Eta honi orain daukaguna gehitu zitzaion:

  • 1 izar baino gehiago GitHub-en.
  • 150 sardexka.
  • 15 bat PR ireki.
  • Eta beste hainbat laguntzaile.
  • Eta gaiak irekita denbora guztian. Eta hori, literalki, egunero hara joan eta zerbait egiten dugun arren.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Eta proiektu honek gure arreta gehiago behar duela ondorioztatu genuen, nahiz eta guk geuk Yandex-en gure Kudeatutako Datu-baseen zerbitzurako ezer inplementatu beharrik ez izan.

Eta 2018ko udazkenean, ideia bat etorri zitzaigun burura. Normalean taldeak hainbat modu ditu ezaugarri batzuk garatzeko edo akatsak konpontzeko esku nahikorik ez baduzu. Adibidez, beste garatzaile bat kontratatu eta dirua ordain dezakezu. Edo denbora batez bekadun bat hartu eta soldataren bat ere ordain diezaiokezu. Baina oraindik jende talde handi samarra dago, eta horietako batzuk dagoeneko badakite kodea idazten. Ez dakizu beti zein kalitate duen kodea.

Pentsatu genuen eta ikasleak erakartzen saiatzea erabaki genuen. Baina ikasleek ez dute gurekin denetan parte hartuko. Lanaren zati bat baino ez dute egingo. Eta, adibidez, probak idatziko dituzte, akatsak konponduko dituzte, funtzionalitate nagusiari eragiten ez dioten funtzioak ezarriko dituzte. Funtzionalitate nagusia babeskopiak sortzea eta babeskopiak leheneratzea da. Babeskopia bat sortzean akatsen bat egiten badugu, datuak galduko ditugu. Eta inork ez du hau nahi, noski. Denek nahi dute dena oso segurua izatea. Hori dela eta, noski, ez dugu gurean baino gutxiago fidatzen garen kodea utzi nahi. Hau da, edozein kode ez-kritikoa da gure langile osagarriengandik jaso nahiko genukeena.

Zein baldintzatan onartzen da ikasleen PR?

  • Beren kodea testekin estali behar dute. Dena CIn egin behar da.
  • Eta 2 berrikuspen ere pasatzen ditugu. Bat Andrey Borodin eta beste bat nik.
  • Eta gainera, honek gure zerbitzuan ezer hautsiko ez duela egiaztatzeko, konpromezu honekin muntaia aparte igotzen dut. Eta amaierako probetan egiaztatzen dugu ezerk huts egiten duela.

Kode irekiari buruzko ikastaro berezia

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Hori zergatik behar den eta zergatik hau, iruditzen zait, ideia polita da.

Guretzat, irabazia agerikoa da:

  • Esku gehigarriak lortzen ditugu.
  • Eta kode adimenduna idazten duten ikasle adimendunen artean talderako hautagaiak bilatzen ari gara.

Zein da ikasleentzat onura?

Agian ez dira hain agerikoak izan, ikasleek, gutxienez, ez baitute dirurik jasotzen idazten duten kodeagatik, baizik eta kalifikazioak soilik jasotzen dituzte ikasleen espedienteetarako.

Honetaz galdetu nien. Eta haien hitzetan:

  • Kolaboratzaile esperientzia kode irekian.
  • Lortu lerro bat zure CVan.
  • Froga ezazu zeure burua eta gainditu elkarrizketa Yandex-en.
  • Egin zaitez GSoC kide.
  • +1 ikastaro berezia kodea idatzi nahi dutenentzat.

Ez dut hitz egingo ikastaroa nola egituratu zen. WAL-G proiektu nagusia zela esango dut. Odyssey, PostgreSQL eta ClickHouse bezalako proiektuak ere sartu ditugu ikastaro honetan.

Eta kurtso honetan ez ezik, diplomak eta ikastaroak ere eman zituzten arazoak.

Zer da erabiltzaileentzako onura?

Orain pasa gaitezen gehien interesatzen zaizun zatira. Zertarako balio dizu honek? Kontua da ikasleek akats asko konpondu dituztela. Eta eskatu dizkiguzun eskaeraren eginbideak egin ditugu.

Eta kontatuko dizkizut aspalditik nahi izan dituzun eta gauzatu diren gauzak.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Tablespaces laguntza. WAL-G-ko taula-espazioak WAL-G kaleratu zenetik espero dira ziurrenik, WAL-G WAL-E beste babeskopia tresna baten oinordekoa delako, non datu-baseen babeskopiak tablespaceekin onartzen ziren.

Utzidazu gogorarazten laburki zer den eta zergatik den beharrezkoa. Normalean, zure Postgres datu guztiek fitxategi-sistemako direktorio bat hartzen dute, oinarri izenekoa. Eta direktorio honek Postgres-ek eskatzen dituen fitxategi eta azpidirektorio guztiak ditu dagoeneko.

Tablespaces Postgres datuak dituzten direktorioak dira, baina ez daude oinarrizko direktoriotik kanpo. Diapositibak erakusten du tablespacs oinarrizko direktoriotik kanpo daudela.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Nolakoa da hau Postgres-entzat? Oinarrizko direktorioan pg_tblspc azpidirektorio bereizia dago. Eta oinarrizko direktoriotik kanpo Postgres datuak dituzten direktorioetarako estekak ditu.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Hori guztia erabiltzen duzunean, zuretzako komando hauek antzeko zerbait izan dezakete. Hau da, taula bat sortzen duzu zehaztutako taula-espazio batean eta orain non dagoen ikusten duzu. Hauek dira azken bi lerroak, deitutako azken bi komandoak. Eta hor argi dago badela moduren bat. Baina, egia esan, hau ez da benetako bidea. Hau da oinarrizko direktoriotik tablespacerako aurrizkiaren bidea. Eta hortik zure benetako datuetara eramaten duen esteka sinboliko batekin lotzen da.

Gure taldean ez dugu hau guztia erabiltzen, baina WAL-G-ra joan nahi zutela idatzi ziguten beste WAL-E erabiltzaile askok erabili zuten, baina horrek geldiarazi egiten zituen. Hau orain onartzen da.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Gure ikastaro bereziak ekarri digun beste ezaugarri bat catchup da. Seguruenik Oracle-rekin Postgres-ekin baino gehiago lan egin duen jendeak badaki harrapaketari buruz.

Laburki zer den. Gure zerbitzuko kluster topologiak normalean horrelako zerbait izan dezake. Maisu bat dugu. Badago erreplika bat idatzi aurretiko erregistroa bertatik igortzen duena. Eta erreplikak maisuari esaten dio zein LSN dagoen une honetan. Eta horrekin batera nonbait, erregistroa artxibatu daiteke. Eta erregistroa artxibatzeaz gain, babeskopiak ere hodeira bidaltzen dira. Eta delta babeskopiak bidaltzen dira.

Zein izan daiteke arazoa? Datu-base handi samarra duzunean, baliteke zure erreplika maisuarekiko urrun geratzen hastea. Eta hain atzean geratzen da, ez duela inoiz harrapatzeko. Arazo hau normalean nolabait konpondu behar da.

Eta modurik errazena erreplika kendu eta berriro igotzea da, ez baitu inoiz helduko, eta arazoari aurre egin behar zaio. Baina hau denbora nahiko luzea da, 10 TBko datu-basearen babeskopia oso bat berreskuratzea oso, oso luzea baita. Eta hori guztia ahalik eta azkarren egin nahi dugu horrelako arazoak sortzen badira. Eta horixe da hain zuzen harrapatzea.

Catchup-ek delta babeskopiak erabiltzeko aukera ematen du, hodeian modu honetan gordetzen direnak. Erreplika atzeratua zein LSN dagoen esaten duzu eta catchup komandoan zehazten duzu, LSN horren eta zure klusterrak dagoen LSNren artean delta babeskopia bat sortzeko. Eta horren ondoren, babeskopia hau atzeratuta zegoen erreplikan leheneratzen duzu.

Beste oinarri batzuk

Ikasleek ere ezaugarri asko ekarri dizkigute aldi berean. Yandex-en Postgres-ek ez ezik, MySQL, MongoDB, Redis, ClickHouse ere baditugu, noizbait MySQL-ren momentuko berreskurapenarekin babeskopiak egin ahal izan behar genituen eta kargatzeko aukera egon zedin. horiek hodeira.

Eta WAL-G-k egiten duenaren antzera egin nahi genuen. Eta esperimentatzea erabaki genuen eta dena nola geratuko zen ikustea.

Eta hasieran, logika hori inola ere partekatu gabe, kodea idatzi zuten sardexka. Ikusi zuten nolabaiteko lan-eredu bat dugula eta hegan egin dezakeela. Orduan, gure komunitate nagusia postgresistak direla pentsatu genuen, WAL-G erabiltzen dute. Eta, beraz, nolabait zati hauek bereizi behar ditugu. Hau da, Postgres-erako kodea editatzen dugunean, ez dugu MySQL apurtzen; MySQL editatzen dugunean, ez dugu Postgres apurtzen.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Hau bereizteko lehenengo ideia PostgreSQL luzapenetan erabiltzen den ikuspegi bera erabiltzeko ideia izan zen. Eta, hain zuzen ere, MySQL babeskopia egiteko liburutegi dinamikoren bat instalatu behar zen.

Baina hemen planteamendu honen asimetria berehala ikusten da. Postgresen babeskopia egiten duzunean, Postgres-en babeskopia normal bat jartzen duzu eta dena ondo dago. Eta MySQL-rentzat Postgres-erako segurtasun kopia bat instalatzen duzula eta MySQL-rako liburutegi dinamiko bat ere instalatzen duzula. Arraro samarra dirudi. Guk ere hala pentsatu genuen eta erabaki genuen hori ez zela behar genuen irtenbidea.

Postgres, MySQL, MongoDB, Redis-entzako hainbat eraikuntza

Baina horrek aukera eman zigun, iruditzen zaigu, erabaki zuzena hartzeko β€”base ezberdinetarako batzar desberdinak esleitzeaβ€”. Horri esker, WAL-G-k inplementatzen duen API arruntera sartuko diren hainbat datu-baseen babeskopiei lotutako logika isolatu ahal izan zen.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Hau da guk geuk idatzi dugun zatia, ikasleei arazoak eman aurretik. Hau da, hau da, hain zuzen, zerbait gaizki egin dezaketen zatia, beraz, hobe genuela horrelako zerbait egitea eta dena ondo egongo zela erabaki genuen.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Horren ostean arazoak eman genituen. Berehala desegin zuten. Ikasleek hiru oinarri lagundu behar zituzten.

Hau MySQL da, eta urte bat baino gehiago daramagu modu honetan WAL-G erabiliz babeskopiak egiten.

Eta orain MongoDB produkziora hurbiltzen ari da, non fitxategi batekin bukatzen ari diren. Izan ere, horretarako guztiaren markoa idatzi genuen. Ondoren, ikasleek gauza erabilgarriak idatzi zituzten. Eta gero ekoizpenean onar ditzakegun egoera batera eramaten ditugu.

Arazo hauek ez zuten ikasleek datu-base horietako bakoitzerako babeskopia tresna osoak idatzi behar zituztenik. Ez genuen horrelako arazorik izan. Gure arazoa zen puntuan-denbora berreskuratzea nahi genuela eta babeskopia egin nahi genuela hodeian. Eta hori konponduko zuen kode bat idazteko eskatu zieten ikasleei. Ikasleek lehendik zeuden babeskopia tresnak erabili zituzten, nolabait babeskopiak hartzen dituztenak, eta gero WAL-G-rekin itsatsi zuten guztia, hodeira birbidaltzen zuena. Eta horri puntu-denbora berreskuratzea ere gehitu zioten.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Zer gehiago ekarri dute ikasleek? Libsodium enkriptatzeko euskarria ekarri zuten WAL-G-ra.

Babeskopia biltegiratzeko politikak ere baditugu. Orain babeskopiak iraunkor gisa markatu daitezke. Eta nolabait zure zerbitzuarentzat erosoagoa da horiek gordetzeko prozesua automatizatzea.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Zein izan da esperimentu honen emaitza?

Hasiera batean 100 pertsona baino gehiagok eman zuten izena ikastaroan. Hasieran ez nuen esan Ekaterinburgeko unibertsitatea Ural Unibertsitate Federala denik. Han dena iragarri genuen. 100 lagunek eman zuten izena. Egia esan, askoz jende gutxiago hasi zen zerbait egiten, 30 pertsona inguru.

Are eta jende gutxiagok egin zuen ikastaroa, lehendik zeuden kodeetarako probak idaztea beharrezkoa zelako. Eta akatsen bat konpondu edo eginbideren bat ere egin. Eta ikasle batzuek oraindik ikastaroa itxi zuten.

Gaur egun, kurtso honetan, ikasleek 14 arazo inguru konpondu dituzte eta hainbat tamainatako 10 ezaugarri egin dituzte. Eta, iruditzen zait, hau garatzaile baten edo biren ordezkapen osoa da.

Besteak beste, diplomak eta ikastaroak eman genituen. Eta 12k diploma jaso zuten. Horietatik 6k β€œ5”-en defendatu dute jada. Geratu zirenek ez zuten oraindik babesik, baina uste dut haientzat ere dena ondo egongo dela.

Etorkizunerako planak

Zein asmo ditugu etorkizunerako?

Erabiltzaileei dagoeneko entzun ditugun eta egin nahi ditugun ezaugarrien eskaerak behintzat. Hau:

  • HA klusterreko babeskopien artxiboan denbora-lerroaren jarraipenaren zuzentasuna kontrolatzea. WAL-G-rekin egin dezakezu. Eta gai hau hartuko duten ikasleak izango ditugula uste dut.
  • Dagoeneko badugu babeskopiak eta WAL lainoen artean transferitzeko arduradun bat.
  • Eta duela gutxi WAL-G are gehiago bizkortu dezakegun ideia bat argitaratu dugu, segurtasun-kopia gehigarriak deskonprimituz orriak berridatzi gabe eta hara bidaltzen ditugun artxiboak optimizatuz.

Hemen parteka ditzakezu

Zertarako izan da txosten hau? Gainera, orain, proiektu honen alde egiten duten 4 pertsonez gain, esku osagarriak ditugu, eta horietatik dezente daude. Batez ere mezu pertsonal batean idazten badiezu. Eta zure datuen babeskopia egiten baduzu eta WAL-G erabiliz egiten baduzu edo WAL-G-ra joan nahi baduzu, erraz beteko ditugu zure nahiak.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Hau QR kodea eta esteka bat da. Horietatik pasa eta zure nahi guztiak idatzi ditzakezu. Adibidez, ez dugu akatsen bat konpontzen ari. Edo benetan eginbideren bat nahi duzu, baina arrazoiren batengatik oraindik ez dago inolako babeskopietan, gurean barne. Ziurtatu honi buruz idazten duzula.

WAL-G: ezaugarri berriak eta komunitatearen hedapena. Georgy Rylov

Zure galderak

Kaixo! Eskerrik asko erreportajeagatik! WAL-G-ri buruzko galdera, baina ez Postgres-i buruz. WAL-G-k MySQL-ren babeskopia egiten du eta babeskopia gehigarria deitzen du. CentOS-en instalazio modernoak hartzen baditugu eta MySQL instalatzen baduzu, MariDB instalatuko da. 10.3 bertsiotik aurrera ez da babeskopia gehigarria onartzen, MariDB babeskopia onartzen da. Zer moduz zaude honekin?

Momentuz ez gara MariDB babeskopia egiten saiatu. FoundationDB laguntza eskaerak izan ditugu, baina, oro har, eskaera hori badago, egingo duen jendea aurki dezakegu. Ez da nik uste bezain luzea edo zaila.

Arratsalde on Eskerrik asko erreportajeagatik! Eginbide berriei buruzko galdera. Prest al zaude WAL-G zintekin funtzionatzeko, zintetan babeskopia egin ahal izateko?

Zinta-biltegiratzean babeskopia egiteak esan nahi du?

Bai.

Bada Andrei Borodin, galdera honi ni baino hobeto erantzun diezaiokeena.

(Andrey) Bai, eskerrik asko galderagatik! Hodeiko biltegiratzetik zintaren babeskopia transferitzeko eskaera egin genuen. Eta horretarako zerratze hodeien arteko transferentzia. Hodeitik hodeiko transferentzia zinta transferentziaren bertsio orokortua delako. Horrez gain, arkitektura hedagarria dugu Biltegiratzeei dagokienez. Bide batez, Storoge asko ikasleek idatzi zituzten. Eta zintaren biltegiratzea idazten baduzu, orduan, noski, onartuko da. Prest gaude tira-eskaerak aztertzeko. Bertan fitxategi bat idatzi behar duzu, fitxategi bat irakurri. Gauza hauek Go-n egiten badituzu, normalean 50 kode-lerro izaten dituzu. Eta gero zinta WAL-G-n onartzen da.

Eskerrik asko erreportajeagatik! Garapen prozesu interesgarria. Babeskopia funtzionaltasun serio bat da, probak ondo estali beharko lukeena. Datu-base berrietarako funtzionalitateak ezarri zenituenean, ikasleek probak ere idatzi zituzten, ala zuk zeuk idatzi zenituen probak eta gero ikasleei inplementazioa eman?

Ikasleek probak ere idatzi zituzten. Baina ikasleek gehiago idatzi zuten datu-base berriak bezalako ezaugarrietarako. Integrazio probak idatzi zituzten. Eta unitate-probak idatzi zituzten. Integrazioa pasatzen bada, hau da, momentu honetan, eskuz exekutatzen duzun script bat da edo cron duzu egiten, adibidez. Hau da, hango gidoia oso argia da.

Ikasleek ez dute esperientzia handirik. Berrikusketak denbora asko behar al du?

Bai, berrikuspenek denbora asko behar dute. Hau da, normalean, hainbat komisario aldi berean etortzen direnean eta hau egin dudala, hori egin dudala esaten dutenean, orduan pentsatu behar duzu eta egun erdi inguru utzi behar duzu bertan zer idatzi duten jakiteko. Kodea arretaz irakurri behar delako. Ez zuten elkarrizketarik izan. Ez ditugu oso ondo ezagutzen, beraz, denbora asko behar da.

Eskerrik asko erreportajeagatik! Aurretik, Andrey Borodinek adierazi zuen archive_command WAL-G-n zuzenean deitu behar zela. Baina cluster-kartutxo baten kasuan, logika gehigarria behar dugu ardatzak bidaltzeko nodoa zehazteko. Nola konpontzen duzu zuk zeuk arazo hau?

Zein da zure arazoa hemen? Demagun babeskopia egiten ari zaren erreplika sinkroniko bat duzula? Edo zer?

(Andrey) Izan ere, WAL-G shell scriptik gabe erabiltzeko pentsatuta dago. Zerbait falta bada, gehitu dezagun WAL-G barruan egon beharko lukeen logika. Artxibatzea nondik etorri behar den, gure ustez, artxibatzeak klusterreko egungo maisutik izan behar du. Erreplika batetik artxibatzea ideia txarra da. Arazoak dituzten hainbat eszenatoki posible daude. Bereziki, denbora-lerroak artxibatzeko arazoak eta informazio osagarria. Eskerrik asko galderagatik!

(Azalpena: shell scriptak kendu ditugu ale honetan)

Arratsalde on! Eskerrik asko erreportajeagatik! Hitz egin duzun catchup funtzioa interesatzen zait. Erreplika bat atzean zegoen eta ezin izan zuen egoera baten aurrean geunden. Eta ez dut ezaugarri honen deskribapenik aurkitu WAL-G dokumentuetan.

Catchup 20ko urtarrilaren 2020an agertu zen literalki. Baliteke dokumentazioak lan gehiago behar izatea. Guk geuk idazten dugu eta ez dugu oso ondo idazten. Eta beharbada ikasleei idazteko eskatzen hasi beharko ginateke.

Dagoeneko kaleratu al da?

Tira eskaera dagoeneko hilda dago, hau da, egiaztatu dut. Hau proba-kluster batean probatu nuen. Orain arte ez dugu egoerarik izan, borroka-adibide batean hau probatzeko.

Noiz espero?

Ez dakit. Itxaron hilabete bat, ziur egiaztatuko dugu.

Iturria: www.habr.com

Gehitu iruzkin berria