{"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\/de\/blog\/administrirovanie\/tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund","title":{"rendered":"Feinabstimmung der Dateisysteme von Linux. So erstellen Sie innerhalb von 20 Sekunden Arbeitskopien einer drei Terabyte gro\u00dfen MySQL-Datenbank.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Feinabstimmung der Dateisysteme von Linux. So erstellen Sie innerhalb von 20 Sekunden Arbeitskopien einer drei Terabyte gro\u00dfen MySQL-Datenbank.\" src=\"\/wp-content\/uploads\/2020\/03\/7502785a78bd6f069913e97829ff2f63.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mein Name ist Juri, ich bin Leiter der Systemadministrationsgruppe bei Citymobil. Heute m\u00f6chte ich meine Erfahrungen mit der Technologie des Thin Provisioning von Linux-Dateisystemen teilen und erl\u00e4utern, wie sie in den CI\/CD-Prozessen unseres Unternehmens eingesetzt werden kann. Wir werden die Situation betrachten, in der wir f\u00fcr die automatische Code\u00fcberpr\u00fcfung bei der Bereitstellung in die Produktion so schnell wie m\u00f6glich Kopien der MySQL-Datenbank ben\u00f6tigen, die der 'Produktionsversion' so nah wie m\u00f6glich sind und sowohl les- als auch schreibbar sind.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"vvedenie-zachem-davat-vrednye-sovety\">Einf\u00fchrung: Warum sch\u00e4dliche Ratschl\u00e4ge geben?<\/h3>\n<p><\/p>\n<p>Eine berechtigte Frage, schlie\u00dflich gibt es bew\u00e4hrte Mechanismen f\u00fcr Migrationen von Datenbankschemata in Testumgebungen. Warum sollte man die Hauptdatenbank \u00fcberhaupt bis zu solchen Gr\u00f6\u00dfen bringen? Au\u00dferdem ben\u00f6tigen wir f\u00fcr Tests nicht alle Daten. Ich werde versuchen, es zu erkl\u00e4ren.<\/p>\n<p><\/p>\n<p>Vor etwa einem Jahr, angesichts des starken Wachstums unseres Taxiaggregators (2018 haben wir uns in Bezug auf abgeschlossene Fahrten ungef\u00e4hr verzehnfacht), sind die Datenmengen, die Serverlast und die Frequenz der Deployments gestiegen. Wir befanden uns in folgender Situation:<\/p>\n<p><\/p>\n<ul>\n<li>Die Hauptdatenbank MySQL wuchs auf etwa 1000 Tabellen mit einem Gesamtvolumen von 2,5 TB und wuchs weiter.<\/li>\n<li>Es war nicht m\u00f6glich, schnell zu shardieren und die Datenbank zu verteilen. Der alte Ansatz \u201aIch schreibe in die Datenbank, was ich will und wie ich will\u2018, viele JOINs und interne Abh\u00e4ngigkeiten zwischen den Tabellen haben dies nicht erlaubt.<\/li>\n<li>Es gab keinen Mechanismus f\u00fcr migrationsf\u00e4hige Datenbankschemata in Testumgebungen.<\/li>\n<li>Es gab keine automatisierte Codepr\u00fcfung bei der Bereitstellung in die Produktion.<\/li>\n<\/ul>\n<p><\/p>\n<p>Die letzte Herausforderung sollte so schnell wie m\u00f6glich gel\u00f6st werden. Es wurden bereits Postman-Tests zur \u00dcberpr\u00fcfung des Haupt-PHP-Monolithen geschrieben, aber es fehlte an einer aktuellen Datenbank. Wir konnten nachts keine Replik erstellen, sie zum Master machen und tags\u00fcber zur Verf\u00fcgung stellen: Eine gro\u00dfe Anzahl von Bereitstellungen und \u00c4nderungen, sowohl an den Daten als auch am Datenbankschema, h\u00e4tte die Testumgebung bereits gegen Mittag unbrauchbar gemacht. Au\u00dferdem w\u00e4re es ineffizient gewesen, Bereitstellungen nur auf den Arbeitstag zu beschr\u00e4nken. <\/p>\n<p><\/p>\n<p>Dennoch wurde die Aufgabe erf\u00fcllt: Wir erhielten die erste produktive Testumgebung bereits nach zwei Wochen. Im vergangenen Jahr hat sie viele Ver\u00e4nderungen durchgemacht und wird weiterhin genutzt.<\/p>\n<p><\/p>\n<p>Ich werde nun alle Schritte und Phasen der Entwicklung unserer L\u00f6sung im Detail beschreiben. Sie werden sehen, dass diese Methode ihr Daseinsrecht verdient.<\/p>\n<p><\/p>\n<p><strong>Was versteht man unter \u201afeiner Reservierung\u2018?<\/strong><br \/>\nDies ist eine Hardware- oder Software-Technologie (auch bekannt als sparse volumes), die es erm\u00f6glicht, mehr ben\u00f6tigte Ressourcen bereitzustellen, als tats\u00e4chlich vorhanden sind. Dabei muss das zugewiesene Volumen den Kriterien just-enough (so viel, wie n\u00f6tig) und just-in-time (zum notwendigen Zeitpunkt) entsprechen. In der Regel wird Thin Provisioning in verschiedenen Speichersystemen eingesetzt, um Speicherplatz in erforderlichen Mengen bereitzustellen, die die tats\u00e4chlich verf\u00fcgbaren Kapazit\u00e4ten \u00fcberschreiten. Diese Technologie wird von verschiedenen Dateisystemen unterst\u00fctzt, wie z. B. LVM2, ZFS, BTRFS. Sie wird h\u00e4ufig in Virtualisierungshypervisoren verwendet. Mit Thin Provisioning konnten wir schnell aus Snapshots des prim\u00e4ren Datenbereichs so viele Kopien dieses Bereichs erstellen, wie wir ben\u00f6tigten (data-Direktorium der MySQL-Datenbank).<\/p>\n<p><\/p>\n<h3 id=\"pervyy-stend-tehnologiya-thin-lvm\">Erstes Testsystem, Thin LVM-Technologie<\/h3>\n<p><\/p>\n<p>Dieses Kapitel kann auch als \u201eWie man mit <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/lvmthin.7.html\">Thin LVM<\/a><\/noindex>, die Stabilit\u00e4t des Dateisystems und der MySQL-Datenbank auf unversch\u00e4mte Werte reduziert\u201c betitelt werden. <\/p>\n<p><\/p>\n<p>Da wir bereits LVM f\u00fcr die Erstellung der Hauptpartitionen des Betriebssystems genutzt haben, beschlossen wir, genau damit zu beginnen. Zun\u00e4chst ben\u00f6tigten wir eine separate physische Maschine \u2013 eine replizierte Instanz unserer Haupt-MySQL-Datenbank, auf der wir nach Bedarf einen Snapshot der Replik und einen separaten MySQL-Instanz hochfahren konnten. W\u00e4hrend der Testphase erlaubten wir es, auf dieser Instanz \u00c4nderungen vorzunehmen, und nach Abschluss der Tests wurde sie erfolgreich gel\u00f6scht. Die Serverkonfiguration war wie folgt:<\/p>\n<p><\/p>\n<ul>\n<li>2 x Intel Silver 4114 (10&#215;2,2 \u0413\u0413\u0446 HT)<\/li>\n<li>8 x 32 GB DDR4 <\/li>\n<li>8 x 1920 GB Intel SSD im Adaptec RAID-Controller in RAID-10<\/li>\n<\/ul>\n<p><\/p>\n<p>\u00dcber die Wahl zwischen RAID-Controllern und softwarebasiertem RAID MD k\u00f6nnte man einen eigenen Artikel schreiben. Ich sage nur, dass unsere Entscheidung von zwei Faktoren beeinflusst wurde:<\/p>\n<p><\/p>\n<ul>\n<li>Zu dem Zeitpunkt, als die Aufgabe formuliert wurde, haben wir alle Datenbanken auf RAID-Controllern eingerichtet, sodass man sagen kann, dass dies historisch so gewachsen ist. <\/li>\n<li>Der Leistungsunterschied bei synthetischen Tests des Dateisystems und bei Tests mit verschiedenen Operationen in MySQL war minimal. <\/li>\n<\/ul>\n<p><\/p>\n<p>Wir haben das resultierende RAID-10 aufgeteilt: Wir haben eine zusammenh\u00e4ngende Volume Group (VG) f\u00fcr das gesamte Volumen eingerichtet (mit einem Overhead von etwa 6,7 GB) und eine logische Partition (Logical Volume, LV) f\u00fcr das System mit 50 GB erstellt. In der Regel w\u00fcrden wir den restlichen Platz f\u00fcr eine Partition mit MySQL nutzen. Aufgrund der Notwendigkeit von Thin Provisioning haben wir zun\u00e4chst einen sogenannten Pool erstellt, in dem wir eine Partition f\u00fcr \/var\/lib\/mysql mit 3,5 TB (basierend auf den erwarteten Datenbankvolumen) angelegt haben:<\/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>Wir haben die Partition mit ext4 formatiert, sie gemountet, eine Kopie erstellt und den urspr\u00fcnglichen Stand erhalten. Anschlie\u00dfend haben wir eine API-Bindung erstellt, die Snapshots erstellen, eine MySQL-Datenbankinstanz auf einem bestimmten Port hochziehen und die erstellte Instanz entfernen soll. Da hierbei ausschlie\u00dflich Systemaufrufe verwendet werden, haben wir als Scriptsprache herk\u00f6mmliches Bash gew\u00e4hlt und f\u00fcr die API-Bindung HTTP \u2192 Bash eine Open-Source-L\u00f6sung bereitgestellt. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/phonkee\/goexpose\">goexpose<\/a><\/noindex>, geschrieben in Go. <\/p>\n<p><\/p>\n<p>Irgendwann werden wir unsere Bash-Skripte als Open Source bereitstellen, aber vorerst werde ich einfach den grundlegenden Algorithmus beschreiben:<\/p>\n<p><\/p>\n<p>Erstellung des Haupt-Snapshots snapmain:<\/p>\n<p><\/p>\n<ol>\n<li>Wir stoppen die Hauptkopie.<\/li>\n<li>Wir setzen eine Sperre f\u00fcr die Operationen mit dem Snapshot snapmain.<\/li>\n<li>Wir erstellen einen neuen Snapshot snapmain.<\/li>\n<li>Wir starten MySQL und entfernen die Sperre.<\/li>\n<\/ol>\n<p><\/p>\n<p>Datenbankerstellung auf einem beliebigen Port aus snapmain:<\/p>\n<p><\/p>\n<ol>\n<li>Wir setzen eine Sperre f\u00fcr eine bestimmte Instanz der Datenbank (Port).<\/li>\n<li>Wir pr\u00fcfen, ob eine Sperre f\u00fcr die Erstellung des Hauptsnapshots vorhanden ist. Falls ja, warten wir und \u00fcberpr\u00fcfen alle 5 Sekunden erneut.<\/li>\n<li>Wir \u00fcberpr\u00fcfen, ob es eine alte LV-Partition der Instanz gibt.<br \/>\n3.1 Falls ja, stoppen wir die MySQL-Instanz mit kill -9 und l\u00f6schen die LV-Partition.<\/li>\n<li>Wir erstellen aus snapmain eine neue Instanz.<\/li>\n<li>Wir richten die Verzeichnisse f\u00fcr diese Instanz ein und montieren sie.<\/li>\n<li>Wir entfernen die Slave-Zeichen (Dateien) und starten die MySQL-Instanz.<\/li>\n<li>Wir machen daraus einen Master.<\/li>\n<li>Wir heben die Sperre auf.<\/li>\n<\/ol>\n<p><\/p>\n<p>Datenbankl\u00f6schung auf einem beliebigen Port:<\/p>\n<p><\/p>\n<ol>\n<li>Wir setzen eine Sperre f\u00fcr eine bestimmte Instanz der Datenbank (Port).<\/li>\n<li>Wir beenden die MySQL-Instanz mit kill -9.<\/li>\n<li>Wir demontieren die Verzeichnisse.<\/li>\n<li>Wir l\u00f6schen die LV-Partition und heben die Sperre auf.<\/li>\n<\/ol>\n<p><\/p>\n<p>Beispielbefehle zum Klonen der Partitionen der neuen Datenbankinstanz:<\/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>Jetzt m\u00f6chte ich \u00fcber das Hauptproblem sprechen, das wir beim Einsatz von Thin Provisioning festgestellt haben. Wir stie\u00dfen auf Leistungseinschr\u00e4nkungen der SSD-Laufwerke. Dies geschah aufgrund der Eigenschaften von Thin LVM: Es arbeitet auf der Ger\u00e4teebene mit low-level Chunks, die standardm\u00e4\u00dfig 4 MB gro\u00df sind. So sah das aus:<\/p>\n<p><\/p>\n<ol>\n<li>Wir erstellen einen Snapshot aus der Hauptpartition \/var\/lib\/mysql.<\/li>\n<li>Wir starten die Replikation, um den Master aufzuholen.<\/li>\n<li>Jede \u00c4nderung in den Tabellen der Replikat zwingt dazu, die alten, unver\u00e4nderten Datenchunks im Snapshott-Bereich zu speichern.<\/li>\n<li>Jede \u00c4nderung im hochgefahrenen Testexemplar zwingt dazu, die alten, unver\u00e4nderten Datenchunks im Bereich des geklonten Snapshots f\u00fcr dieses Exemplar zu speichern.<\/li>\n<li>Wir erreichen eine 100%ige Belastung der Eingabe- und Ausgabeoperationen des Ger\u00e4ts, was zu einer Verlangsamung aller Vorg\u00e4nge und einem schrittweisen R\u00fcckstand der Replikat f\u00fchrt.<\/li>\n<li>Am Ende des Arbeitstags haben wir ein Standbein, das mehrere Stunden hinterherhinkt.<\/li>\n<\/ol>\n<p><\/p>\n<p>Wie wir dagegen angegangen sind, um ein akzeptableres Ergebnis zu erzielen (die wichtigsten Punkte):<\/p>\n<p><\/p>\n<p>RAID-Controller:<\/p>\n<p><\/p>\n<ul>\n<li>Wir haben standardm\u00e4\u00dfig alle Arten von Caching deaktiviert. <\/li>\n<li>Wir haben den Writeback aktiviert (bei Daten im Puffer wird der Schreibvorgang abgeschlossen, bevor die tats\u00e4chliche Speicherung auf der Festplatte erfolgt).<\/li>\n<\/ul>\n<p><\/p>\n<p>Dateisystem:<\/p>\n<p><\/p>\n<ul>\n<li>An dem Einh\u00e4ngepunkt \/var\/lib\/mysql haben wir eingetragen: <em>noatime,nodiratime,data=writeback<\/em><\/li>\n<li>Wir haben das Journalen von ext4 mit tune2fs deaktiviert.<\/li>\n<\/ul>\n<p><\/p>\n<p>MySQL:<\/p>\n<p><\/p>\n<ul>\n<li>Wir haben eingetragen: <em>innodb_flush_method = O_DSYNC<\/em> (wir haben die Schreibgeschwindigkeit erh\u00f6ht und damit die Zuverl\u00e4ssigkeit verringert).<\/li>\n<li>Wir haben das Journalen deaktiviert, Logs sind f\u00fcr uns nicht erforderlich.<\/li>\n<li>Wir haben eingetragen: <em>innodb_buffer_pool_size = 4G<\/em> (je kleiner die Gr\u00f6\u00dfe des InnoDB-Pools, desto schneller wird MySQL beim Stopp heruntergefahren, und desto schneller erstellen wir einen Snapshot).<\/li>\n<\/ul>\n<p><\/p>\n<p>Dies ist bei weitem nicht die vollst\u00e4ndige Liste, insbesondere f\u00fcr MySQL. Die anderen \u00c4nderungen sind jedoch geringf\u00fcgig und oft nicht immer und nicht genau anwendbar. Zum Beispiel haben wir in dem Versuch, die Festplatten zu entlasten, sogar <em>innodb_parallel_doublewrite_path<\/em> nach \/dev\/shm verschoben, was in einigen F\u00e4llen beim Start eines nicht korrekt beendeten Instanz uns bis zu 5 Sekunden einsparen konnte.<\/p>\n<p><\/p>\n<p>Warum stoppen wir MySQL, bevor wir einen Snapshot erstellen? Wir k\u00f6nnten ihn auch von einer aktiven Replik machen. Das ist korrekt, aber eine neue Datenbankinstanz aus diesem Snapshot wird standardm\u00e4\u00dfig als besch\u00e4digt betrachtet und ben\u00f6tigt beim Starten einen vollst\u00e4ndigen Scan. Das Stoppen der Replik ist definitiv schneller, auch wenn dies letztendlich die zeitaufw\u00e4ndigste Operation im gesamten Prozess ist.<\/p>\n<p><\/p>\n<p>Infolgedessen haben wir akzeptablere Zeiten und eine funktionsbereite Umgebung erhalten. Obwohl, wie das \u00fcberzeugendste Diagramm der Verz\u00f6gerung der prim\u00e4ren Replik zeigt, die Situation noch weit von ideal entfernt ist:<br \/>\n<img decoding=\"async\" alt=\"Feinabstimmung der Dateisysteme von Linux. So erstellen Sie innerhalb von 20 Sekunden Arbeitskopien einer drei Terabyte gro\u00dfen MySQL-Datenbank.\" src=\"\/wp-content\/uploads\/2020\/03\/9bb7bb7d9abfea124a75616deec57f05.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Weitere Nachteile sind die praktisch unm\u00f6gliche \u00dcberwachung des Thin LVM-Pools: Neben den systeminternen Standardfunktionen wie iostat ist es unm\u00f6glich zu verstehen, welches Element des Pools gerade die gr\u00f6\u00dfte Belastung f\u00fcr das Dateisystem verursacht.<\/p>\n<p><\/p>\n<p>Ein gro\u00dfer Nachteil, der mit der oben beschriebenen Optimierung verbunden ist, sollte besonders hervorgehoben werden: Wir haben einen YOLO-Stand erhalten. Etwa alle ein bis zwei Monate hielt ext4 diesen Misshandlungen nicht stand und fiel unwiederbringlich aus, was eine Neuformatierung und das erneute Hochladen des Abbilds erforderte. W\u00e4hrend wir an Geschwindigkeit gewonnen haben, haben wir die Stabilit\u00e4t hoffnungslos aufs Spiel gesetzt.<\/p>\n<p><\/p>\n<p>Auf welche Metriken sollte w\u00e4hrend des Betriebs von Thin LVM geachtet werden:<\/p>\n<p><\/p>\n<ul>\n<li>Thin Pool Daten-%<\/li>\n<li>Thin Pool Metadaten-%<\/li>\n<\/ul>\n<p><\/p>\n<p>Wenn unser Stand den Mangel an Speicherplatz f\u00fcr Daten \u00fcbersteht (es reicht, die Festplatten zu bereinigen), wird der Mangel an Speicherplatz f\u00fcr Metadaten zum vollst\u00e4ndigen Zusammenbruch des Pools und der Notwendigkeit f\u00fchren, ihn von Grund auf neu zu erstellen.<\/p>\n<p><\/p>\n<p>Das Dateisystem innerhalb des Pools fragmentiert sich im Laufe der Zeit stark. Ich empfehle, einmal t\u00e4glich \u00fcber Cron den Befehl auszuf\u00fchren <em>fstrim -v \/var\/lib\/mysql<\/em>.<\/p>\n<p><\/p>\n<p>Zwischenbilanz:<\/p>\n<p><\/p>\n<ul>\n<li>Die Technologie ist einfach anwendbar, ebenso wie LVM, und erfordert kein besonderes Fachwissen des Ingenieurs.<\/li>\n<li>Sie eignet sich gut f\u00fcr kleine und nicht \u00fcberm\u00e4\u00dfig beanspruchte Datenbanken. Je kleiner die Datenbank, desto weniger Chunks werden innerhalb des Pools im Dateisystem verschoben, was die Belastung der Festplatten verringert.<\/li>\n<li>F\u00fcr unsere Aufgabe haben wir nach anderen L\u00f6sungen gesucht, die im n\u00e4chsten Abschnitt behandelt werden.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vtoroy-stend-tehnologiya-zfs\">Zweite L\u00f6sung: ZFS-Technologie<\/h3>\n<p><\/p>\n<p>Vor langer Zeit hatte ich Erfahrungen mit dem Dateisystem ZFS, das damals vor allem auf seinem nativen Betriebssystem Solaris gut funktionierte. Es gab eine FreeBSD-portierte Version mit einer ausreichend guten Implementierung. Zudem existierte ein unfertiger Port f\u00fcr Linux, der nur selten verwendet wurde. Aufgrund der B-Baum-Datenstruktur (\u00fcbrigens die gleiche, die auch InnoDB von MySQL nutzt) schnitt ZFS in Installationen mit einer sehr hohen Anzahl von Dateien schlecht ab. All dies zusammen mit der notwendigen Einarbeitung in die Materie f\u00fchrte dazu, dass ich dieses Dateisystem langfristig aus meiner Praxis verbannt habe. Es kamen ext4 und xfs auf, die zum Standard wurden. Aber da ZFS f\u00fcr unsere Aufgabenstellung mehr als geeignet ist und die Linux-Version, laut den R\u00fcckmeldungen, sich zu einem durchaus brauchbaren Produkt entwickelt hat (wenngleich nicht mit vollst\u00e4ndiger Unterst\u00fctzung, weshalb man ein System auf ZFS nur mit verschiedenen Tricks von Grund auf installieren kann), haben wir beschlossen, es auszuprobieren.<\/p>\n<p><\/p>\n<p>Aus verst\u00e4ndlichen Gr\u00fcnden haben wir ein \u00e4hnliches Konfiguration gew\u00e4hlt (mit Ausnahme des RAID-Controllers). Wir haben acht SSDs mit jeweils 1920 GB installiert. Da wir keine Lust hatten, unser eigenes Netzwerk-Image f\u00fcr die Einrichtung des Servers auf nacktem ZFS zu schreiben, haben wir von allen Festplatten jeweils 50 GB abgezweigt und ein MD RAID-10 f\u00fcr das System erstellt. Die verbleibenden 1950 GB auf jeder Festplatte haben wir in ein ZFS-\u00e4hnliches RAID-10 integriert:<\/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>Wir haben Partitionen f\u00fcr MySQL erstellt:<\/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>Bitte beachten Sie, dass wir die standardm\u00e4\u00dfige Datensicherung mit gzip aktiviert haben. Auf unserem Server haben wir viele CPU-Ressourcen, die nicht vollst\u00e4ndig genutzt werden. Infolgedessen hat sich unsere 3 TB gro\u00dfe Datenbank auf 1,6 TB reduziert, und da die maximalen Festplattengeschwindigkeiten, wie auch im vorherigen Fall, das schw\u00e4chste Glied sind, ist weniger Datenmenge besser \u2013 wir profitieren von Anfang an enorm von ZFS! Zu Spitzenzeiten k\u00f6nnen bis zu 4 Kerne f\u00fcr die gzip-Verarbeitung ben\u00f6tigt werden, aber damit haben wir kein Problem.<\/p>\n<p><\/p>\n<p>Die Implementierung verlief anschlie\u00dfend schneller. Wir haben die MySQL-Replikationskonfiguration eins zu eins vom LVM-Setup \u00fcbernommen. Es hat einige Zeit in Anspruch genommen, die Skripte in ZFS-Kommandos umzuschreiben, aber insgesamt blieben die Algorithmen unver\u00e4ndert. Beispiel zur Erstellung eines Snapshots:<\/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>Von zus\u00e4tzlichem Tuning: Wir haben die ZFS-Partitionen mit Metadaten und Logs in den l2arc und zil-Speicher ausgelagert. Wie sich sp\u00e4ter herausstellte, war dies f\u00fcr unsere Aufgabe \u00fcberfl\u00fcssig, aber wir haben diese Optimierung vorerst beibehalten, da sie bei Bedarf leicht ge\u00e4ndert werden kann. Nachteilig ist, dass die entsprechenden Speicherbereiche nach einem Neustart des Servers neu erstellt werden m\u00fcssen. Die Daten gehen dabei nicht verloren. Auszug 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>In dieser Konfiguration haben wir begonnen, das Setup zu testen, und erzielten hervorragende Ergebnisse: Mit zwei gleichzeitig arbeitenden DB-Instanzen (und einer aktiven Hauptreplik) lag die Festplattenauslastung bei 50-60% auf Snapshots.<\/p>\n<p><\/p>\n<p>Wir haben unser Hauptproblem gel\u00f6st, was im Diagramm zur Replikationsverz\u00f6gerung deutlich wird (im Vergleich mit dem vorherigen Diagramm im Abschnitt Thin LVM):<br \/>\n<img decoding=\"async\" alt=\"Feinabstimmung der Dateisysteme von Linux. So erstellen Sie innerhalb von 20 Sekunden Arbeitskopien einer drei Terabyte gro\u00dfen MySQL-Datenbank.\" src=\"\/wp-content\/uploads\/2020\/03\/15df9283838a4662ff0f68accfde4089.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dar\u00fcber hinaus haben wir damit in allen Operationen erheblich an Geschwindigkeit gewonnen: Die vollst\u00e4ndige Erstellung eines Snapshots mit dem Stoppen und Starten der Replik dauert bis zu 40 Sekunden, w\u00e4hrend das Bereitstellen eines neuen MySQL-Instances aus dem Snapshot bis zu 20 Sekunden in Anspruch nimmt. Das entspricht voll und ganz unseren Erwartungen sowie den Tests unseres Codes.<\/p>\n<p><\/p>\n<p>Zwischenbilanz:<\/p>\n<p><\/p>\n<ul>\n<li>Die Ergebnisse haben unsere Anforderungen an die Erstellung einer Kopie der Produktionsdatenbank f\u00fcr die Code-Tests vollst\u00e4ndig erf\u00fcllt.<\/li>\n<li>Die Technologie erfordert ein gewisses Verst\u00e4ndnis: Man muss wissen, was ZFS ist und wie man damit arbeitet.<\/li>\n<li>Wir haben den aktuellen Status von ZFS mit einer gro\u00dfen Anzahl (\u00fcber 1 Million) kleiner Dateien nicht getestet. Wir vermuten jedoch, dass das Problem weiterhin besteht, weshalb ich dieses Dateisystem nicht f\u00fcr die Nutzung in Dateispeicherl\u00f6sungen empfehlen w\u00fcrde.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-dalshe\">Wie geht es weiter?<\/h3>\n<p><\/p>\n<p>Im Rahmen des Standes m\u00f6chten wir nichts weiter unternehmen, das Ergebnis ist zufriedenstellend. Vielleicht f\u00fcgen wir sp\u00e4ter Ausnahmen f\u00fcr Tabellen in den Replikationskonfigurationen hinzu, die f\u00fcr Tests nicht erforderlich sind, was das Datenbankvolumen weiter reduzieren wird. Wir haben das BTRFS-System und seine Implementierung der Thin Provisioning-Technologie nicht getestet. Allerdings steht diese Aufgabe nicht mehr im Vordergrund, da das Hauptziel erreicht wurde. Insgesamt streben wir nat\u00fcrlich eine Abkehr von dem oben beschriebenen Ansatz an \u2013 wir m\u00f6chten funktionierende Datenbankmigrationen in die Testumgebung implementieren, einen separaten Test-Datenbankkreis erstellen und uns mit der Shardierung der Hauptdatenbank besch\u00e4ftigen. Vieles davon setzen wir bereits um, und wir werden dar\u00fcber in zuk\u00fcnftigen Artikeln berichten. <\/p>\n<p><\/p>\n<h3 id=\"itogi\">Ergebnisse<\/h3>\n<p><\/p>\n<p>Die urspr\u00fcngliche Aufgabe wurde gel\u00f6st, wenn auch auf ungew\u00f6hnliche Weise. In den Zwischenergebnissen wurden die Vor- und Nachteile jeder der eingesetzten Technologien beschrieben, also lassen Sie uns entscheiden, welche Technologie wann eingesetzt werden kann:<\/p>\n<p><\/p>\n<ul>\n<li>Thin LVM \u2013 bei kleinen Datenbanken und wenn man ZFS nicht erlernen m\u00f6chte oder nicht die Zeit dazu hat.<\/li>\n<li>ZFS \u2013 wenn man Erfahrung im Umgang mit ihr hat oder bereit ist, Zeit in ihr Studium zu investieren, in allen Situationen. <\/li>\n<\/ul>\n<p><\/p>\n<p>Auf einer h\u00f6heren Ebene betrachtet, handelt es sich bei diesem Artikel nicht nur um einen Vergleich der Technologien zweier Dateisysteme. Die zentrale Idee, die ich vermitteln und festigen m\u00f6chte, ist, dass man nicht z\u00f6gern sollte, unkonventionell zu denken in gesch\u00e4ftskritischen Situationen und sich nicht nur auf fertige Rezepte zu st\u00fctzen. Fr\u00fcher h\u00e4tte unser gesamtes Technikteam den Kopf gesch\u00fcttelt und gesagt, dass die Aufgabe, dreiterabyte gro\u00dfe Datenbankkopien in weniger als einer Minute zu erstellen, unm\u00f6glich ist und wir keine riskanten Technologien ben\u00f6tigen, sondern es richtig machen sollten. Das w\u00e4re m\u00f6glich gewesen, aber wir h\u00e4tten etwa ein halbes Jahr bis ein Jahr verloren und viele Kundenreisen (Reisen sind unser Hauptgesch\u00e4ftsindikator) ohne Tests und w\u00e4hrend der Implementierung. Indem wir unkonventionell vorgingen, verloren wir nicht viel Zeit in der Einf\u00fchrung, sammelten Erfahrungen mit neuen und in Vergessenheit geratenen alten Technologien und boten Tests genau in dem Moment an, als wir sie dringend ben\u00f6tigten. Ohne Zweifel hatte dies positive Auswirkungen auf alle unsere Kennzahlen. Die Entscheidung liegt immer bei Ihnen, und wir werden von unserer Seite weiterhin in unserem Blog \u00fcber interessante aktuelle und zuk\u00fcnftige Erfolge berichten.<\/p>\n<p>Quelle: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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\/de\/blog\/administrirovanie\/tonkoe-rezervirovanie-fajlovyh-sistem-linux-kak-sozdavat-rabochie-kopii-trehterabajtnoj-subd-mysql-za-20-sekund\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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:description\" content=\"\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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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\udd47 Thin Provisioning bei Linux-Dateisystemen. So erstellen Sie Arbeitskopien einer dreitbigen MySQL-Datenbank in 20 Sekunden | ProHoster","description":"Mein Name ist Yuri, ich bin Leiter der Systemadministrationsgruppe bei Citymobil. Heute werde ich meine Erfahrungen mit der Technologie des Thin Provisioning bei Linux-Dateisystemen teilen und erkl\u00e4ren, wie sie in den CI\/CD-Prozessen unseres Unternehmens angewendet werden kann. Wir werden eine Situation untersuchen, in der wir f\u00fcr die automatische Code-Tests beim Deployment in die Produktion schnellstm\u00f6glich MySQL-Datenbankkopien ben\u00f6tigen.","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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:description":"\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","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/74327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=74327"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/74327\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/74328"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=74327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=74327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=74327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}