DBA bot Joe. Anatoly Stansler (Postgres.ai)

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Giunsa masabtan sa usa ka developer sa backend nga ang usa ka pangutana sa SQL molihok nga maayo sa usa ka "prod"? Sa dako o paspas nga nagtubo nga mga kompanya, dili tanan adunay access sa "produkto". Ug sa pag-access, dili tanan nga mga hangyo mahimong masusi nga walay sakit, ug ang paghimo og usa ka kopya sa database sa kasagaran nagkinahanglan og mga oras. Aron masulbad kini nga mga problema, naghimo kami usa ka artipisyal nga DBA - Joe. Kini malampuson nga gipatuman sa daghang mga kompanya ug nakatabang sa labaw sa usa ka dosena nga mga developer.

Video:

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Kumusta tanan! Ako si Anatoly Stansler. Nagtrabaho ko sa usa ka kompanya postgres.ai. Kami komitido sa pagpadali sa proseso sa pag-uswag pinaagi sa pagtangtang sa mga paglangan nga nalangkit sa trabaho sa Postgres gikan sa mga developer, DBA ug QA.

Kami adunay daghang mga kliyente ug karon nga bahin sa taho igahin sa mga kaso nga among nahimamat samtang nagtrabaho kauban nila. Maghisgot ko kung giunsa namo sila pagtabang sa pagsulbad sa mga seryoso nga problema.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Sa diha nga kita nag-uswag ug naghimo sa mga komplikado nga high-load nga mga paglalin, atong pangutan-on ang atong kaugalingon sa pangutana: "Mahimo ba kini nga paglalin?". Gigamit namo ang pagrepaso, gigamit namo ang kahibalo sa mas eksperyensiyadong mga kauban, mga eksperto sa DBA. Ug makaingon sila kung molupad ba kini o dili.

Apan tingali mas maayo kon ato kining sulayan sa atong kaugalingon sa bug-os nga gidak-on nga mga kopya. Ug karon hisgutan ra naton kung unsa ang mga pamaagi sa pagsulay karon ug kung giunsa kini mahimo nga labi ka maayo ug kung unsang mga himan. Maghisgot usab kami bahin sa mga bentaha ug disbentaha sa ingon nga mga pamaagi, ug kung unsa ang mahimo naton ayohon dinhi.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Kinsa ang nakabuhat ug mga indeks direkta sa prod o nakahimog bisan unsang mga pagbag-o? Medyo sa. Ug alang kang kinsa kini mitultol sa kamatuoran nga ang data nawala o adunay downtime? Unya nahibal-an nimo kini nga kasakit. Salamat sa Dios adunay mga backup.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ang una nga pamaagi mao ang pagsulay sa prod. O, kung ang usa ka developer naglingkod sa usa ka lokal nga makina, siya adunay datos sa pagsulay, adunay usa ka matang sa limitado nga pagpili. Ug mi-roll out kami sa pag-prod, ug nakuha namo kini nga sitwasyon.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Sakit, mahal. Labing maayo tingali nga dili.

Ug unsa ang labing maayo nga paagi sa pagbuhat niini?

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Atong kuhaon ang dula ug pilion ang pipila ka bahin sa prod didto. O labing maayo, magkuha kita usa ka tinuud nga prod, ang tanan nga datos. Ug human nato kini maugmad sa lokal, atong susihon pag-ayo ang dula.

Kini magtugot kanato sa pagtangtang sa pipila sa mga sayop, i.e. pagpugong kanila gikan sa prod.

Unsa ang mga problema?

  • Ang problema kay gipaambit namo kini nga dula sa mga kauban. Ug kanunay nga mahitabo nga maghimo ka usa ka matang sa pagbag-o, bam - ug wala’y datos, ang trabaho nahinabo. Ang pagpahigayon usa ka multi-terabyte. Ug kinahanglan ka maghulat ug dugay aron kini mobangon pag-usab. Ug nakahukom kami nga tapuson kini ugma. Mao to, naa tay development.
  • Ug, siyempre, kami adunay daghang mga kauban nga nagtrabaho didto, daghang mga team. Ug kini kinahanglan nga buhaton sa kamut. Ug kini dili kombenyente.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ug angayan nga isulti nga kami adunay usa ra ka pagsulay, usa ka shot, kung gusto namon nga magbag-o sa database, hikapa ang datos, usba ang istruktura. Ug kung adunay nahitabo nga sayup, kung adunay sayup sa paglalin, nan dili kami dali nga mobalik.

Mas maayo kini kaysa sa miaging pamaagi, apan adunay taas nga posibilidad nga ang usa ka matang sa sayup moadto sa produksiyon.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Unsa ang nagpugong kanamo sa paghatag sa matag developer og test bench, usa ka full-size nga kopya? Sa akong hunahuna klaro kung unsa ang nakababag.

Kinsa ang adunay database nga mas dako kaysa usa ka terabyte? Labaw sa katunga sa kwarto.

Ug klaro nga ang pagtipig sa mga makina alang sa matag developer, kung adunay ingon ka dako nga produksiyon, mahal kaayo, ug labut pa, nagkinahanglan kini og taas nga panahon.

Kami adunay mga kliyente nga nakaamgo nga hinungdanon kaayo ang pagsulay sa tanan nga mga pagbag-o sa bug-os nga gidak-on nga mga kopya, apan ang ilang database gamay ra sa usa ka terabyte, ug wala’y mga kapanguhaan aron matipigan ang usa ka bangko sa pagsulay alang sa matag developer. Busa, kinahanglan nila nga i-download ang mga dump sa lokal sa ilang makina ug sulayan kini nga paagi. Nagkinahanglan kini og daghang panahon.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Bisan kung buhaton nimo kini sa sulod sa imprastraktura, unya ang pag-download sa usa ka terabyte nga datos matag oras maayo na kaayo. Apan naggamit sila og lohikal nga mga dump, nag-download sila sa lokal gikan sa panganod. Alang kanila, ang gikusgon kay mga 200 gigabytes kada oras. Ug nagkinahanglag panahon pa sa pagliko gikan sa lohikal nga dump, pag-roll up sa mga indeks, ug uban pa.

Apan gigamit nila kini nga pamaagi tungod kay kini nagtugot kanila nga magpabilin nga kasaligan ang prod.

Unsa may atong mahimo dinhi? Himoon nato nga barato ang mga test bench ug hatagan ang matag developer sa ilang kaugalingong test bench.

Ug kini posible.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ug sa kini nga pamaagi, kung maghimo kami mga manipis nga clone alang sa matag developer, mahimo namon kini ipaambit sa usa ka makina. Pananglitan, kung ikaw adunay 10TB nga database ug gusto nimo nga ihatag kini sa 10 ka mga developer, dili nimo kinahanglan nga adunay XNUMX x XNUMXTB nga mga database. Nagkinahanglan ka lang og usa ka makina aron makahimo og nipis nga mga kopya sa matag developer gamit ang usa ka makina. Isulti ko kanimo kung giunsa kini molihok sa ulahi.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Tinuod nga pananglitan:

  • DB - 4,5 terabytes.

  • Makakuha kami ug independente nga mga kopya sa 30 segundos.

Dili kinahanglan nga maghulat alang sa usa ka test stand ug magdepende kung unsa kini ka dako. Makuha nimo kini sa mga segundo. Kini mahimong hingpit nga nahimulag nga mga palibot, apan nagbahin sa datos sa ilang kaugalingon.

Nindot ni. Dinhi naghisgot kami bahin sa salamangka ug usa ka parallel nga uniberso.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Sa among kaso, kini nagtrabaho gamit ang OpenZFS nga sistema.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ang OpenZFS usa ka copy-on-write file system nga nagsuporta sa mga snapshot ug clone nga wala sa kahon. Kini kasaligan ug scalable. Sayon ra kaayo siya dumalahon. Mahimo kini nga literal nga i-deploy sa duha ka mga team.

Adunay ubang mga kapilian:

  • lvm,

  • Pagtipig (pananglitan, Pure Storage).

Ang Database Lab nga akong gihisgutan kay modular. Mahimong ipatuman gamit kini nga mga kapilian. Apan sa pagkakaron, naka-focus kami sa OpenZFS, tungod kay adunay mga problema sa LVM ilabi na.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Giunsa kini paglihok? Imbis nga i-overwrite ang data sa matag higayon nga usbon namo kini, among gitipigan kini pinaagi lamang sa pagmarka nga kining bag-ong datos gikan sa usa ka bag-ong punto sa panahon, usa ka bag-ong snapshot.

Ug sa umaabot, kung gusto namong i-rollback o gusto namong maghimo og bag-ong clone gikan sa pipila ka mas daan nga bersyon, moingon lang kami: "OK, hatagi kami niining mga bloke sa datos nga gimarkahan sama niini."

Ug kini nga tiggamit magtrabaho sa ingon nga set sa datos. Anam-anam niyang usbon sila, maghimo sa iyang kaugalingon nga mga snapshot.

Ug mag branch mi. Ang matag developer sa among kaso adunay higayon nga adunay kaugalingon nga clone nga iyang gi-edit, ug ang datos nga gipaambit ipaambit sa tanan.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Aron ma-deploy ang ingon nga sistema sa balay, kinahanglan nimo nga sulbaron ang duha nga mga problema:

  • Ang una mao ang tinubdan sa datos, diin nimo kini kuhaon. Mahimo nimong i-set up ang replikasyon gamit ang produksiyon. Mahimo na nimo gamiton ang mga backup nga imong gi-configure, nanghinaut ko. WAL-E, WAL-G o Barman. Ug bisan kung naggamit ka usa ka klase sa solusyon sa Cloud sama sa RDS o Cloud SQL, mahimo nimong magamit ang mga lohikal nga dump. Apan gitambagan ka gihapon namon nga mogamit mga pag-backup, tungod kay sa kini nga pamaagi mapadayon nimo usab ang pisikal nga istruktura sa mga file, nga magtugot kanimo nga mas duol sa mga sukatan nga imong makita sa produksiyon aron makuha ang mga problema nga naglungtad.

  • Ang ikaduha mao kung asa nimo gusto nga i-host ang Database Lab. Mahimo nga Cloud, mahimo nga On-premise. Importante nga isulti dinhi nga ang ZFS nagsuporta sa data compression. Ug kini maayo kaayo.

Hunahunaa nga alang sa matag ingon nga clone, depende sa mga operasyon nga atong gibuhat sa base, usa ka matang sa dev ang motubo. Alang niini, ang dev magkinahanglan usab og luna. Apan tungod sa kamatuoran nga mikuha kami og base sa 4,5 terabytes, ang ZFS mag-compress niini ngadto sa 3,5 terabytes. Mahimong magkalainlain kini depende sa mga setting. Ug naa pa mi lugar para sa dev.

Ang ingon nga sistema mahimong magamit alang sa lainlaing mga kaso.

  • Kini ang mga developer, DBA alang sa pag-validate sa pangutana, alang sa pag-optimize.

  • Mahimo kini gamiton sa pagsulay sa QA aron masulayan ang usa ka partikular nga paglalin sa dili pa naton kini i-prod. Ug mahimo usab namon nga ipataas ang mga espesyal nga palibot alang sa QA nga adunay tinuud nga datos, diin mahimo nila masulayan ang bag-ong pagpaandar. Ug magkinahanglan kini og mga segundo imbes nga mga oras sa paghulat, ug tingali mga adlaw sa ubang mga kaso diin ang mga manipis nga kopya wala gigamit.

  • Ug laing kaso. Kung ang kompanya wala’y sistema sa pag-analisar nga gipahimutang, nan mahimo naton ihimulag ang usa ka manipis nga clone sa base sa produkto ug ihatag kini sa taas nga mga pangutana o espesyal nga mga indeks nga magamit sa analytics.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Uban niini nga pamaagi:

  1. Ubos nga posibilidad sa mga sayup sa "prod", tungod kay gisulayan namon ang tanan nga mga pagbag-o sa bug-os nga kadako nga datos.

  2. Kami adunay usa ka kultura sa pagsulay, tungod kay karon dili ka kinahanglan maghulat ug daghang oras alang sa imong kaugalingon nga baruganan.

  3. Ug walay babag, walay paghulat tali sa mga pagsulay. Mahimo ka nga moadto ug susihon. Ug mas maayo ning paagiha kay atong paspasan ang kalamboan.

  • Adunay gamay nga refactoring. Diyutay nga mga bug ang mahuman sa prod. Atong i-refactor sila sa ulahi.

  • Mahimo natong balihon ang dili mabalik nga mga pagbag-o. Dili kini ang standard nga pamaagi.

  1. Kini mapuslanon tungod kay nag-ambit kami sa mga kapanguhaan sa mga bangko sa pagsulay.

Maayo na, apan unsa pa ang mahimo nga mapadali?

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Salamat sa ingon nga sistema, mahimo namon nga makunhuran ang threshold sa pagsulod sa ingon nga pagsulay.

Karon adunay usa ka mapintas nga lingin, kung ang usa ka developer, aron makakuha og access sa tinuod nga bug-os nga kadako nga datos, kinahanglan nga mahimong usa ka eksperto. Kinahanglan nga saligan siya sa ingon nga pag-access.

Apan unsaon pagtubo kung wala kini. Apan unsa man kung adunay ka gamay ra nga set sa datos sa pagsulay nga magamit kanimo? Unya dili ka makakuha og tinuod nga kasinatian.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Unsaon paggawas niini nga sirkulo? Ingon ang una nga interface, kombenyente alang sa mga developer sa bisan unsang lebel, gipili namon ang Slack bot. Apan kini mahimong bisan unsa nga lain nga interface.

Unsa ang gitugot niini nga imong buhaton? Mahimo nimong kuhaon ang usa ka piho nga pangutana ug ipadala kini sa usa ka espesyal nga channel alang sa database. Awtomatiko namong i-deploy ang nipis nga clone sa mga segundo. Atong padaganon kini nga hangyo. Gikolekta namon ang mga sukatan ug rekomendasyon. Atong ipakita ang usa ka visualization. Ug unya kini nga clone magpabilin aron kini nga pangutana mahimong ma-optimize, makadugang mga indeks, ug uban pa.

Ug usab ang Slack naghatag kanamo og mga oportunidad alang sa kolaborasyon sa gawas sa kahon. Tungod kay kini usa lamang ka channel, mahimo nimong sugdan ang paghisgot niini nga hangyo didto mismo sa thread alang sa ingon nga hangyo, i-ping ang imong mga kauban, mga DBA nga naa sa sulod sa kompanya.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Apan adunay, siyempre, mga problema. Tungod kay kini ang tinuod nga kalibutan, ug naggamit kami usa ka server nga nag-host sa daghang mga clone sa usa ka higayon, kinahanglan namon nga i-compress ang kantidad sa memorya ug gahum sa CPU nga magamit sa mga clone.

Apan aron kini nga mga pagsulay mahimong katuohan, kinahanglan nimo nga masulbad kini nga problema.

Klaro nga ang hinungdanon nga punto mao ang parehas nga datos. Pero naa na mi. Ug gusto namon nga makab-ot ang parehas nga pagsumpo. Ug makahatag kami sa ingon nga halos parehas nga configuration.

Maayo nga adunay parehas nga hardware sama sa produksiyon, apan kini mahimong magkalainlain.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Atong hinumdoman kung giunsa ang mga Postgres nagtrabaho uban ang memorya. Kami adunay duha ka cache. Usa gikan sa file system ug usa ka lumad nga Postgres, ie Shared Buffer Cache.

Mahinungdanon nga timan-an nga ang Shared Buffer Cache gigahin kung magsugod ang mga Postgres, depende sa kung unsang gidak-on ang imong gitakda sa pagsumpo.

Ug ang ikaduha nga cache naggamit sa tanan nga magamit nga wanang.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ug kung maghimo kami daghang mga clone sa usa ka makina, nahimo namon nga hinayhinay nga napuno ang panumduman. Ug sa maayong paagi, ang Shared Buffer Cache mao ang 25% sa kinatibuk-ang kantidad sa memorya nga anaa sa makina.

Ug kini nahimo nga kung dili naton usbon kini nga parameter, nan mahimo ra naton nga 4 nga mga higayon nga modagan sa usa ka makina, nga mao, 4 sa kini nga manipis nga mga clone sa kinatibuk-an. Ug kini, siyempre, dili maayo, tungod kay gusto namon nga adunay daghan pa niini.

Apan sa laing bahin, ang Buffer Cache gigamit sa pagpatuman sa mga pangutana alang sa mga indeks, nga mao, ang plano nagdepende kung unsa kadako ang among mga cache. Ug kung atong kuhaon kini nga parameter ug pakunhuran kini, nan ang atong mga plano mahimong mabag-o pag-ayo.

Pananglitan, kon kita adunay usa ka dako nga cache sa prod, unya Postgres gusto sa paggamit sa usa ka index. Ug kung dili, nan adunay SeqScan. Ug unsa man ang punto kung ang among mga plano dili magkatakdo?

Apan dinhi miabot sa konklusyon nga sa pagkatinuod ang plano sa Postgres wala magdepende sa espesipikong gidak-on nga gipiho sa Shared Buffer sa plano, kini nagdepende sa effective_cache_size.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ang Effective_cache_size mao ang gibana-bana nga kantidad sa cache nga magamit kanamo, i.e. ang sumada sa Buffer Cache ug file system cache. Gitakda kini sa config. Ug kini nga panumduman wala gigahin.

Ug tungod sa kini nga parameter, mahimo namon nga usa ka matang sa paglimbong sa mga Postgres, nga giingon nga kami adunay daghang mga datos nga magamit, bisan kung wala kami niini nga datos. Ug sa ingon, ang mga plano hingpit nga motakdo sa produksiyon.

Apan kini makaapekto sa panahon. Ug gi-optimize namon ang mga pangutana pinaagi sa oras, apan hinungdanon nga ang oras nagdepende sa daghang mga hinungdan:

  • Depende sa load nga naa karon sa prod.

  • Nagdepende kini sa mga kinaiya sa makina mismo.

Ug kini usa ka dili direkta nga parameter, apan sa tinuud mahimo naton nga ma-optimize ang eksakto sa kantidad sa datos nga mabasa sa kini nga pangutana aron makuha ang resulta.

Ug kung gusto nimo ang oras nga hapit sa kung unsa ang atong makita sa prod, nan kinahanglan namon nga kuhaon ang labing parehas nga hardware ug, posible, labi pa aron ang tanan nga mga clone mohaum. Apan kini usa ka pagkompromiso, i.e. makakuha ka sa parehas nga mga plano, imong makita kung unsa kadaghan nga datos ang mabasa sa usa ka partikular nga pangutana ug makahinapos ka kung kini nga pangutana maayo (o paglalin) o dili maayo, kinahanglan pa nga ma-optimize. .

Atong tan-awon kung giunsa ang pag-optimize ni Joe.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Atong kuhaon ang usa ka hangyo gikan sa usa ka tinuod nga sistema. Sa kini nga kaso, ang database mao ang 1 terabyte. Ug gusto namong ihap ang gidaghanon sa mga bag-ong post nga adunay labaw sa 10 ka gusto.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Nagsulat kami usa ka mensahe sa channel, usa ka clone ang gipakatap para kanamo. Ug atong makita nga ang maong hangyo makompleto sa 2,5 minutos. Kini ang unang butang nga atong namatikdan.

B Joe magpakita kanimo og mga awtomatikong rekomendasyon base sa plano ug metrics.

Atong makita nga ang pangutana nagproseso ug daghan kaayong datos aron makakuha ug medyo gamay nga gidaghanon sa mga laray. Ug gikinahanglan ang usa ka matang sa pinasahi nga indeks, tungod kay namatikdan namo nga adunay daghan kaayong nasala nga mga laray sa pangutana.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Atong tan-awon pag-ayo ang nahitabo. Sa tinuud, nakita namon nga nabasa namon ang hapit usa ug tunga nga gigabytes nga datos gikan sa cache sa file o bisan sa disk. Ug dili kini maayo, tungod kay nakakuha ra kami og 142 ka linya.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ug, ingon og, kami adunay usa ka index scan dinhi ug kinahanglan nga molihok dayon, apan tungod kay gisala namon ang daghang mga linya (kinahanglan namon nga ihap kini), ang hangyo hinay nga nahimo.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ug kini nahitabo sa plano tungod sa kamatuoran nga ang mga kondisyon sa pangutana ug ang mga kondisyon sa indeks nga partially dili motakdo.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Atong sulayan ang paghimo sa indeks nga mas tukma ug tan-awon kung giunsa pagbag-o ang pagpatuman sa pangutana pagkahuman niana.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ang paghimo sa index dugay nga panahon, apan karon among gisusi ang pangutana ug tan-awa nga ang oras imbes 2,5 ka minuto kay 156 milliseconds lang, nga igo na. Ug kami nagbasa lamang sa 6 megabytes nga datos.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ug karon gigamit namon ang pag-scan lamang sa indeks.

Laing importante nga istorya mao nga gusto namong ipresentar ang plano sa mas masabtan nga paagi. Gipatuman namo ang visualization gamit ang Flame Graphs.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Kini usa ka lahi nga hangyo, mas grabe. Ug nagtukod kami og Flame Graphs sumala sa duha ka mga parameter: kini ang gidaghanon sa datos nga giihap sa usa ka partikular nga node sa plano ug timing, ie ang oras sa pagpatuman sa node.

Dinhi mahimo natong itandi ang piho nga mga node sa usag usa. Ug kini mahimong tin-aw kon kinsa kanila ang nagkinahanglan og mas daghan o mas gamay, nga kasagaran lisud buhaton sa ubang mga pamaagi sa paghubad.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Siyempre, nahibal-an sa tanan ang explain.depesz.com. Ang usa ka maayo nga bahin sa kini nga pagtan-aw mao nga among gitipigan ang plano sa teksto ug gibutang usab ang pipila ka mga sukaranan nga mga parameter sa usa ka lamesa aron among maihap.

Ug ang mga nag-develop nga wala pa nahibal-an sa kini nga hilisgutan gigamit usab ang explain.depesz.com, tungod kay mas dali alang kanila nga mahibal-an kung unsang mga sukatan ang hinungdanon ug kung diin ang dili.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Adunay bag-ong pamaagi sa visualization - kini ang explain.dalibo.com. Naghimo sila usa ka pagtan-aw sa kahoy, apan lisud kaayo nga itandi ang mga node sa usag usa. Dinhi mahimo nimong masabtan ang istruktura, bisan pa, kung adunay usa ka dako nga hangyo, nan kinahanglan nimo nga mag-scroll pabalik-balik, apan usa usab ka kapilian.

kolaborasyon

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Ug, sama sa akong giingon, ang Slack naghatag kanamo ug higayon nga magtinabangay. Pananglitan, kung makit-an namon ang usa ka komplikado nga pangutana nga dili klaro kung giunsa ang pag-optimize, mahimo namon matin-aw kini nga isyu sa among mga kauban sa usa ka hilo sa Slack.

DBA bot Joe. Anatoly Stansler (Postgres.ai)

Para namo importante nga sulayan ang full-size nga datos. Aron mahimo kini, gihimo namon ang tool sa Update Database Lab, nga magamit sa bukas nga gigikanan. Mahimo usab nimo gamiton ang Joe bot. Mahimo nimong kuhaon kini karon ug ipatuman kini sa imong lugar. Ang tanan nga mga giya anaa didto.

Importante usab nga matikdan nga ang solusyon mismo dili rebolusyonaryo, tungod kay adunay Delphix, apan kini usa ka solusyon sa negosyo. Kini hingpit nga sirado, kini mahal kaayo. Espesyal kami nga espesyalista sa Postgres. Kining tanan kay open source nga mga produkto. Apil kanamo!

Dinhi ko matapos. Salamat!

Ang imong mga pangutana

Hello! Salamat sa report! Makapainteres kaayo, labi na kanako, tungod kay nasulbad nako ang parehas nga problema kaniadto. Ug mao nga ako adunay daghang mga pangutana. Hinaut nga makakuha ko bisan gamay bahin niini.

Naghunahuna ko kung giunsa nimo pagkalkulo ang lugar alang niini nga palibot? Ang teknolohiya nagpasabot nga ubos sa pipila ka mga kahimtang, ang imong mga clone mahimong motubo ngadto sa pinakataas nga gidak-on. Sa kinatibuk-an, kung ikaw adunay napulo ka terabyte database ug 10 ka mga clone, nan kini sayon ​​nga i-simulate ang usa ka sitwasyon diin ang matag clone adunay gibug-aton nga 10 ka talagsaon nga datos. Giunsa nimo pagkalkulo kini nga lugar, nga mao, kanang delta nga imong gisulti, diin kini nga mga clone mabuhi?

Maayong pangutana. Importante nga masubay ang piho nga mga clone dinhi. Ug kung ang usa ka clone adunay usa ka dako kaayo nga pagbag-o, kini nagsugod sa pagtubo, nan mahimo naton una nga mag-isyu sa usa ka pasidaan sa tiggamit bahin niini, o hunongon dayon kini nga clone aron dili kita mapakyas nga kahimtang.

Oo, naa koy nested nga pangutana. Sa ato pa, giunsa nimo pagsiguro ang siklo sa kinabuhi sa kini nga mga module? Kami adunay kini nga problema ug usa ka tibuuk nga lahi nga istorya. Sa unsang paagi kini mahitabo?

Adunay pipila ka mga ttl alang sa matag clone. Sa panguna, kami adunay usa ka piho nga ttl.

Unsa, kung dili sekreto?

1 ka oras, i.e. walay pulos - 1 ka oras. Kung wala kini gigamit, nan among gibunalan kini. Apan wala’y katingala dinhi, tungod kay mahimo naton mapataas ang clone sa mga segundo. Ug kung kinahanglan nimo kini pag-usab, palihug.

Interesado usab ako sa pagpili sa mga teknolohiya, tungod kay, pananglitan, gigamit namon ang daghang mga pamaagi nga managsama alang sa usa ka hinungdan o sa lain. Ngano nga ZFS? Ngano wala nimo gigamit ang LVM? Gihisgutan nimo nga adunay mga problema sa LVM. Unsa ang mga problema? Sa akong opinyon, ang labing kamalaumon nga kapilian mao ang pagtipig, sa mga termino sa pasundayag.

Unsa ang nag-unang problema sa ZFS? Ang kamatuoran nga kinahanglan ka modagan sa parehas nga host, i.e. ang tanan nga mga higayon mabuhi sa parehas nga OS. Ug sa kaso sa pagtipig, mahimo nimong ikonektar ang lainlaing kagamitan. Ug ang bottleneck mao ra ang mga bloke nga naa sa sistema sa pagtipig. Ug ang pangutana sa pagpili sa mga teknolohiya makapaikag. Ngano dili LVM?

Sa partikular, mahimo natong hisgutan ang LVM sa meetup. Mahitungod sa pagtipig - kini mahal ra. Mahimo natong ipatuman ang sistema sa ZFS bisan asa. Mahimo nimo kini i-deploy sa imong makina. Mahimo ra nimo i-download ang repository ug i-deploy kini. Ang ZFS na-install halos bisan asa kung naghisgot kami bahin sa Linux. Sa ato pa, nakakuha kami usa ka flexible nga solusyon. Ug sa gawas sa kahon, ang ZFS naghatag og daghan. Mahimo nimong i-upload ang daghang datos nga gusto nimo, pagkonektar sa daghang mga disk, adunay mga snapshot. Ug, sa ako nang giingon, sayon ​​ra ang pagdumala. Sa ato pa, morag nindot kaayo gamiton. Gisulayan siya, daghang tuig na siya. Siya adunay usa ka dako kaayo nga komunidad nga nagtubo. Ang ZFS usa ka kasaligan nga solusyon.

Nikolai Samokhvalov: Mahimo ba akong magkomento ug dugang? Ako si Nikolay, nagtinabangay kami ni Anatoly. Uyon ko nga maayo ang pagtipig. Ug ang pipila sa among mga kustomer adunay Pure Storage etc.

Si Anatoly husto nga nakamatikod nga kami naka-focus sa modularity. Ug sa umaabot, mahimo nimong ipatuman ang usa ka interface - pagkuha usa ka snapshot, paghimo usa ka clone, gub-on ang clone. Sayon ra ang tanan. Ug ang pagtipig kay cool, kung mao.

Apan ang ZFS magamit sa tanan. Ang DelPhix igo na, aduna silay 300 ka kliyente. Niini, ang fortune 100 adunay 50 ka mga kliyente, i.e. gipunting nila ang NASA, ug uban pa. Panahon na nga makuha sa tanan kini nga teknolohiya. Ug mao nga kami adunay usa ka bukas nga gigikanan nga Core. Adunay kami usa ka bahin sa interface nga dili bukas nga gigikanan. Kini ang plataporma nga among ipakita. Apan gusto namon nga kini ma-access sa tanan. Gusto namon nga maghimo usa ka rebolusyon aron ang tanan nga mga tester mohunong sa pagtag-an sa mga laptop. Kinahanglan natong isulat ang PILI ug makita dayon nga kini hinay. Hunonga ang paghulat sa DBA nga isulti kanimo bahin niini. Ania ang nag-unang tumong. Ug sa akong hunahuna nga kitang tanan moabut niini. Ug gihimo namo kini nga butang aron maangkon sa tanan. Busa ZFS, tungod kay kini magamit bisan asa. Salamat sa komunidad sa pagsulbad sa mga problema ug sa pagbaton ug open source nga lisensya, ug uban pa*

Mga pangomosta! Salamat sa report! Ako nga pala si Maxim. Giatubang namo ang parehas nga mga isyu. Nagdesisyon sila sa ilang kaugalingon. Giunsa nimo pagpaambit ang mga kapanguhaan tali sa kini nga mga clone? Ang matag clone makahimo sa iyang kaugalingon nga butang sa bisan unsang oras: ang usa nagsulay sa usa ka butang, lain pa, adunay usa nga nagtukod usa ka indeks, adunay usa ka bug-at nga trabaho. Ug kung mahimo pa nimo mabahin sa CPU, unya sa IO, unsaon nimo pagbahin? Kini ang unang pangutana.

Ug ang ikaduha nga pangutana mao ang bahin sa pagkalainlain sa mga baruganan. Ingnon ta nga ako adunay ZFS dinhi ug ang tanan cool, apan ang kliyente sa prod walay ZFS, apan ext4, pananglitan. Sa unsa nga paagi sa niini nga kaso?

Nindot kaayo ang mga pangutana. Gihisgutan nako kini nga problema gamay sa kamatuoran nga nag-ambit kami sa mga kapanguhaan. Ug ang solusyon mao kini. Hunahunaa nga nagsulay ka sa dula. Mahimo ka usab nga adunay ingon nga kahimtang sa parehas nga oras nga adunay naghatag usa ka load, usa pa. Ug ingon usa ka sangputanan, nakita nimo ang dili masabtan nga mga sukatan. Bisan ang parehas nga problema mahimo sa prod. Kung gusto nimo nga susihon ang pipila ka hangyo ug imong makita nga adunay pipila ka mga problema niini - kini hinay nga molihok, nan sa tinuud ang problema wala sa hangyo, apan sa kamatuoran nga adunay usa ka matang sa parallel load.

Ug busa, importante dinhi nga mag-focus kung unsa ang plano, unsa nga mga lakang ang atong buhaton sa plano ug kung pila ang datos nga atong mapataas alang niini. Ang kamatuoran nga ang among mga disk, pananglitan, ma-load sa usa ka butang, kini labi nga makaapekto sa oras. Apan mabanabana nato kung unsa ka load kini nga hangyo pinaagi sa gidaghanon sa datos. Dili kaayo importante nga sa samang higayon adunay usa ka matang sa pagpatay.

Naa koy duha ka pangutana. Nindot kaayo ni nga butang. Adunay ba mga kaso diin ang datos sa produksiyon kritikal, sama sa mga numero sa credit card? Aduna na bay andam o lahi na nga buluhaton? Ug ang ikaduha nga pangutana - aduna bay ingon niini alang sa MySQL?

Mahitungod sa datos. Magbuhat mi og obfuscation hangtod mabuhat namo. Apan kung eksakto ka nga nag-deploy Joe, kung dili nimo hatagan ang pag-access sa mga developer, wala’y pag-access sa datos. Ngano man? Tungod kay si Joe wala magpakita ug datos. Nagpakita lamang kini sa mga sukatan, mga plano ug mao ra kana. Gituyo kini, tungod kay kini usa sa mga kinahanglanon sa among kliyente. Gusto nila nga makahimo sa pag-optimize nga dili hatagan ang tanan nga pag-access.

Mahitungod sa MySQL. Kini nga sistema mahimong magamit alang sa bisan unsang butang nga nagtipig sa estado sa disk. Ug tungod kay naghimo kami og mga Postgres, gihimo na namo ang tanan nga automation alang sa Postgres una. Gusto namon nga i-automate ang pagkuha sa datos gikan sa usa ka backup. Gi-configure namon ang mga Postgres sa husto. Nahibal-an namon kung giunsa paghimo ang mga plano nga magkatugma, ug uban pa.

Apan tungod kay ang sistema kay extensible, mahimo usab kini gamiton alang sa MySQL. Ug adunay ingon nga mga pananglitan. Ang Yandex adunay susama nga butang, apan wala nila kini gipatik bisan asa. Gigamit nila kini sulod sa Yandex.Metrica. Ug adunay usa ka istorya bahin sa MySQL. Apan ang mga teknolohiya managsama, ZFS.

Salamat sa report! Naa sab koy duha ka pangutana. Gihisgutan nimo nga ang pag-clone mahimong magamit alang sa analytics, pananglitan sa paghimo og dugang nga mga indeks didto. Mahimo ba nimo isulti ang usa ka gamay kung giunsa kini molihok?

Ug mangutana dayon ko sa ikaduhang pangutana bahin sa pagkaparehas sa mga baroganan, pagkaparehas sa mga plano. Ang plano nagdepende usab sa mga estadistika nga nakolekta sa Postgres. Giunsa nimo pagsulbad kini nga problema?

Sumala sa analytics, wala'y piho nga mga kaso, tungod kay wala pa namo kini gigamit, apan adunay ingon nga oportunidad. Kung maghisgot kita bahin sa mga indeks, unya hunahunaa nga ang usa ka pangutana naggukod sa usa ka lamesa nga adunay gatusan ka milyon nga mga rekord ug usa ka kolum nga kasagaran wala ma-index sa prod. Ug gusto namong kuwentahon ang pipila ka datos didto. Kung kini nga hangyo ipadala sa prod, nan adunay posibilidad nga kini yano sa prod, tungod kay ang hangyo didto iproseso sa usa ka minuto.

Ok, maghimo kita og nipis nga clone nga dili makalilisang nga mohunong sulod sa pipila ka minuto. Ug aron mas komportable ang pagbasa sa analytics, magdugang kami og mga indeks alang sa mga kolum diin kami interesado sa datos.

Ang indeks pagahimoon matag higayon?

Mahimo nimo kini aron mahikap namon ang datos, maghimo mga snapshot, unya makabawi kami gikan sa kini nga snapshot ug magmaneho sa mga bag-ong hangyo. Sa ato pa, mahimo nimo kini aron mapataas nimo ang mga bag-ong clone nga adunay mga naka-affix nga indeks.

Sama sa pangutana bahin sa estadistika, kung ibalik naton gikan sa usa ka backup, kung buhaton naton ang pagkopya, nan parehas ra ang atong mga istatistika. Tungod kay kami adunay tibuuk nga istruktura sa pisikal nga datos, kana, dad-on namon ang datos sama sa tanan nga mga sukatan sa istatistika usab.

Ania ang laing problema. Kung mogamit ka usa ka solusyon sa panganod, nan ang mga lohikal nga dump lamang ang magamit didto, tungod kay ang Google, Amazon wala magtugot kanimo sa pagkuha usa ka pisikal nga kopya. Adunay usa ka problema.

Salamat sa report. Adunay duha ka maayong pangutana dinhi bahin sa MySQL ug pagpaambit sa kapanguhaan. Apan, sa tinuud, kini tanan moabut sa kamatuoran nga kini dili usa ka hilisgutan sa piho nga DBMS, apan sa file system sa kinatibuk-an. Ug, sumala niana, ang mga isyu sa pagpaambit sa kapanguhaan kinahanglan usab nga masulbad gikan didto, dili sa katapusan nga kini Postgres, apan sa file system, sa server, pananglitan.

Medyo lahi ang akong pangutana. Mas duol kini sa multi-layered database, diin adunay daghang mga layer. Pananglitan, nag-set up kami og napulo ka terabyte nga pag-update sa imahe, among gikopya. Ug labi namong gigamit kini nga solusyon alang sa mga database. Ang pagkopya nagpadayon, ang datos gi-update. Adunay 100 ka mga empleyado nga nagtrabaho nga managsama dinhi, nga kanunay nga naglansad niining lainlaing mga shot. Unsay buhaton? Giunsa pagsiguro nga wala’y panagbangi, nga gilansad nila ang usa, ug pagkahuman nabag-o ang file system, ug kini nga mga litrato nangadto?

Dili sila moadto tungod kay ingon niana ang pagtrabaho sa ZFS. Mahimo natong tipigan nga gilain sa usa ka hilo ang mga pagbag-o sa sistema sa file nga moabut tungod sa pagkopya. Ug itago ang mga clone nga gigamit sa mga developer sa mga daan nga bersyon sa datos. Ug kini molihok alang kanamo, ang tanan naa sa kahusay niini.

Kini nahimo nga ang pag-update mahitabo ingon usa ka dugang nga layer, ug ang tanan nga bag-ong mga litrato moadto na, base sa kini nga layer, di ba?

Gikan sa nangaging mga lut-od nga gikan sa nangaging mga replikasyon.

Ang nangaging mga lut-od mahulog, apan sila maghisgot sa daan nga layer, ug sila ba magkuha og bag-ong mga hulagway gikan sa katapusang layer nga nadawat sa update?

Sa kinatibuk-an, oo.

Unya ingon nga sangputanan kita adunay hangtod sa usa ka igos sa mga sapaw. Ug sa paglabay sa panahon sila kinahanglan nga ma-compress?

Oo tama ang tanan. Adunay usa ka bintana. Nagtipig kami matag semana nga mga snapshot. Nagdepende kini kung unsa nga kapanguhaan ang naa nimo. Kung adunay ka abilidad sa pagtipig og daghang data, mahimo nimong tipigan ang mga snapshot sa dugay nga panahon. Dili sila mobiya sa ilang kaugalingon. Walay data corruption. Kung ang mga snapshot wala na sa panahon, ingon sa among panan-aw, i.e. nagdepende kini sa palisiya sa kompanya, nan mahimo ra namon nga mapapas kini ug mapahawa ang wanang.

Hello, salamat sa report! Pangutana bahin ni Joe. Miingon ka nga dili gusto sa kustomer nga hatagan ang tanan og access sa datos. Sa estrikto nga pagsulti, kung ang usa ka tawo adunay resulta sa Explain Analyze, nan mahimo niya nga makit-an ang datos.

Ingon ana. Pananglitan, mahimo natong isulat: "PILI SA DIIN ang email = ngadto niana". Kana mao, dili nato makita ang datos mismo, apan makita nato ang pipila ka dili direkta nga mga timailhan. Kini kinahanglan nga masabtan. Apan sa laing bahin, naa ra ang tanan. Kami adunay usa ka log audit, kami adunay kontrol sa ubang mga kauban nga nakakita usab kung unsa ang gibuhat sa mga developer. Ug kung adunay usa nga mosulay sa pagbuhat niini, nan ang serbisyo sa seguridad moabut kanila ug magtrabaho sa kini nga isyu.

Maayong hapon Salamat sa report! Naa koy mubo nga pangutana. Kung ang kompanya wala mogamit sa Slack, aduna bay bisan unsang pagbugkos niini karon, o posible ba nga ang mga developers mag-deploy sa mga higayon aron makonektar ang usa ka aplikasyon sa pagsulay sa mga database?

Karon adunay usa ka link sa Slack, i.e. wala’y lain nga mensahero, apan gusto ko usab nga maghimo suporta alang sa ubang mga mensahero. Unsay imong mahimo? Mahimo nimong i-deploy ang DB Lab nga wala si Joe, adto sa tabang sa REST API o sa tabang sa among plataporma ug paghimo og mga clone ug pagkonektar sa PSQL. Apan mahimo kini kung andam ka nga hatagan ang imong mga developer og access sa datos, tungod kay wala nay bisan unsang screen.

Dili nako kinahanglan kini nga layer, apan kinahanglan nako ang ingon nga oportunidad.

Unya oo, mahimo kini.

Source: www.habr.com

Idugang sa usa ka comment