{"id":74327,"date":"2020-03-16T08:42:33","date_gmt":"2020-03-16T05:42:33","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund"},"modified":"2020-03-16T08:42:33","modified_gmt":"2020-03-16T05:42:33","slug":"tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund","title":{"rendered":"Tenk\u00e9 z\u00e1lohovanie s\u00faborov\u00fdch syst\u00e9mov Linux. Ako vytv\u00e1ra\u0165 pracovn\u00e9 k\u00f3pie trojterabajtovej datab\u00e1zy MySQL za 20 sek\u00fand","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Tenk\u00e9 z\u00e1lohovanie s\u00faborov\u00fdch syst\u00e9mov Linux. Ako vytv\u00e1ra\u0165 pracovn\u00e9 k\u00f3pie trojterabajtovej datab\u00e1zy MySQL za 20 sek\u00fand\" src=\"\/wp-content\/uploads\/2020\/03\/7502785a78bd6f069913e97829ff2f63.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vol\u00e1m sa Juraj, som ved\u00faci t\u00edmu syst\u00e9movej administr\u00e1cie v Sitimobil. Dnes sa podel\u00edm o sk\u00fasenosti s technol\u00f3giou tenk\u00e9ho rezervovania (thin provisioning) s\u00faborov\u00fdch syst\u00e9mov Linux a poviem, ako ju m\u00f4\u017eeme aplikova\u0165 v technologick\u00fdch CI\/CD procesoch spolo\u010dnosti. Rozoberieme situ\u00e1ciu, ke\u010f pre automatick\u00e9 testovanie k\u00f3du pri dod\u00e1vke do produkcie potrebujeme \u010do najr\u00fdchlej\u0161ie k\u00f3pie datab\u00e1z MySQL, \u010do najbli\u017e\u0161ie k \u201eproduk\u010dnej\u201c verzii, dostupn\u00e9 na \u010d\u00edtanie aj z\u00e1pis.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"vvedenie-zachem-davat-vrednye-sovety\">\u00davod: Pre\u010do d\u00e1va\u0165 \u0161kodliv\u00e9 rady?<\/h3>\n<p><\/p>\n<p>Logick\u00e1 ot\u00e1zka, ve\u010f existuj\u00fa vypracovan\u00e9 mechanizmy migr\u00e1cie sch\u00e9m datab\u00e1z do testovac\u00edch prostred\u00ed. Pre\u010do v\u00f4bec priv\u00e1dza\u0165 hlavn\u00fa ne\u0161ardovan\u00fa DBMS do tak\u00fdch objemov? A na testovanie nie s\u00fa potrebn\u00e9 v\u0161etky \u00fadaje. Pok\u00fasim sa vysvetli\u0165.<\/p>\n<p><\/p>\n<p>Pribli\u017ene pred rokom, na pozad\u00ed akt\u00edvneho rastu na\u0161ej taxi agreg\u00e1tora (v roku 2018 sme vzr\u00e1stli pribli\u017ene 15-n\u00e1sobne pod\u013ea dokon\u010den\u00fdch j\u00e1zd), sa zv\u00fd\u0161ili objemy d\u00e1t, z\u00e1\u0165a\u017e na serveroch, frekvencia nasadzovania. Ocitli sme sa v nasleduj\u00facej situ\u00e1cii:<\/p>\n<p><\/p>\n<ul>\n<li>Hlavn\u00e1 datab\u00e1za MySQL sa zv\u00fd\u0161ila na pribli\u017ene 1000 tabuliek s celkov\u00fdm objemom 2,5 TB a na\u010falej r\u00e1stla.<\/li>\n<li>Nebolo mo\u017en\u00e9 r\u00fdchlo za\u0161ardova\u0165 a rozdeli\u0165 datab\u00e1zu. To neumo\u017enil star\u00fd pr\u00edstup \u201enap\u00ed\u0161em do datab\u00e1zy, \u010do chcem a ako chcem\u201c, mno\u017estvo JOINov a vn\u00fatorn\u00fdch z\u00e1vislost\u00ed tabuliek.<\/li>\n<li>Nebolo mechanizmu migr\u00e1ci\u00ed sch\u00e9my datab\u00e1zy do testovac\u00edch prostred\u00ed.<\/li>\n<li>Nebolo automatizovan\u00e9 testovanie k\u00f3du pri nasaden\u00ed do prev\u00e1dzky.<\/li>\n<\/ul>\n<p><\/p>\n<p>Posledn\u00fd probl\u00e9m sme chceli vyrie\u0161i\u0165 \u010do najr\u00fdchlej\u0161ie. U\u017e boli nap\u00edsan\u00e9 testy Postman na kontrolu hlavn\u00e9ho PHP monolitu, ale ch\u00fdbala aktu\u00e1lna datab\u00e1za. Z\u00e1rove\u0148 sme nemohli vytv\u00e1ra\u0165 repliky v noci, robi\u0165 z nej prim\u00e1rnu a d\u00e1va\u0165 ju do prev\u00e1dzky cez de\u0148: ve\u013emi ve\u013ek\u00e9 mno\u017estvo nasaden\u00ed a zmien, vr\u00e1tane v \u00fadajoch a sch\u00e9me datab\u00e1zy, by urobilo st\u00e1nok nefunk\u010dn\u00fdm u\u017e v polovici d\u0148a. A obmedzi\u0165 nasadenia len na pracovn\u00fd de\u0148 by bolo neefekt\u00edvne. <\/p>\n<p><\/p>\n<p>Napriek tomu bola \u00faloha splnen\u00e1: prv\u00fd funk\u010dn\u00fd st\u00e1nok sme z\u00edskali u\u017e za dva t\u00fd\u017edne. Po uplynulom roku pre\u0161iel mnoh\u00fdmi zmenami a na\u010falej sa pou\u017e\u00edva.<\/p>\n<p><\/p>\n<p>\u010ealej podrobne op\u00ed\u0161em v\u0161etky kroky a f\u00e1zy v\u00fdvoja na\u0161ej \u010dinnosti. Uvid\u00edte, \u017ee t\u00e1to met\u00f3da si zasl\u00fa\u017ei existenciu.<\/p>\n<p><\/p>\n<p><strong>\u010co je to \u201etenk\u00e9 rezervovanie\u201c?<\/strong><br \/>\nToto je hardv\u00e9rov\u00e1 alebo softv\u00e9rov\u00e1 technol\u00f3gia (zn\u00e1ma aj ako sparse volumes), ktor\u00e1 umo\u017e\u0148uje priradi\u0165 viac po\u017eadovan\u00fdch zdrojov, ne\u017e s\u00fa k dispoz\u00edcii. Priraden\u00fd objem by mal sp\u013a\u0148a\u0165 krit\u00e9ri\u00e1 just-enough (len to\u013eko, ko\u013eko potrebujeme) a just-in-time (v potrebnom \u010dase). Hlavne sa tenk\u00e9 rezervovanie pou\u017e\u00edva v r\u00f4znych SYST\u00c9MOCH \u00daLO\u017dISKA, aby sa poskytoval diskov\u00fd priestor v po\u017eadovan\u00fdch objemoch, ktor\u00e9 prekra\u010duj\u00fa skuto\u010dne dostupn\u00e9. Technol\u00f3gia je podporovan\u00e1 r\u00f4znymi s\u00faborov\u00fdmi syst\u00e9mami, ako s\u00fa LVM2, ZFS, BTRFS. Je \u0161iroko pou\u017e\u00edvan\u00e1 v hyperv\u00edzoroch virtualiz\u00e1cie. Tenk\u00e9 rezervovanie n\u00e1m umo\u017enilo r\u00fdchlo vytvori\u0165 z snapshotov hlavn\u00e9ho oddielu s d\u00e1tami to\u013eko k\u00f3pi\u00ed tohto oddielu, ko\u013eko potrebujeme (data adres\u00e1r DB MySQL).<\/p>\n<p><\/p>\n<h3 id=\"pervyy-stend-tehnologiya-thin-lvm\">Prv\u00fd st\u00e1nok, technol\u00f3gia Thin LVM<\/h3>\n<p><\/p>\n<p>T\u00fato kapitolu m\u00f4\u017eeme nazva\u0165 aj \u201eAko vytvori\u0165 maxim\u00e1lne r\u00fdchle sn\u00edmky ve\u013ek\u00fdch objemov \u00fadajov pomocou <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/lvmthin.7.html\">Thin LVM<\/a><\/noindex>, zn\u00ed\u017een\u00edm stability s\u00faborov\u00e9ho syst\u00e9mu a DB MySQL na neprijate\u013en\u00e9 \u00farovne\u201c. <\/p>\n<p><\/p>\n<p>Ke\u010f\u017ee sme u\u017e pou\u017e\u00edvali LVM na vytv\u00e1ranie hlavn\u00fdch oddielov OS, rozhodli sme sa za\u010da\u0165 pr\u00e1ve s \u0148ou. Najprv sme potrebovali samostatn\u00fd fyzick\u00fd stroj \u2014 replik\u00e1ciu na\u0161ej hlavnej datab\u00e1zy MySQL, na ktorom by sme mohli na po\u017eiadanie vytv\u00e1ra\u0165 snapshot repliky a spusti\u0165 ho ved\u013ea ako samostatn\u00fd in\u0161tanciu MySQL. Po\u010das testovania sme povolili pou\u017eitie zmien v tejto in\u0161tancii a po dokon\u010den\u00ed testov sme ju \u00faspe\u0161ne odstr\u00e1nili. Konfigur\u00e1cia servera bola nasledovn\u00e1:<\/p>\n<p><\/p>\n<ul>\n<li>2 x Intel Silver 4114 (10\u00d72,2 GHz HT)<\/li>\n<li>8 x 32 GB DDR4 <\/li>\n<li>8 x 1920 GB Intel SSD v RAID ovl\u00e1da\u010di Adaptec v RAID-10<\/li>\n<\/ul>\n<p><\/p>\n<p>O v\u00fdbere medzi RAID ovl\u00e1da\u010dom a softv\u00e9rov\u00fdm RAID MD by sa dala nap\u00edsa\u0165 samostatn\u00e1 t\u00e9ma. Povieme len, \u017ee na\u0161u vo\u013ebu ovplyvnili dva faktory:<\/p>\n<p><\/p>\n<ul>\n<li>V \u010dase definovania \u00falohy sme na v\u0161etk\u00fdch DB in\u0161talovali na RAID ovl\u00e1da\u010de, tak\u017ee sa d\u00e1 poveda\u0165, \u017ee to historicky vy\u0161lo takto. <\/li>\n<li>Rozdiel vo v\u00fdkonnosti v syntetick\u00fdch testoch s\u00faborov\u00e9ho syst\u00e9mu a testoch s r\u00f4znymi oper\u00e1ciami v MySQL bol minim\u00e1lny. <\/li>\n<\/ul>\n<p><\/p>\n<p>Rozdelili sme v\u00fdsledn\u00fd RAID-10: vytvorili sme jednotn\u00fa Volume Group (VG) na cel\u00fd objem (s n\u00e1kladmi pribli\u017ene 6,7 GB) a vytvorili sme logick\u00fa partition (Logical Volume, LV) pod syst\u00e9m na 50 GB. V be\u017enej situ\u00e1cii by sme cel\u00e9 ostatn\u00e9 miesto ur\u010dovali pod oddiel s MySQL. Ale potrebovali sme tenk\u00e9 z\u00e1lohovanie, preto sme najprv vytvorili takzvan\u00fd pool, v r\u00e1mci ktor\u00e9ho sme vytvorili oddiel pod \/var\/lib\/mysql s objemom 3,5 TB (na z\u00e1klade predpokladan\u00fdch objemov datab\u00e1zy):<\/p>\n<p><\/p>\n<pre><code class=\"bash\">lvcreate -l 100%FREE -T vga\/thin\nlvcreate -V 3.5T -T vga\/thin -n mysql<\/code><\/pre>\n<p><\/p>\n<p>Naform\u00e1tovali sme oddiel do ext4, pripojili sme ho, ulo\u017eili replik\u00e1ciu a z\u00edskali p\u00f4vodn\u00fd syst\u00e9m. Potom sme vytvorili API vrstvu, ktor\u00e1 m\u00e1 vytv\u00e1ra\u0165 snapshoty, sp\u00fa\u0161\u0165a\u0165 in\u0161tanciu datab\u00e1zy MySQL na stanovenom porte a odstra\u0148ova\u0165 vytvoren\u00fa in\u0161tanciu. Ke\u010f\u017ee sa pri tom pou\u017e\u00edvaj\u00fa v\u00fdlu\u010dne syst\u00e9mov\u00e9 volania, ako jazyk p\u00edsania skriptov sme zvolili oby\u010dajn\u00fd bash, a ako prepojenie API HTTP \u2192 bash sme rozvinuli open source rie\u0161enie. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/phonkee\/goexpose\">goexpose<\/a><\/noindex>, nap\u00edsan\u00e9 v Go. <\/p>\n<p><\/p>\n<p>Niekedy zverejn\u00edme na\u0161e bash skripty v open source, ale zatia\u013e jednoducho pop\u00ed\u0161em z\u00e1kladn\u00fd algoritmus:<\/p>\n<p><\/p>\n<p>Vytvorenie hlavn\u00e9ho snapshotu snapmain:<\/p>\n<p><\/p>\n<ol>\n<li>Zastavujeme hlavn\u00fa replik\u00e1ciu.<\/li>\n<li>Umiest\u0148ujeme z\u00e1mku na oper\u00e1cie so snapshotom snapmain.<\/li>\n<li>Vytv\u00e1rame nov\u00fd snapshot snapmain.<\/li>\n<li>Sp\u00fa\u0161\u0165ame MySQL a odstra\u0148ujeme z\u00e1mku.<\/li>\n<\/ol>\n<p><\/p>\n<p>Vytvorenie datab\u00e1zy na \u013eubovo\u013enom porte zo snapmain:<\/p>\n<p><\/p>\n<ol>\n<li>Umiest\u0148ujeme z\u00e1mku na konkr\u00e9tnu in\u0161tanciu datab\u00e1zy (port).<\/li>\n<li>Kontrolujeme pr\u00edtomnos\u0165 z\u00e1mky vytvorenia hlavn\u00e9ho snapshotu. Ak existuje, \u010dak\u00e1me a overujeme ka\u017ed\u00fdch 5 sek\u00fand.<\/li>\n<li>Kontrolujeme, \u010di existuje star\u00fd LV oddiel in\u0161tancie.<br \/>\n3.1 Ak \u00e1no, zastavujeme pomocou kill -9 in\u0161tanciu MySQL a odstra\u0148ujeme LV oddiel.<\/li>\n<li>Vytv\u00e1rame z snapmain nov\u00fa in\u0161tanciu.<\/li>\n<li>Pripravujeme a montujeme adres\u00e1re pre t\u00fato in\u0161tanciu.<\/li>\n<li>Zbavujeme sa znakov sl\u00e1va (s\u00faborov) a sp\u00fa\u0161\u0165ame in\u0161tanciu MySQL.<\/li>\n<li>Rob\u00edme z nej master.<\/li>\n<li>Odstra\u0148ujeme z\u00e1mku.<\/li>\n<\/ol>\n<p><\/p>\n<p>Odstr\u00e1nenie datab\u00e1zy na \u013eubovo\u013enom porte:<\/p>\n<p><\/p>\n<ol>\n<li>Umiest\u0148ujeme z\u00e1mku na konkr\u00e9tnu in\u0161tanciu datab\u00e1zy (port).<\/li>\n<li>Zab\u00edjame in\u0161tanciu MySQL pomocou kill -9.<\/li>\n<li>Odmountujeme adres\u00e1re.<\/li>\n<li>Odstra\u0148ujeme LV oddiel a odstra\u0148ujeme z\u00e1mku.<\/li>\n<\/ol>\n<p><\/p>\n<p>Pr\u00edklad pr\u00edkazov na klonovanie oddielov novej in\u0161tancie datab\u00e1zy:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">lvcreate -n stage_3307 -s vga\/snapmain\nlvchange -ay -K vga\/stage_3307\nmount -o noatime,nodiratime,data=writeback \/dev\/mapper\/vga-stage_3307 \/mnt\/stage_3307<\/code><\/pre>\n<p><\/p>\n<p>Teraz v\u00e1m poviem o hlavn\u00fdch probl\u00e9moch, s ktor\u00fdmi sme sa stretli pri pou\u017e\u00edvan\u00ed tenk\u00e9ho rezervovania. Narazili sme na v\u00fdkonnos\u0165 SSD diskov. K tomu do\u0161lo kv\u00f4li \u0161pecifik\u00e1m Thin LVM: v podstate pracuje na \u00farovni zariadenia s n\u00edzko\u00farov\u0148ov\u00fdmi blokmi ve\u013ekosti predvolene 4 MB. Ako to vyzeralo:<\/p>\n<p><\/p>\n<ol>\n<li>Vytv\u00e1rame sn\u00edmku z hlavn\u00e9ho oddielu \/var\/lib\/mysql.<\/li>\n<li>Sp\u00fa\u0161\u0165ame replik\u00e1ciu, aby sme dobehli majstra.<\/li>\n<li>Ak\u00e1ko\u013evek zmena v tabu\u013ek\u00e1ch repliky vy\u017eaduje uchovanie star\u00fdch, nezmenen\u00fdch blokov d\u00e1t v oddiele sn\u00edmky.<\/li>\n<li>Ak\u00e1ko\u013evek zmena v spustenom testovacom instance vy\u017eaduje uchovanie star\u00fdch, nezmenen\u00fdch blokov d\u00e1t v oddiele sklonenej sn\u00edmky pre t\u00fato in\u0161tanciu.<\/li>\n<li>Sme na 100% vy\u0165a\u017een\u00ed vstupno-v\u00fdstupn\u00fdch oper\u00e1ci\u00ed na zariaden\u00ed, \u010do spoma\u013euje ak\u00e9ko\u013evek oper\u00e1cie a vedie k postupn\u00e9mu zaost\u00e1vaniu repliky.<\/li>\n<li>Na konci pracovn\u00e9ho d\u0148a m\u00e1me zaost\u00e1vaj\u00faci stand o nieko\u013eko hod\u00edn.<\/li>\n<\/ol>\n<p><\/p>\n<p>Ako sme sa s t\u00fdmto vysporiadali, aby sme dosiahli rozumnej\u0161\u00ed v\u00fdsledok (hlavn\u00e9 body):<\/p>\n<p><\/p>\n<p>RAID kontrol\u00e9r:<\/p>\n<p><\/p>\n<ul>\n<li>Deaktivovali sme v\u0161etky druhy cachovania predvolene. <\/li>\n<li>Nastavili sme writeback (ke\u010f s\u00fa d\u00e1ta v cache, z\u00e1pis sa dokon\u010d\u00ed sk\u00f4r, ne\u017e je skuto\u010dne ulo\u017een\u00fd na disk).<\/li>\n<\/ul>\n<p><\/p>\n<p>S\u00faborov\u00fd syst\u00e9m:<\/p>\n<p><\/p>\n<ul>\n<li>Na mount point \/var\/lib\/mysql sme uviedli <em>noatime,nodiratime,data=writeback<\/em><\/li>\n<li>Deaktivovali sme journaling ext4 pomocou tune2fs.<\/li>\n<\/ul>\n<p><\/p>\n<p>MySQL:<\/p>\n<p><\/p>\n<ul>\n<li>Uvedli sme <em>innodb_flush_method = O_DSYNC<\/em> (zv\u00fd\u0161ili sme r\u00fdchlos\u0165 z\u00e1pisu, \u010d\u00edm sme zn\u00ed\u017eili spo\u013eahlivos\u0165).<\/li>\n<li>Deaktivovali sme journaling, logy nie s\u00fa potrebn\u00e9.<\/li>\n<li>Uvedli sme <em>innodb_buffer_pool_size = 4G<\/em> (\u010d\u00edm men\u0161ia je ve\u013ekos\u0165 InnoDB poolu, t\u00fdm r\u00fdchlej\u0161ie sa MySQL zastav\u00ed pri vypnut\u00ed, a t\u00fdm r\u00fdchlej\u0161ie vytvor\u00edme sn\u00edmku).<\/li>\n<\/ul>\n<p><\/p>\n<p>Toto rozhodne nie je \u00fapln\u00fd zoznam, najm\u00e4 pokia\u013e ide o MySQL. Av\u0161ak, \u010fal\u0161ie zmeny s\u00fa minoritn\u00e9 a \u010dasto s\u00fa aplikovate\u013en\u00e9 nie v\u017edy a nie presne. Napr\u00edklad, v snahe od\u013eah\u010di\u0165 disky sme dokonca presunuli <em>innodb_parallel_doublewrite_path<\/em> do \/dev\/shm, \u010do v niektor\u00fdch pr\u00edpadoch pri \u0161tarte nespr\u00e1vne ukon\u010denej in\u0161tancie \u0161etrilo a\u017e 5 sek\u00fand.<\/p>\n<p><\/p>\n<p>Pre\u010do zastavujeme MySQL pred vytvoren\u00edm sn\u00edmky? Ve\u010f m\u00f4\u017eeme urobi\u0165 sn\u00edmku z pracuj\u00facej repliky. Je to pravda, len\u017ee nov\u00e1 in\u0161tancia DB na tejto sn\u00edmke bude predvolene pova\u017eovan\u00e1 za po\u0161koden\u00fa a pri spusten\u00ed si bude vy\u017eadova\u0165 \u00fapln\u00e9 skenovanie. Zastavi\u0165 replik\u00e1ciu je ur\u010dite r\u00fdchlej\u0161ie, aj ke\u010f to nakoniec predstavuje najdlh\u0161iu oper\u00e1ciu v celom procese.<\/p>\n<p><\/p>\n<p>Nakoniec sme z\u00edskali prijate\u013enej\u0161ie \u010dasovanie a funk\u010dn\u00fd st\u00e1nok. Aj ke\u010f, ako ukazuje najpresved\u010divej\u0161\u00ed graf oneskorenia hlavnej repliky, situ\u00e1cia je st\u00e1le \u010faleko od ide\u00e1lu:<br \/>\n<img decoding=\"async\" alt=\"Tenk\u00e9 z\u00e1lohovanie s\u00faborov\u00fdch syst\u00e9mov Linux. Ako vytv\u00e1ra\u0165 pracovn\u00e9 k\u00f3pie trojterabajtovej datab\u00e1zy MySQL za 20 sek\u00fand\" src=\"\/wp-content\/uploads\/2020\/03\/9bb7bb7d9abfea124a75616deec57f05.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Medzi \u010fal\u0161\u00edmi nev\u00fdhodami stoj\u00ed za zmienku takmer nemo\u017enos\u0165 monitorovania poolu Thin LVM: okrem syst\u00e9mov\u00fdch \u0161tandardn\u00fdch funkci\u00ed iostat nie je mo\u017en\u00e9 zisti\u0165, ktor\u00fd prvok poolu v s\u00fa\u010dasnosti vytv\u00e1ra najv\u00e4\u010d\u0161iu z\u00e1\u0165a\u017e na s\u00faborov\u00fd syst\u00e9m.<\/p>\n<p><\/p>\n<p>Osobitne treba zd\u00f4razni\u0165 jednu ve\u013ek\u00fa nev\u00fdhodu spojen\u00fa s vy\u0161\u0161ie pop\u00edsanou optimaliz\u00e1ciou: vytvorili sme YOLO-st\u00e1nok. Pribli\u017ene raz za jeden a\u017e dva mesiace ext4 nezvl\u00e1dala tak\u00e9to zneu\u017e\u00edvanie a bezn\u00e1dejne sa rozpadla, \u010do si vy\u017eadovalo jej p\u0159eform\u00e1tovanie a opnieuw nahr\u00e1vanie repliky. Z\u00edskali sme r\u00fdchlos\u0165, ale bezn\u00e1dejne sme zni\u010dili stabilitu.<\/p>\n<p><\/p>\n<p>Na ak\u00e9 metriky sa treba s\u00fastredi\u0165 pri prev\u00e1dzke Thin LVM:<\/p>\n<p><\/p>\n<ul>\n<li>Percento \u00fadajov v tenkom poole<\/li>\n<li>Percento metad\u00e1t v tenkom poole<\/li>\n<\/ul>\n<p><\/p>\n<p>Ak n\u00e1\u0161 st\u00e1nok pre\u017eije skon\u010den\u00e9 miesto pre \u00fadaje (sta\u010d\u00ed vy\u010disti\u0165 disky), skon\u010den\u00e9 miesto pre metad\u00e1ta povedie k \u00fapln\u00e9mu kolapsu poolu a potrebe jeho op\u00e4tovn\u00e9ho vytvorenia od nuly.<\/p>\n<p><\/p>\n<p>S\u00faborov\u00fd syst\u00e9m vn\u00fatri poolu sa \u010dasom ve\u013emi fragmentuje. Odpor\u00fa\u010dam ka\u017ed\u00fdch 24 hod\u00edn spusti\u0165 cez cron pr\u00edkaz <em>fstrim -v \/var\/lib\/mysql<\/em>.<\/p>\n<p><\/p>\n<p>Medzi v\u00fdsledkami:<\/p>\n<p><\/p>\n<ul>\n<li>Technol\u00f3gia sa d\u00e1 \u013eahko aplikova\u0165, rovnako ako samotn\u00fd LVM, a nevy\u017eaduje \u0161peci\u00e1lne kvalifik\u00e1cie in\u017einiera.<\/li>\n<li>Bude to dobre fungova\u0165 pre mal\u00e9 datab\u00e1zy a menej za\u0165a\u017een\u00e9. \u010c\u00edm men\u0161ia je datab\u00e1za, t\u00fdm menej polo\u017eiek sa pres\u00fava cez s\u00faborov\u00fd syst\u00e9m vn\u00fatri poolu, a t\u00fdm ni\u017e\u0161ia je z\u00e1\u0165a\u017e na disky.<\/li>\n<li>Pre na\u0161u \u00falohu sme za\u010dali h\u013eada\u0165 in\u00e9 rie\u0161enia, o ktor\u00fdch sa bude hovori\u0165 v nasleduj\u00facej kapitole.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vtoroy-stend-tehnologiya-zfs\">Druh\u00fd st\u00e1nok, technol\u00f3gia ZFS<\/h3>\n<p><\/p>\n<p>Pred mnoh\u00fdmi rokmi som mal sk\u00fasenosti so s\u00faborov\u00fdm syst\u00e9mom ZFS, ale vtedy ZFS skuto\u010dne dobre fungovala na svojom rodnom opera\u010dnom syst\u00e9me Solaris. Existovala portovan\u00e1 verzia na FreeBSD s celkom dobr\u00fdm \u00farov\u0148ou implement\u00e1cie. Bol tu aj nedokon\u010den\u00fd port na Linux, ktor\u00fd m\u00e1lokto pou\u017e\u00edval. Vzh\u013eadom na \u0161trukt\u00faru ukladania d\u00e1t typu B-tree (mimochodom, rovnak\u00fa \u0161trukt\u00faru ukladania m\u00e1 aj InnoDB MySQL) sa ZFS m\u00e1lo osved\u010dila na in\u0161tal\u00e1ci\u00e1ch s ve\u013emi ve\u013ek\u00fdm po\u010dtom s\u00faborov. To v\u0161etko spolu s potrebou nau\u010di\u0165 sa technol\u00f3gie na dlh\u00fa dobu vy\u0161krtlo tento s\u00faborov\u00fd syst\u00e9m z mojej praxe. Objavili sa ext4 a xfs, ktor\u00e9 sa stali \u0161tandardom. Ale vzh\u013eadom na to, \u017ee ZFS v na\u0161om pr\u00edpade vyhovuje viac ne\u017e dostato\u010dne, a aj verzia pre Linux, s\u00fadiac pod\u013ea recenzi\u00ed, sa vyvinula na celkom rozumn\u00fd produkt (hoci nie je plne podporovan\u00e1, \u010do znamen\u00e1, \u017ee syst\u00e9m na ZFS je mo\u017en\u00e9 nastavi\u0165 \u00faplne od za\u010diatku len s r\u00f4znymi \u010darami), rozhodli sme sa to vysk\u00fa\u0161a\u0165.<\/p>\n<p><\/p>\n<p>Z pochopite\u013en\u00fdch d\u00f4vodov sme zvolili stojan s rovnakou konfigur\u00e1ciou (s v\u00fdnimkou RAID ovl\u00e1da\u010da). Nain\u0161talovali sme osem SSD diskov s kapacitou 1920 GB. Nebol z\u00e1ujem vytv\u00e1ra\u0165 vlastn\u00fd sie\u0165ov\u00fd obraz na in\u0161tal\u00e1ciu servera na hol\u00fa ZFS, preto sme odobrali 50 GB z ka\u017ed\u00e9ho disku a vytvorili na nich MD RAID-10 pre syst\u00e9m. Zvy\u0161n\u00fdch 1950 GB na ka\u017edom disku sme spojili do anal\u00f3gu ZFS RAID-10:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">zpool create zpool mirror \/dev\/sda2 \/dev\/sdb2 mirror \/dev\/sdc2 \/dev\/sdd2 mirror \/dev\/sde2 \/dev\/sdf2 mirror \/dev\/sdg2 \/dev\/sdh2<\/code><\/pre>\n<p><\/p>\n<p>Vytvorili sme oddiely pre MySQL:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">zfs create zpool\/mysql\nzfs set compression=gzip zpool\/mysql\nzfs set recordsize=128k zpool\/mysql\nzfs set atime=off zpool\/mysql\nzfs create zpool\/mysql\/data\nzfs set recordsize=16k zpool\/mysql\/data\nzfs set primarycache=metadata zpool\/mysql\/data\nzfs set mountpoint=\/var\/lib\/mysql zpool\/mysql\/data<\/code><\/pre>\n<p><\/p>\n<p>V\u0161imnite si, \u017ee sme zapli \u0161tandardn\u00e9 gzip kompresiu d\u00e1t. Na\u0161e serverov\u00e9 procesorov\u00e9 zdroje s\u00fa ve\u013emi siln\u00e9 a nie s\u00fa \u00faplne vyu\u017eit\u00e9. V d\u00f4sledku toho sa 3 TB na\u0161ich datab\u00e1z premenili na 1,6 TB, a preto\u017ee najslab\u0161\u00edm \u010dl\u00e1nkom, ako aj v minulom pr\u00edpade, je maxim\u00e1lny v\u00fdkon diskov, \u010d\u00edm menej d\u00e1t \u2014 t\u00fdm lep\u0161ie, hne\u010f od za\u010diatku z\u00edskavame skvel\u00fd bonus zo ZFS! V \u0161pi\u010dke, pri plnom za\u0165a\u017een\u00ed, m\u00e1 gzip na \u00fadr\u017ebu vyu\u017ei\u0165 a\u017e 4 jadr\u00e1, ale n\u00e1m to neprek\u00e1\u017ea.<\/p>\n<p><\/p>\n<p>\u010ealej implement\u00e1cia pokra\u010dovala r\u00fdchlej\u0161ie. Bez probl\u00e9mov sme preniesli nastavenia repliky MySQL z LVM stojana. Museli sme str\u00e1vi\u0165 ur\u010dit\u00fd \u010das prepisovan\u00edm skriptov na pr\u00edkazy ZFS, ale vo v\u0161eobecnosti zostali algoritmy rovnak\u00e9. Pr\u00edklad vytvorenia snapshotu:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">zfs set snapdir=visible zpool\/mysql\/data\nzfs create zpool\/stage_3307\nzfs clone zpool\/mysql\/data@snapmain zpool\/stage_3307\/data\nzfs set mountpoint=\/mnt\/stage_3307 zpool\/stage_3307\/data<\/code><\/pre>\n<p><\/p>\n<p>Z \u010fal\u0161ieho lad\u011bn\u00ed: vy\u010dlenili sme v pam\u00e4ti ZFS oddiely s metad\u00e1tami a logmi l2arc a zil. Pre na\u0161u \u00falohu sa uk\u00e1zalo, \u017ee to bolo nadmern\u00e9, ale zatia\u013e sme t\u00fato optimaliz\u00e1ciu zachovali, v pr\u00edpade potreby sa \u013eahko zmen\u00ed. Z negat\u00edvnych efektov \u2014 po re\u0161tartovan\u00ed servera sa musia pr\u00edslu\u0161n\u00e9 oblasti pam\u00e4te znovu vytvori\u0165. V\u00fd\u0148atok z zpool status:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">logs\n      \/dev\/shm\/zil_slog.img  ONLINE       0     0     0\ncache\n      \/dev\/shm\/l2arc.img     ONLINE       0     0     0<\/code><\/pre>\n<p><\/p>\n<p>V takejto konfigur\u00e1cii sme za\u010dali testova\u0165 st\u00e1nok a dosiahli sme skvel\u00e9 v\u00fdsledky: so dvoma s\u00fa\u010dasne pracuj\u00facimi in\u0161tanciami DB (a akt\u00edvnou hlavnou replikou) na sn\u00edmkach sme dosiahli za\u0165a\u017eenie diskov 50-60 %.<\/p>\n<p><\/p>\n<p>Osvojili sme si na\u0161u hlavn\u00fa problematiku, \u010do je vidno v grafe zdr\u017eania replik\u00e1cie (porovnajte s predch\u00e1dzaj\u00facim grafom v sekcii Thin LVM):<br \/>\n<img decoding=\"async\" alt=\"Tenk\u00e9 z\u00e1lohovanie s\u00faborov\u00fdch syst\u00e9mov Linux. Ako vytv\u00e1ra\u0165 pracovn\u00e9 k\u00f3pie trojterabajtovej datab\u00e1zy MySQL za 20 sek\u00fand\" src=\"\/wp-content\/uploads\/2020\/03\/15df9283838a4662ff0f68accfde4089.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Okrem a v\u010faka tomu sme sa zna\u010dne zrychlili vo v\u0161etk\u00fdch oper\u00e1ci\u00e1ch: \u00fapln\u00e9 vytvorenie sn\u00edmku s zastaven\u00edm a spusten\u00edm repliky trv\u00e1 a\u017e 40 sek\u00fand, nasadenie z sn\u00edmku novej in\u0161tancie MySQL trv\u00e1 a\u017e 20 sek\u00fand. To viac ako vyhovuje n\u00e1m aj na\u0161im testom softv\u00e9rov\u00e9ho k\u00f3du.<\/p>\n<p><\/p>\n<p>Medzi v\u00fdsledkami:<\/p>\n<p><\/p>\n<ul>\n<li>V\u00fdsledky \u00faplne uspokojili na\u0161u potrebu z\u00edska\u0165 k\u00f3piu ostr\u00e9ho DB pre testovanie k\u00f3du.<\/li>\n<li>Technol\u00f3gia si vy\u017eaduje vstup: treba pochopi\u0165, \u010do je ZFS a ako s \u0148ou pracova\u0165.<\/li>\n<li>Nepresk\u00famali sme aktu\u00e1lny stav fungovania ZFS s ve\u013ek\u00fdm mno\u017estvom (od 1 mili\u00f3na) mal\u00fdch s\u00faborov. Ale predpoklad\u00e1me, \u017ee probl\u00e9m pretrv\u00e1va, preto by som t\u00fato s\u00faborov\u00fd syst\u00e9m neodpor\u00fa\u010dal pre ak\u00e9ko\u013evek \u00falo\u017eisk\u00e1 s\u00faborov.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-dalshe\">\u010co \u010falej?<\/h3>\n<p><\/p>\n<p>V r\u00e1mci st\u00e1nku robi\u0165 viac ni\u010d, v\u00fdsledok n\u00e1s uspokojuje. Mo\u017eno sa nesk\u00f4r prid\u00e1me do nastavenia replik\u00e1cie st\u00e1nku v\u00fdnimky tabuliek, ktor\u00e9 nie s\u00fa potrebn\u00e9 na testovanie, to e\u0161te viac skr\u00e1ti objem DB. Testovali sme syst\u00e9m BTRFS a jeho implement\u00e1ciu technol\u00f3gie tenk\u00e9ho z\u00e1lohovania. Napriek tomu, tak\u00e1 \u00faloha u\u017e nestoj\u00ed, ke\u010f\u017ee hlavn\u00fd cie\u013e bol dosiahnut\u00fd. V celku, samozrejme, by sme chceli opusti\u0165 vy\u0161\u0161ie op\u00edsan\u00fd pr\u00edstup \u2014 implementova\u0165 funk\u010dn\u00e9 migr\u00e1cie DB do testovacieho prostredia, vytvori\u0165 samostatn\u00fa testovaciu l\u00edniu DB, venova\u0165 sa shardovaniu hlavnej datab\u00e1zy. Mnoh\u00e9 z tohto u\u017e realizujeme, o \u010dom sa ur\u010dite dozviete v bud\u00facich \u010dl\u00e1nkoch. <\/p>\n<p><\/p>\n<h3 id=\"itogi\">Zhrnutie<\/h3>\n<p><\/p>\n<p>Prvotn\u00e1 \u00faloha bola vyrie\u0161en\u00e1, aj ke\u010f nezvy\u010dajn\u00fdm sp\u00f4sobom. V medzi v\u00fdsledkoch boli op\u00edsan\u00e9 v\u00fdhody a nev\u00fdhody ka\u017edej z pou\u017eit\u00fdch technol\u00f3gi\u00ed, preto sa po\u010fme rozhodn\u00fa\u0165, ktor\u00fa technol\u00f3giu a kedy m\u00f4\u017eeme pou\u017ei\u0165:<\/p>\n<p><\/p>\n<ul>\n<li>Thin LVM \u2014 na mal\u00fdch DB a ke\u010f sa nechce alebo nie je \u010das \u0161tudova\u0165 ZFS.<\/li>\n<li>ZFS \u2014 ak m\u00e1te sk\u00fasenosti s pr\u00e1cou s \u0148ou alebo mo\u017enos\u0165 str\u00e1vi\u0165 \u010das na \u0161t\u00fadium v ak\u00fdchko\u013evek situ\u00e1ci\u00e1ch. <\/li>\n<\/ul>\n<p><\/p>\n<p>Na vy\u0161\u0161ej \u00farovni predstavovania je tento \u010dl\u00e1nok \u2014 nie len porovnanie technol\u00f3gie dvoch s\u00faborov\u00fdch syst\u00e9mov. Hlavn\u00e1 my\u0161lienka, ktor\u00fa by som chcel predlo\u017ei\u0165 a upevni\u0165, spo\u010d\u00edva v tom, \u017ee sa netreba b\u00e1\u0165 myslie\u0165 netradi\u010dne v situ\u00e1ci\u00e1ch kritick\u00fdch pre biznis, a bra\u0165 len hotov\u00e9 recepty. Kedysi sme mohli v\u0161etk\u00fdm technick\u00fdm oddelen\u00edm pokr\u00fati\u0165 hlavou a poveda\u0165, \u017ee \u00faloha vytvorenia trojterabajtov\u00fdch k\u00f3pi\u00ed DB za menej ako min\u00fatu je nevykonate\u013en\u00e1, a nepotrebujeme riskantn\u00e9 technol\u00f3gie, po\u010fme to urobi\u0165 tak, ako sa m\u00e1. Bolo by to mo\u017en\u00e9, ale pri\u0161li by sme pribli\u017ene o pol roka a\u017e rok a mnoho ciest klientov (cesty \u2014 n\u00e1\u0161 hlavn\u00fd obchodn\u00fd ukazovate\u013e) bez testov a po\u010das implement\u00e1cie. Ne\u0161tandardn\u00fdm postupom sme stratili nie tak ve\u013ea \u010dasu na implement\u00e1ciu, z\u00edskali sme sk\u00fasenosti s nov\u00fdmi a zabudnut\u00fdmi star\u00fdmi technol\u00f3giami a poskytli sme testovanie pr\u00e1ve v tom okamihu, ke\u010f sme to ve\u013emi potrebovali. Nezamenite\u013ene to pozit\u00edvne ovplyvnilo v\u0161etky na\u0161e ukazovatele. V\u00fdber je v\u017edy na v\u00e1s, a my z na\u0161ej strany budeme pokra\u010dova\u0165 v rozpr\u00e1van\u00ed na na\u0161om blogu o zauj\u00edmav\u00fdch aktu\u00e1lnych a bud\u00facich \u00faspechoch.<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/492172\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u042e\u0440\u0438\u0439, \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0421\u0438\u0442\u0438\u043c\u043e\u0431\u0438\u043b. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u0442\u043e\u043d\u043a\u043e\u0433\u043e \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (thin provisioning) \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c Linux \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 CI\/CD-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u041c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435 \u0435\u0433\u043e \u0432 production \u043d\u0430\u043c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043a\u043e\u043f\u0438\u0438 \u0411\u0414 MySQL, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":74328,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-74327","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u043e\u043d\u043a\u043e\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c Linux. \u041a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043a\u043e\u043f\u0438\u0438 \u0442\u0440\u0435\u0445\u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u0421\u0423\u0411\u0414 MySQL \u0437\u0430 20 \u0441\u0435\u043a\u0443\u043d\u0434 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-16T05:42:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-16T05:42:33+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tenk\u00e9 rezervovanie s\u00faborov\u00fdch syst\u00e9mov Linux. Ako vytv\u00e1ra\u0165 pracovn\u00e9 k\u00f3pie trojtis\u00edc gigabajtovej datab\u00e1zy MySQL za 20 sek\u00fand | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u043e\u043d\u043a\u043e\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c Linux. \u041a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043a\u043e\u043f\u0438\u0438 \u0442\u0440\u0435\u0445\u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u0421\u0423\u0411\u0414 MySQL \u0437\u0430 20 \u0441\u0435\u043a\u0443\u043d\u0434 | ProHoster","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-03-16T05:42:33+00:00","article:modified_time":"2020-03-16T05:42:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"74327","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:16:23","updated":"2022-10-01 23:42:57","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/74327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=74327"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/74327\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/74328"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=74327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=74327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=74327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}