{"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\/cs\/blog\/administrirovanie\/tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund","title":{"rendered":"Tenk\u00e9 z\u00e1lohov\u00e1n\u00ed souborov\u00fdch syst\u00e9m\u016f Linux. Jak vytv\u00e1\u0159et pracovn\u00ed kopie t\u0159\u00edterabajtov\u00e9 datab\u00e1ze MySQL za 20 sekund","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Tenk\u00e9 z\u00e1lohov\u00e1n\u00ed souborov\u00fdch syst\u00e9m\u016f Linux. Jak vytv\u00e1\u0159et pracovn\u00ed kopie t\u0159\u00edterabajtov\u00e9 datab\u00e1ze MySQL za 20 sekund\" src=\"\/wp-content\/uploads\/2020\/03\/7502785a78bd6f069913e97829ff2f63.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jmenuji se Jurij, jsem vedouc\u00ed skupiny syst\u00e9mov\u00e9ho administrativn\u00edho \u0159\u00edzen\u00ed ve spole\u010dnosti Sitimobil. Dnes se pod\u011bl\u00edm o zku\u0161enosti s technologi\u00ed tenk\u00e9ho rezervov\u00e1n\u00ed (thin provisioning) souborov\u00fdch syst\u00e9m\u016f Linux a uk\u00e1\u017eu, jak ji lze uplatnit v technologick\u00fdch CI\/CD procesech firmy. Pod\u00edv\u00e1me se na situaci, kdy pro automatick\u00e9 testov\u00e1n\u00ed k\u00f3du p\u0159i jeho dod\u00e1n\u00ed do produkce pot\u0159ebujeme co nejrychleji kopie datab\u00e1z\u00ed MySQL, co nejbl\u00ed\u017ee k '\u017eivotn\u00ed' verzi, dostupn\u00e9 pro \u010dten\u00ed i z\u00e1pis.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"vvedenie-zachem-davat-vrednye-sovety\">\u00davod: pro\u010d d\u00e1vat \u0161kodliv\u00e9 rady?<\/h3>\n<p><\/p>\n<p>Logick\u00e1 ot\u00e1zka, proto\u017ee existuj\u00ed osv\u011bd\u010den\u00e9 mechanismy migrace sch\u00e9mat datab\u00e1z\u00ed do testovac\u00edch prost\u0159ed\u00ed. Pro\u010d vlastn\u011b p\u0159iv\u00e1d\u011bt hlavn\u00ed nemodul\u00e1rn\u00ed datab\u00e1zi k takov\u00fdm objem\u016fm? A pro testov\u00e1n\u00ed nejsou pot\u0159ebn\u00e1 v\u0161echna data. Pokus\u00edm se to vysv\u011btlit.<\/p>\n<p><\/p>\n<p>P\u0159ibli\u017en\u011b p\u0159ed rokem, na pozad\u00ed aktivn\u00edho r\u016fstu na\u0161eho agreg\u00e1toru taxi (v roce 2018 vzrostl po\u010det dokon\u010den\u00fdch j\u00edzd p\u0159ibli\u017en\u011b 15kr\u00e1t), vzrostly objemy dat, zat\u00ed\u017een\u00ed server\u016f a frekvence nasazen\u00ed. Ocitli jsme se v n\u00e1sleduj\u00edc\u00ed situaci:<\/p>\n<p><\/p>\n<ul>\n<li>Hlavn\u00ed datab\u00e1ze MySQL vzrostla p\u0159ibli\u017en\u011b na 1000 tabulek s celkov\u00fdm objemem 2,5 TB a nad\u00e1le rostla.<\/li>\n<li>Nebyla mo\u017enost rychle shardovat a rozd\u011blit datab\u00e1zi. To neumo\u017e\u0148oval star\u00fd p\u0159\u00edstup 'p\u00ed\u0161u do datab\u00e1ze, co chci a jak chci', spousta JOIN\u016f a vnit\u0159n\u00edch z\u00e1vislost\u00ed tabulek.<\/li>\n<li>Nebyl mechanismus migrac\u00ed sch\u00e9matu datab\u00e1ze do testovac\u00edch prost\u0159ed\u00ed.<\/li>\n<li>Nebyla automatizovan\u00e1 testov\u00e1n\u00ed k\u00f3du p\u0159i nasazen\u00ed do provozu.<\/li>\n<\/ul>\n<p><\/p>\n<p>Posledn\u00ed probl\u00e9m bylo cht\u011bn\u00e9 vy\u0159e\u0161it co nejrychleji. Byly ji\u017e naps\u00e1ny testy Postman pro ov\u011b\u0159en\u00ed hlavn\u00edho PHP monolitu, ale chyb\u011bla aktu\u00e1ln\u00ed datab\u00e1ze. P\u0159itom jsme nemohli v noci vytvo\u0159it replikaci, ud\u011blat ji masterem a p\u0159edat ji na roztrh\u00e1n\u00ed p\u0159es den: velmi velk\u00e9 mno\u017estv\u00ed nasazen\u00ed a zm\u011bn, v\u010detn\u011b dat a sch\u00e9matu datab\u00e1ze, by zp\u016fsobilo, \u017ee by stroj p\u0159estal fungovat u\u017e v polovin\u011b dne. A omezovat nasazen\u00ed pouze pracovn\u00edm dnem by bylo neefektivn\u00ed. <\/p>\n<p><\/p>\n<p>Nicm\u00e9n\u011b, \u00fakol byl spln\u011bn: prvn\u00ed pracovn\u00ed stroj jsme z\u00edskali u\u017e za dva t\u00fddny. B\u011bhem uplynul\u00e9ho roku pro\u0161el mnoha zm\u011bnami a nad\u00e1le se pou\u017e\u00edv\u00e1.<\/p>\n<p><\/p>\n<p>D\u00e1le podrobn\u011b pop\u00ed\u0161u v\u0161echny kroky a f\u00e1ze v\u00fdvoje na\u0161eho \u0159e\u0161en\u00ed. Ujist\u00edte se, \u017ee tato metoda si zaslou\u017e\u00ed pr\u00e1vo na existenci.<\/p>\n<p><\/p>\n<p><strong>Co je 'tenk\u00e9 rezervov\u00e1n\u00ed'?<\/strong><br \/>\nJedn\u00e1 se o hardwarovou nebo softwarovou technologii (jin\u00fd n\u00e1zev \u2014 sparse volumes), kter\u00e1 umo\u017e\u0148uje alokovat v\u011bt\u0161\u00ed mno\u017estv\u00ed po\u017eadovan\u00e9ho zdroje, ne\u017e je k dispozici. P\u0159itom alokovan\u00fd objem mus\u00ed spl\u0148ovat krit\u00e9ria just-enough (tolik, kolik je pot\u0159eba) a just-in-time (v pot\u0159ebn\u00e9m \u010dase). V\u011bt\u0161inou se tenk\u00e9 rezervov\u00e1n\u00ed pou\u017e\u00edv\u00e1 v r\u016fzn\u00fdch S\u0158BD, aby se poskytovalo diskov\u00e9 m\u00edsto ve pot\u0159ebn\u00fdch objemech, kter\u00e9 p\u0159esahuj\u00ed skute\u010dn\u011b dostupn\u00e9. Tato technologie je podporov\u00e1na r\u016fzn\u00fdmi souborov\u00fdmi syst\u00e9my, nap\u0159\u00edklad LVM2, ZFS, BTRFS. Je \u0161iroce pou\u017e\u00edv\u00e1na v hypervizorech virtualizace. Tenk\u00e9 rezervov\u00e1n\u00ed n\u00e1m umo\u017enilo rychle vytvo\u0159it z jednotliv\u00fdch sn\u00edmk\u016f hlavn\u00edho odd\u00edlu s daty tolik kopi\u00ed tohoto odd\u00edlu, kolik pot\u0159ebujeme (data adres\u00e1\u0159 DBMS MySQL).<\/p>\n<p><\/p>\n<h3 id=\"pervyy-stend-tehnologiya-thin-lvm\">Prvn\u00ed stojan, technologie Thin LVM<\/h3>\n<p><\/p>\n<p>Tuto kapitolu lze nazvat \"Jak vytvo\u0159it co nejrychlej\u0161\u00ed sn\u00edmky velk\u00fdch objem\u016f dat pomoc\u00ed <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/lvmthin.7.html\">Thin LVM<\/a><\/noindex>\", \u010d\u00edm\u017e se stabilita souborov\u00e9ho syst\u00e9mu a DBMS MySQL sn\u00ed\u017e\u00ed na ned\u016fstojn\u00fd \u00farove\u0148.\" <\/p>\n<p><\/p>\n<p>Proto\u017ee jsme ji\u017e pou\u017e\u00edvali LVM k vytvo\u0159en\u00ed z\u00e1kladn\u00edch odd\u00edl\u016f OS, rozhodli jsme se za\u010d\u00edt pr\u00e1v\u011b s n\u00ed. Na za\u010d\u00e1tek jsme pot\u0159ebovali samostatn\u00fd fyzick\u00fd stroj \u2014 replikaci na\u0161\u00ed hlavn\u00ed datab\u00e1ze MySQL, na kter\u00e9m bychom mohli na po\u017e\u00e1d\u00e1n\u00ed vytv\u00e1\u0159et sn\u00edmek replikace a spou\u0161t\u011bt jej vedle jako samostatnou instanci MySQL. B\u011bhem testov\u00e1n\u00ed jsme povolili prov\u00e1d\u011bt na t\u00e9to instanci m\u011bn\u00edc\u00ed operace a po dokon\u010den\u00ed test\u016f jsme ji \u00fasp\u011b\u0161n\u011b odstranili. Konfigurace serveru byla n\u00e1sleduj\u00edc\u00ed:<\/p>\n<p><\/p>\n<ul>\n<li>2 x Intel Silver 4114 (10&#215;2,2 GHz HT)<\/li>\n<li>8 x 32 GB DDR4 <\/li>\n<li>8 x 1920 GB Intel SSD v RAID kontrol\u00e9ru Adaptec v RAID-10<\/li>\n<\/ul>\n<p><\/p>\n<p>Odborn\u00fd v\u00fdb\u011br mezi RAID kontrol\u00e9rem a softwarov\u00fdm RAID MD by si zaslou\u017eil samostatn\u00fd \u010dl\u00e1nek. Mohu pouze \u0159\u00edci, \u017ee na\u0161e volba byla ovlivn\u011bna dv\u011bma faktory:<\/p>\n<p><\/p>\n<ul>\n<li>V dob\u011b stanovov\u00e1n\u00ed \u00fakolu jsme v\u0161echny S\u0158BD instalovali na RAID kontrol\u00e9ry, tak\u017ee se d\u00e1 \u0159\u00edct, \u017ee t\u00edmto zp\u016fsobem to historicky vzniklo. <\/li>\n<li>Rozd\u00edl ve v\u00fdkonu p\u0159i syntetick\u00fdch testech souborov\u00e9ho syst\u00e9mu a testech s r\u016fzn\u00fdmi operacemi v MySQL byl minim\u00e1ln\u00ed. <\/li>\n<\/ul>\n<p><\/p>\n<p>Rozd\u011blili jsme vytvo\u0159en\u00fd RAID-10: vytvo\u0159ili jsme jednotnou Volume Group (VG) na cel\u00fd objem (s p\u0159idan\u00fdmi n\u00e1klady p\u0159ibli\u017en\u011b 6,7 GB) a vytvo\u0159ili logick\u00e9 odd\u011blen\u00ed (Logical Volume, LV) pro syst\u00e9m o velikosti 50 GB. V b\u011b\u017en\u00e9m p\u0159\u00edpad\u011b bychom zb\u00fdvaj\u00edc\u00ed prostor p\u0159id\u011blili pro odd\u011blen\u00ed s MySQL. Av\u0161ak pot\u0159ebovali jsme tenk\u00e9 z\u00e1lohov\u00e1n\u00ed, a proto jsme nejprve vytvo\u0159ili takzvan\u00fd pool, uvnit\u0159 kter\u00e9ho jsme vytvo\u0159ili odd\u011blen\u00ed pro \/var\/lib\/mysql o velikosti 3,5 TB (na z\u00e1klad\u011b p\u0159edpokl\u00e1dan\u00e9ho objemu datab\u00e1z\u00ed):<\/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 jsme odd\u011blen\u00ed na ext4, p\u0159ipojili jsme ho, zapsali replikaci a z\u00edskali p\u016fvodn\u00ed stav. Pot\u00e9 jsme vytvo\u0159ili API, kter\u00e9 by m\u011blo vytv\u00e1\u0159et sn\u00edmky, spou\u0161t\u011bt instanci datab\u00e1ze MySQL na dan\u00e9m portu a odstra\u0148ovat vytvo\u0159enou instanci. Jeliko\u017e se pou\u017e\u00edvaj\u00ed pouze syst\u00e9mov\u00e9 vol\u00e1n\u00ed, jako jazyk pro psan\u00ed skript\u016f jsme zvolili b\u011b\u017en\u00fd bash, a jako vazbu API HTTP \u2192 bash jsme nasadili open source \u0159e\u0161en\u00ed. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/phonkee\/goexpose\">goexpose<\/a><\/noindex>, napsan\u00e9 v Go. <\/p>\n<p><\/p>\n<p>Jednou zve\u0159ejn\u00edme na\u0161e bash skripty jako open source, ale zat\u00edm prost\u011b pop\u00ed\u0161u hlavn\u00ed algoritmus:<\/p>\n<p><\/p>\n<p>Vytvo\u0159en\u00ed hlavn\u00edho sn\u00edmku snapmain:<\/p>\n<p><\/p>\n<ol>\n<li>Zastav\u00edme hlavn\u00ed replikaci.<\/li>\n<li>Nastav\u00edme z\u00e1mek na operace se sn\u00edmkem snapmain.<\/li>\n<li>Vytvo\u0159\u00edme nov\u00fd sn\u00edmek snapmain.<\/li>\n<li>Spust\u00edme MySQL a odstran\u00edme z\u00e1mek.<\/li>\n<\/ol>\n<p><\/p>\n<p>Vytvo\u0159en\u00ed datab\u00e1ze na libovoln\u00e9m portu ze snapmain:<\/p>\n<p><\/p>\n<ol>\n<li>Nastav\u00edme z\u00e1mek na konkr\u00e9tn\u00ed instanci datab\u00e1ze (port).<\/li>\n<li>Ov\u011b\u0159\u00edme p\u0159\u00edtomnost z\u00e1mku na vytvo\u0159en\u00ed hlavn\u00edho sn\u00edmku. Pokud existuje, \u010dek\u00e1me a znovu kontrolujeme ka\u017ed\u00fdch 5 sekund.<\/li>\n<li>Kontrolujeme, zda existuje star\u00fd LV odd\u00edl instance.<br \/>\n3.1 Pokud existuje, zastav\u00edme pomoc\u00ed kill -9 instanci MySQL a odstran\u00edme LV odd\u00edl.<\/li>\n<li>Vytvo\u0159\u00edme z snapmain novou instanci.<\/li>\n<li>P\u0159iprav\u00edme a p\u0159ipoj\u00edme adres\u00e1\u0159e pro tuto instanci.<\/li>\n<li>Odstran\u00edme znaky otroka (soubory) a spust\u00edme instanci MySQL.<\/li>\n<li>U\u010din\u00edme z n\u00ed master.<\/li>\n<li>Odstran\u00edme z\u00e1mek.<\/li>\n<\/ol>\n<p><\/p>\n<p>Odstran\u011bn\u00ed datab\u00e1ze na libovoln\u00e9m portu:<\/p>\n<p><\/p>\n<ol>\n<li>Nastav\u00edme z\u00e1mek na konkr\u00e9tn\u00ed instanci datab\u00e1ze (port).<\/li>\n<li>Zabijeme instanci MySQL pomoc\u00ed kill -9.<\/li>\n<li>Odpoj\u00edme adres\u00e1\u0159e.<\/li>\n<li>Odstran\u00edme LV odd\u00edl a zru\u0161\u00edme z\u00e1mek.<\/li>\n<\/ol>\n<p><\/p>\n<p>P\u0159\u00edklad p\u0159\u00edkaz\u016f pro klonov\u00e1n\u00ed odd\u00edl\u016f nov\u00e9 instance datab\u00e1ze:<\/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>Nyn\u00ed v\u00e1m pov\u00edm o hlavn\u00edm probl\u00e9mu, se kter\u00fdm jsme se p\u0159i pou\u017e\u00edv\u00e1n\u00ed tenk\u00e9ho z\u00e1lohov\u00e1n\u00ed setkali. Narazili jsme na v\u00fdkon SSD disk\u016f. K tomu do\u0161lo d\u00edky vlastnostem Thin LVM: ta v podstat\u011b pracuje na \u00farovni za\u0159\u00edzen\u00ed pomoc\u00ed n\u00edzko\u00farov\u0148ov\u00fdch blok\u016f o defaultn\u00ed velikosti 4 MB. Jak to vypadalo:<\/p>\n<p><\/p>\n<ol>\n<li>Vytv\u00e1\u0159\u00edme sn\u00edmek z hlavn\u00edho odd\u00edlu \/var\/lib\/mysql.<\/li>\n<li>Spou\u0161t\u00edme replikaci, abychom dohnali master.<\/li>\n<li>Jak\u00e1koliv zm\u011bna v tabulk\u00e1ch repliky nut\u00ed uchov\u00e1vat star\u00e9, nem\u011bnn\u00e9 bloky dat v odd\u00edlu sn\u00edmku.<\/li>\n<li>Jak\u00e1koliv zm\u011bna v b\u011b\u017e\u00edc\u00edm testovac\u00edm instance nut\u00ed uchov\u00e1vat star\u00e9, nem\u011bnn\u00e9 bloky dat v odd\u00edlu zkop\u00edrovan\u00e9ho sn\u00edmku pro tuto instanci.<\/li>\n<li>Z\u00edsk\u00e1v\u00e1me z\u00e1t\u011b\u017e operac\u00ed vstupu a v\u00fdstupu na 100% na za\u0159\u00edzen\u00ed, zpomalen\u00ed jak\u00fdchkoliv operac\u00ed a postupn\u00e9 zaost\u00e1v\u00e1n\u00ed repliky.<\/li>\n<li>Na konci pracovn\u00edho dne m\u00e1me st\u00e1n s n\u011bkolika hodinov\u00fdm zpo\u017ed\u011bn\u00edm.<\/li>\n<\/ol>\n<p><\/p>\n<p>Jak jsme se s t\u00edm vypo\u0159\u00e1dali, abychom z\u00edskali rozumn\u011bj\u0161\u00ed v\u00fdsledek (hlavn\u00ed body):<\/p>\n<p><\/p>\n<p>RAID kontroler:<\/p>\n<p><\/p>\n<ul>\n<li>Vypnuli jsme ve\u0161ker\u00e9 typy ke\u0161ov\u00e1n\u00ed. <\/li>\n<li>Nastavili jsme writeback (kdy\u017e jsou data v mezipam\u011bti, z\u00e1pis se dokon\u010d\u00ed d\u0159\u00edve, ne\u017e dojde k skute\u010dn\u00e9mu ulo\u017een\u00ed na disk).<\/li>\n<\/ul>\n<p><\/p>\n<p>Souborov\u00fd syst\u00e9m:<\/p>\n<p><\/p>\n<ul>\n<li>Na bodu p\u0159ipojen\u00ed \/var\/lib\/mysql jsme uvedli <em>noatime,nodiratime,data=writeback<\/em><\/li>\n<li>Vypnuli jsme \u017eurn\u00e1lov\u00e1n\u00ed ext4 pomoc\u00ed tune2fs.<\/li>\n<\/ul>\n<p><\/p>\n<p>MySQL:<\/p>\n<p><\/p>\n<ul>\n<li>Uvedli jsme <em>innodb_flush_method = O_DSYNC<\/em> (zv\u00fd\u0161ili jsme rychlost z\u00e1pisu a t\u00edm sn\u00ed\u017eili spolehlivost).<\/li>\n<li>Vypnuli jsme \u017eurn\u00e1lov\u00e1n\u00ed, logy nejsou pot\u0159eba.<\/li>\n<li>Uvedli jsme <em>innodb_buffer_pool_size = 4G<\/em> (\u010d\u00edm men\u0161\u00ed je velikost InnoDB poolu, t\u00edm rychleji se MySQL zastav\u00ed p\u0159i v\u00fdpadku a t\u00edm rychleji vytvo\u0159\u00edme sn\u00edmek).<\/li>\n<\/ul>\n<p><\/p>\n<p>To rozhodn\u011b nen\u00ed \u00fapln\u00fd seznam, zvl\u00e1\u0161\u0165 co se t\u00fdk\u00e1 MySQL. Nicm\u00e9n\u011b ostatn\u00ed zm\u011bny jsou drobn\u00e9 a \u010dasto se neaplikuj\u00ed v\u017edy a p\u0159esn\u011b. Nap\u0159\u00edklad ve snaze zat\u00ed\u017eit disky m\u00e9n\u011b jsme dokonce p\u0159em\u00edstili <em>innodb_parallel_doublewrite_path<\/em> do \/dev\/shm, co\u017e v n\u011bkter\u00fdch p\u0159\u00edpadech p\u0159i spu\u0161t\u011bn\u00ed nespr\u00e1vn\u011b dokon\u010den\u00e9 instance \u0161et\u0159ilo a\u017e 5 sekund.<\/p>\n<p><\/p>\n<p>Pro\u010d zastavujeme MySQL p\u0159ed t\u00edm, ne\u017e ud\u011bl\u00e1me sn\u00edmek? V\u017edy\u0165 m\u016f\u017eeme ud\u011blat sn\u00edmek z b\u011b\u017e\u00edc\u00ed repliky. To je pravda, ale nov\u00fd instance datab\u00e1ze na tomto sn\u00edmku bude defaultn\u011b pova\u017eov\u00e1na za po\u0161kozenou a bude vy\u017eadovat \u00fapln\u00e9 skenov\u00e1n\u00ed p\u0159i spu\u0161t\u011bn\u00ed. Zastavit replikaci je rozhodn\u011b rychlej\u0161\u00ed, i kdy\u017e se to nakonec ukazuje b\u00fdt nejdel\u0161\u00ed operac\u00ed v cel\u00e9m procesu.<\/p>\n<p><\/p>\n<p>V d\u016fsledku jsme z\u00edskali p\u0159ijateln\u011bj\u0161\u00ed \u010dasov\u00e1n\u00ed a funk\u010dn\u00ed stanovi\u0161t\u011b. A\u010dkoliv, jak ukazuje nejp\u0159evislej\u0161\u00ed graf zpo\u017ed\u011bn\u00ed replikace hlavn\u00ed repliky, situace je st\u00e1le daleko od ide\u00e1lu:<br \/>\n<img decoding=\"async\" alt=\"Tenk\u00e9 z\u00e1lohov\u00e1n\u00ed souborov\u00fdch syst\u00e9m\u016f Linux. Jak vytv\u00e1\u0159et pracovn\u00ed kopie t\u0159\u00edterabajtov\u00e9 datab\u00e1ze MySQL za 20 sekund\" src=\"\/wp-content\/uploads\/2020\/03\/9bb7bb7d9abfea124a75616deec57f05.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mezi dal\u0161\u00ed nev\u00fdhody stoj\u00ed za zm\u00ednku praktick\u00e1 nemo\u017enost monitorov\u00e1n\u00ed tenk\u00e9ho LVM poolu: krom\u011b syst\u00e9mov\u00fdch standardn\u00edch funkc\u00ed iostat nen\u00ed mo\u017en\u00e9 zjistit, nap\u0159\u00edklad, kter\u00fd prvek poolu v sou\u010dasnosti vyv\u00edj\u00ed nejv\u011bt\u0161\u00ed z\u00e1t\u011b\u017e na souborov\u00fd syst\u00e9m.<\/p>\n<p><\/p>\n<p>Zvl\u00e1\u0161\u0165 je t\u0159eba zm\u00ednit jednu velkou nev\u00fdhodu spojenou s v\u00fd\u0161e popsanou optimalizac\u00ed: dostali jsme YOLO-stanovi\u0161t\u011b. P\u0159ibli\u017en\u011b jednou za m\u011bs\u00edc a p\u016fl ext4 nevydr\u017eela podobn\u00e9 p\u0159et\u011b\u017eov\u00e1n\u00ed a bez varov\u00e1n\u00ed se porouchala, vy\u017eaduj\u00edc\u00ed form\u00e1tov\u00e1n\u00ed a novou nahr\u00e1vku repliky. I kdy\u017e jsme z\u00edskali na rychlosti, stabilitu jsme beznad\u011bjn\u011b zhor\u0161ili.<\/p>\n<p><\/p>\n<p>Na jak\u00e9 metriky je t\u0159eba d\u00e1vat pozor p\u0159i provozu tenk\u00e9ho LVM:<\/p>\n<p><\/p>\n<ul>\n<li>Thin pool data %<\/li>\n<li>Thin pool metadata %<\/li>\n<\/ul>\n<p><\/p>\n<p>Pokud n\u00e1\u0161 stan p\u0159e\u017eije nedostatek m\u00edsta pro data (sta\u010d\u00ed vy\u010distit disky), nedostatek m\u00edsta pro metadata povede k \u00fapln\u00e9mu zhroucen\u00ed poolu a nutnosti jeho op\u011btovn\u00e9ho vytvo\u0159en\u00ed od nuly.<\/p>\n<p><\/p>\n<p>Souborov\u00fd syst\u00e9m uvnit\u0159 poolu se \u010dasem velmi fragmentuje. Doporu\u010duji spou\u0161t\u011bt ka\u017ed\u00fd den pomoc\u00ed cronu p\u0159\u00edkaz <em>fstrim -v \/var\/lib\/mysql<\/em>.<\/p>\n<p><\/p>\n<p>Meziv\u00fdsledky:<\/p>\n<p><\/p>\n<ul>\n<li>Technologie je snadno aplikovateln\u00e1, stejn\u011b jako samotn\u00fd LVM, a nevy\u017eaduje zvl\u00e1\u0161tn\u00ed kvalifikaci in\u017een\u00fdra.<\/li>\n<li>Dob\u0159e se hod\u00ed pro mal\u00e9 datab\u00e1ze a ty, kter\u00e9 nejsou p\u0159\u00edli\u0161 zat\u011b\u017eov\u00e1ny. \u010c\u00edm men\u0161\u00ed datab\u00e1ze, t\u00edm m\u00e9n\u011b \u010d\u00e1st\u00ed se p\u0159esouv\u00e1 uvnit\u0159 souborov\u00e9ho syst\u00e9mu v poolu, a t\u00edm men\u0161\u00ed z\u00e1t\u011b\u017e na disky.<\/li>\n<li>Pro n\u00e1\u0161 \u00fakol jsme za\u010dali hledat jin\u00e1 \u0159e\u0161en\u00ed, o \u010dem\u017e bude \u0159e\u010d v n\u00e1sleduj\u00edc\u00ed \u010d\u00e1sti.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vtoroy-stend-tehnologiya-zfs\">Druh\u00fd stan, technologie ZFS<\/h3>\n<p><\/p>\n<p>Kdysi d\u00e1vno jsem m\u011bl zku\u0161enosti se souborov\u00fdm syst\u00e9mem ZFS, ale tehdy ZFS spolehliv\u011b fungoval na sv\u00e9m domovsk\u00e9m opera\u010dn\u00edm syst\u00e9mu Solaris. Existovala portovan\u00e1 verze na FreeBSD s dostate\u010dn\u011b dobrou \u00farovn\u00ed implementace. Byla tak\u00e9 nedokon\u010den\u00e1 verze pro Linux, kterou m\u00e1lokdo pou\u017e\u00edval. Vzhledem k tomu, \u017ee ZFS pou\u017e\u00edval strukturu ukl\u00e1d\u00e1n\u00ed dat B-tree (mimochodem, stejnou strukturu jako m\u00e1 InnoDB MySQL), neukazoval se ZFS dob\u0159e na instalac\u00edch s velmi velk\u00fdm po\u010dtem soubor\u016f. To v\u0161e v kombinaci s nutnost\u00ed studovat technickou str\u00e1nku p\u0159ed pou\u017eit\u00edm na dlouhou dobu vylou\u010dilo tento souborov\u00fd syst\u00e9m z m\u00e9 praxe. Objevily se ext4 a xfs, kter\u00e9 se staly standardem. Ale proto\u017ee ZFS je pro n\u00e1\u0161 \u00fakol v\u00edce ne\u017e vhodn\u00e9 a linuxov\u00e1 verze, podle recenz\u00ed, vyrostla v docela rozumn\u00fd produkt (i kdy\u017e nen\u00ed pln\u011b podporov\u00e1na, co\u017e znamen\u00e1, \u017ee syst\u00e9m na ZFS lze kompletn\u011b nainstalovat pouze pomoc\u00ed r\u016fzn\u00fdch \u010darov\u00e1n\u00ed), rozhodli jsme se to vyzkou\u0161et.<\/p>\n<p><\/p>\n<p>Z pochopiteln\u00fdch d\u016fvod\u016f jsme vybrali obdobnou konfiguraci (s v\u00fdjimkou RAID \u0159adi\u010de). Nainstalovali jsme osm SSD disk\u016f o velikosti 1920 GB. Nem\u011bli jsme chu\u0165 vytv\u00e1\u0159et sv\u016fj s\u00ed\u0165ov\u00fd obr\u00e1zek pro nahr\u00e1v\u00e1n\u00ed serveru na hol\u00e9m ZFS, proto jsme odkousli z ka\u017ed\u00e9ho disku po 50 GB a vytvo\u0159ili na nich MD RAID-10 pro syst\u00e9m. Zb\u00fdvaj\u00edc\u00edch 1950 GB na ka\u017ed\u00e9m disku jsme slou\u010dili do ZFS analogie 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>Vytvo\u0159ili jsme odd\u00edly pro 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\u0161imn\u011bte si, \u017ee jsme zapnuli standardn\u00ed kompresi dat gzip. Na serveru m\u00e1me dostatek procesorov\u00fdch zdroj\u016f, kter\u00e9 nejsou pln\u011b vyu\u017e\u00edv\u00e1ny. V d\u016fsledku toho se 3 TB na\u0161\u00ed datab\u00e1ze z\u00fa\u017eily na 1,6 TB a proto\u017ee slab\u00fdm \u010dl\u00e1nkem, stejn\u011b jako v p\u0159edchoz\u00edm p\u0159\u00edpad\u011b, je maxim\u00e1ln\u00ed v\u00fdkon disk\u016f, \u010d\u00edm m\u00e9n\u011b dat \u2014 t\u00edm l\u00e9pe, od za\u010d\u00e1tku dost\u00e1v\u00e1me skv\u011bl\u00fd bonus od ZFS! V dob\u011b \u0161pi\u010dky p\u0159i pln\u00e9 z\u00e1t\u011b\u017ei na \u00fadr\u017ebu fungov\u00e1n\u00ed gzip vyu\u017e\u00edv\u00e1 a\u017e 4 j\u00e1dra, ale to n\u00e1m nevad\u00ed.<\/p>\n<p><\/p>\n<p>D\u00e1le prob\u00edhalo zav\u00e1d\u011bn\u00ed rychleji. Po zkop\u00edrov\u00e1n\u00ed z LVM stanice jsme nastavili replikaci MySQL. Museli jsme str\u00e1vit n\u011bjak\u00fd \u010das p\u0159episov\u00e1n\u00edm skript\u016f na p\u0159\u00edkazy ZFS, ale celkov\u011b algoritmy z\u016fstaly stejn\u00e9. P\u0159\u00edklad vytvo\u0159en\u00ed 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 dal\u0161\u00edho lad\u011bn\u00ed: vyvedli jsme do pam\u011bti ZFS odd\u00edly s metadaty a protokoly l2arc a zil. Pro n\u00e1\u0161 \u00fakol se uk\u00e1zalo, \u017ee to bylo nadbyte\u010dn\u00e9, ale zat\u00edm jsme tuto optimalizaci ponechali, zm\u011bnit ji p\u0159i p\u0159\u00edle\u017eitosti nen\u00ed slo\u017eit\u00e9. Z negativn\u00edch efekt\u016f \u2014 je t\u0159eba po restartu serveru znovu vytvo\u0159it odpov\u00eddaj\u00edc\u00ed oblasti pam\u011bti. V\u00fdst\u0159i\u017eek 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 takov\u00e9 konfiguraci jsme za\u010dali testovat stojan a dostali skv\u011bl\u00e9 v\u00fdsledky: s dv\u011bma sou\u010dasn\u011b pracuj\u00edc\u00edmi instancemi DB (a aktivn\u00ed hlavn\u00ed replikou) na sn\u00edmc\u00edch jsme dos\u00e1hli z\u00e1t\u011b\u017ee disk\u016f na 50-60 %.<\/p>\n<p><\/p>\n<p>Zbavili jsme se na\u0161eho hlavn\u00edho probl\u00e9mu, co\u017e je vid\u011bt na grafu zpo\u017ed\u011bn\u00ed replikace (srovnejte s p\u0159edchoz\u00edm grafem v sekci Thin LVM):<br \/>\n<img decoding=\"async\" alt=\"Tenk\u00e9 z\u00e1lohov\u00e1n\u00ed souborov\u00fdch syst\u00e9m\u016f Linux. Jak vytv\u00e1\u0159et pracovn\u00ed kopie t\u0159\u00edterabajtov\u00e9 datab\u00e1ze MySQL za 20 sekund\" src=\"\/wp-content\/uploads\/2020\/03\/15df9283838a4662ff0f68accfde4089.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>D\u00edky tomu a mimo to jsme v\u00fdrazn\u011b zrychlili v\u0161echny operace: kompletn\u00ed vytvo\u0159en\u00ed sn\u00edmku se zastaven\u00edm a spu\u0161t\u011bn\u00edm repliky trv\u00e1 a\u017e 40 sekund, nasazen\u00ed nov\u00e9ho instance MySQL ze sn\u00edmku trv\u00e1 a\u017e 20 sekund. Co\u017e n\u00e1s i na\u0161e testy softwarov\u00e9ho k\u00f3du v\u00edce ne\u017e uspokojuje.<\/p>\n<p><\/p>\n<p>Meziv\u00fdsledky:<\/p>\n<p><\/p>\n<ul>\n<li>V\u00fdsledky pln\u011b uspokojily na\u0161i pot\u0159ebu z\u00edsk\u00e1n\u00ed kopie provozn\u00ed DB pro testov\u00e1n\u00ed k\u00f3du.<\/li>\n<li>Technologie vy\u017eaduje znalosti: je t\u0159eba rozum\u011bt tomu, co je ZFS a jak s n\u00edm pracovat.<\/li>\n<li>Neprov\u011b\u0159ovali jsme aktu\u00e1ln\u00ed stav funkce ZFS s velk\u00fdm mno\u017estv\u00edm (v\u00edce ne\u017e 1 milion) mal\u00fdch soubor\u016f. Ale p\u0159edpokl\u00e1d\u00e1me, \u017ee probl\u00e9m p\u0159etrv\u00e1v\u00e1, tak\u017ee bych tuto souborov\u00fd syst\u00e9m nedoporu\u010doval pro \u017e\u00e1dn\u00e9 \u00falo\u017ei\u0161t\u011b soubor\u016f.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-dalshe\">Co d\u00e1l?<\/h3>\n<p><\/p>\n<p>V r\u00e1mci st\u00e1nku ned\u011bl\u00e1me u\u017e nic jin\u00e9ho, v\u00fdsledek n\u00e1s uspokojuje. Mo\u017en\u00e1 v budoucnu p\u0159id\u00e1me do nastaven\u00ed replikace st\u00e1nku v\u00fdjimky pro tabulky, kter\u00e9 nejsou pot\u0159ebn\u00e9 pro testov\u00e1n\u00ed, co\u017e by je\u0161t\u011b v\u00edce zkr\u00e1tilo objem datab\u00e1ze. Testovali jsme syst\u00e9m BTRFS a jeho implementaci technologie tenk\u00e9ho z\u00e1lohov\u00e1n\u00ed. Nicm\u00e9n\u011b, tento \u00fakol u\u017e nen\u00ed aktu\u00e1ln\u00ed, proto\u017ee hlavn\u00ed c\u00edl byl spln\u011bn. Celkov\u011b bychom se samoz\u0159ejm\u011b cht\u011bli vzd\u00e1lit od v\u00fd\u0161e popsan\u00e9ho p\u0159\u00edstupu \u2014 realizovat funk\u010dn\u00ed migrace datab\u00e1ze do testovac\u00edho prost\u0159ed\u00ed, vytvo\u0159it samostatn\u00fd testovac\u00ed okruh datab\u00e1ze a zab\u00fdvat se shardov\u00e1n\u00edm hlavn\u00ed datab\u00e1ze. Mnoho z toho u\u017e realizujeme, o \u010dem\u017e se ur\u010dit\u011b pod\u011bl\u00edme v budouc\u00edch \u010dl\u00e1nc\u00edch. <\/p>\n<p><\/p>\n<h3 id=\"itogi\">Z\u00e1v\u011bry<\/h3>\n<p><\/p>\n<p>P\u016fvodn\u00ed \u00fakol byl vy\u0159e\u0161en, i kdy\u017e neobvykl\u00fdm zp\u016fsobem. V meziv\u00fdstupech byly pops\u00e1ny v\u00fdhody a nev\u00fdhody ka\u017ed\u00e9 z pou\u017eit\u00fdch technologi\u00ed, tak\u017ee se poj\u010fme rozhodnout, jakou technologii a kdy m\u016f\u017eeme pou\u017e\u00edt:<\/p>\n<p><\/p>\n<ul>\n<li>Thin LVM \u2014 na mal\u00fdch datab\u00e1z\u00edch a kdy\u017e se nechcete, nebo nem\u00e1te \u010das, na studium ZFS.<\/li>\n<li>ZFS \u2014 pokud m\u00e1te zku\u0161enosti s t\u00edm nebo m\u00e1te mo\u017enost v\u011bnovat \u010das jeho studiu v jak\u00e9koli situaci. <\/li>\n<\/ul>\n<p><\/p>\n<p>Na vy\u0161\u0161\u00ed \u00farovni pohledu je tento \u010dl\u00e1nek \u2014 nejen srovn\u00e1n\u00ed technologie dvou souborov\u00fdch syst\u00e9m\u016f. Hlavn\u00ed my\u0161lenka, kterou chci p\u0159edat a upevnit, je ta, \u017ee se nebojte myslet nekonven\u010dn\u011b v situac\u00edch kritick\u00fdch pro podnik\u00e1n\u00ed a br\u00e1t pouze osv\u011bd\u010den\u00e9 recepty. Kdysi jsme se mohli cel\u00fd technick\u00fd t\u00fdm zakr\u00fdvat hlavami a \u0159\u00edct, \u017ee \u00fakol vytvo\u0159it t\u0159\u00edterabajtov\u00e9 kopie datab\u00e1ze za m\u00e9n\u011b ne\u017e minutu je neprovediteln\u00fd a nepot\u0159ebujeme riskantn\u00ed technologie, poj\u010fme to ud\u011blat spr\u00e1vn\u011b. Bylo to mo\u017en\u00e9, ale ztratili bychom p\u0159ibli\u017en\u011b p\u016fl roku a\u017e rok a mnoho cest klient\u016f (cesty jsou na\u0161e hlavn\u00ed obchodn\u00ed ukazatel) bez test\u016f a b\u011bhem implementace. Nezvykle jsme ztratili na implementaci m\u00e9n\u011b \u010dasu, z\u00edskali zku\u0161enosti s nov\u00fdmi a zapomenut\u00fdmi star\u00fdmi technologiemi a poskytli testov\u00e1n\u00ed pr\u00e1v\u011b v okam\u017eiku, kdy jsme jej velmi pot\u0159ebovali. Bezpochyby to pozitivn\u011b ovlivnilo v\u0161echny na\u0161e ukazatele. V\u00fdb\u011br je v\u017edy na v\u00e1s, a my z na\u0161\u00ed strany budeme pokra\u010dovat v psan\u00ed o zaj\u00edmav\u00fdch sou\u010dasn\u00fdch a budouc\u00edch \u00fasp\u011b\u0161\u00edch na na\u0161em blogu.<\/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.3 - 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\/cs\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Jemn\u00e9 z\u00e1lohov\u00e1n\u00ed souborov\u00fdch syst\u00e9m\u016f Linux. Jak vytv\u00e1\u0159et z\u00e1lohy t\u0159\u00edterabajtov\u00e9 datab\u00e1ze MySQL za 20 sekund | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/cs\/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":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/74327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=74327"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/74327\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/74328"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=74327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=74327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=74327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}