V jednom z našich předchozích blogů jsme vysvětlili, jak lze Clone Plugin, jednu z nových funkcí, které se objevily v MySQL 8.0.17, použít k přestavbě replikačního slave. V současné době je hlavním nástrojem pro tento účel, stejně jako pro zálohování, Xtrabackup. Mysleli jsme, že je zajímavé porovnat, jak tyto nástroje fungují a chovají se.
Porovnání výkonu
První věc, kterou jsme se rozhodli otestovat, je výkon obou, pokud jde o místní ukládání kopie dat. Použili jsme instanci AWS a m5d.metal se dvěma NVMe SSD a spustili jsme klon na místní kopii:
mysql> CLONE LOCAL DATA DIRECTORY='/mnt/clone/';
Query OK, 0 rows affected (2 min 39.77 sec)
Potom jsme otestovali Xtrabackup a vytvořili místní kopii:
rm -rf /mnt/backup/ ; time xtrabackup --backup --target-dir=/mnt/backup/ --innodb-file-io-threads=8 --innodb-read-io-threads=8 --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=16
200120 13:12:28 completed OK!
real 2m38.407s
user 0m45.181s
sys 4m18.642s
Jak vidíte, čas potřebný ke zkopírování dat byl v zásadě stejný. V obou případech byl omezením hardware, nikoli software.
Přenos dat na jiný server bude nejčastějším případem použití obou nástrojů. Může to být otrok, kterého chcete obstarat nebo přestavět. V budoucnu to může být záloha, Clone Plugin zatím takovou funkcionalitu nemá, ale jsme si docela jisti, že v budoucnu jej někdo umožní použít jako nástroj pro zálohování. Vzhledem k tomu, že hardware je omezením pro místní zálohování v obou případech, bude hardware také omezením pro přenos dat po síti. V závislosti na vašem nastavení to může být buď síť, diskové I/O nebo CPU.
V operacích náročných na I/O je CPU nejméně častým úzkým hrdlem. Díky tomu je zcela běžné vyměnit určité využití CPU za snížení velikosti datové sady. Můžete toho dosáhnout pomocí komprese. Pokud se to provádí za běhu, stále musíte číst stejné množství dat, ale posíláte jich po síti méně (jak jsou komprimována). Poté jej budete muset dekomprimovat a zapsat. Je také možné, že jsou komprimovány samotné soubory. V takovém případě snížíte množství dat čtených, přenášených a zapisovaných na disk.
Jak Clone Plugin, tak Xtrabackup přicházejí s průběžnou kompresí (chtěli bychom poděkovat Kennymu Grypovi, který nás v tomto bitu opravil). V Clone Plugin jej můžete povolit pomocí clone_enable_compression, která je ve výchozím nastavení zakázána. Xtrabackup může také využívat externí nástroje ke kompresi dat. V případě komprimovaných tabulek InnoDB nebude externí komprese příliš velký rozdíl, takže oba nástroje by měly fungovat podobným způsobem v případě, že je limitujícím faktorem šířka pásma sítě.
Porovnání použitelnosti
Výkon je jen jedna věc, kterou lze porovnávat, existuje mnoho dalších, například jak snadné je použití nástrojů. V obou případech musíte provést několik kroků. Pro Clone Plugin je to:
- Nainstalujte plugin na všechny uzly
- Vytvořte uživatele v uzlech dárce i příjemce
- Nastavte seznam dárců na příjemci
Tyto tři kroky je třeba provést jednou. Když jsou nastaveny, můžete ke kopírování dat použít modul Clone Plugin. Na základě init systému možná budete muset po dokončení procesu klonování spustit uzel MySQL. Toto není vyžadováno, pokud, jako v případě systemd, se MySQL automaticky restartuje.
Xtrabackup vyžaduje několik dalších kroků, aby bylo možné věci udělat.
- Nainstalujte software na všechny uzly
- Vytvořit uživatele na dárci
Tyto dva kroky je třeba provést jednou. Pro každou zálohu musíte provést následující kroky:
- Nakonfigurujte síťové streamování. Jednoduchý a bezpečný způsob by bylo použít SSH, něco jako:
xtrabackup --backup --innodb-file-io-threads=8 --innodb-read-io-threads=8 --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=8 --stream=xbstream --target-dir=/mnt/backup/ | ssh [email protected] "xbstream -x -C /mnt/backup/"
Zjistili jsme však, že pro rychlejší pevné disky se s jednovláknovým SSH stává CPU překážkou. Nastavení netcatu vyžaduje další krok na přijímači, aby se zajistilo, že netcat běží, naslouchá a přesměruje provoz na správný software (xbstream).
-
Zastavit MySQL v uzlu přijímače
-
Spusťte Xtrabackup
-
Použít protokoly InnoDB
-
Zkopírujte data zpět
-
Spusťte MySQL v uzlu přijímače
Jak vidíte, Xtrabackup vyžaduje více kroků.
Bezpečnostní aspekty
Klonovací plugin lze nakonfigurovat tak, aby pro přenos dat používal SSL, i když ve výchozím nastavení používá prostý text. Klonování zašifrovaných tabulkových prostorů je možné, ale chybí možnost zašifrovat například místní klon. Uživatel by to musel udělat samostatně po dokončení procesu klonování.
Xtrabackup sám o sobě neposkytuje žádné zabezpečení. Zabezpečení je určeno tím, jak streamujete data. Pokud pro streamování používáte SSH, data při přenosu budou šifrována. Pokud se rozhodnete použít netcat, bude odeslán jako prostý text. Samozřejmě, pokud jsou data šifrována v tabulkových prostorech, jsou již zabezpečena, stejně jako v případě Clone Pluginu. Xtrabackup lze také použít spolu s průběžným šifrováním, aby bylo zajištěno, že vaše data budou šifrována i v klidu.
Funkce pluginu
Klonovací plugin je nový produkt, který je stále ještě v počáteční fázi. Jeho primárním úkolem je poskytovat způsoby zřizování uzlů v InnoDB Cluster a dělá to dobře. Pro jiné úlohy, jako je zálohování nebo zajišťování replikačních slave, jej lze do určité míry použít, ale trpí několika omezeními. Některým z nich jsme se věnovali v našem předchozím blogu, takže to zde nebudeme opakovat, ale tím nejzávažnějším, když mluvíme o zajišťování a zálohování, je to, že se klonují pouze tabulky InnoDB. Pokud náhodou používáte jakýkoli jiný modul úložiště, nemůžete skutečně použít Clone Plugin. Na druhou stranu Xtrabackup s radostí zálohuje a přenese většinu běžně používaných úložišť:InnoDB, MyISAM (bohužel se stále používá na mnoha místech) a CSV. Xtrabackup přichází také se sadou nástrojů, které jsou určeny k tomu, aby pomohly se streamováním dat z uzlu do uzlu nebo dokonce se streamováním zálohování do segmentů S3.
Abych to shrnul, pokud jde o zálohování dat a zřizování replikačních slave, xtrabackup je a s největší pravděpodobností stále bude nejoblíbenější volbou. Na druhou stranu, Clone Plugin se s největší pravděpodobností bude zlepšovat a vyvíjet. Uvidíme, co přinese budoucnost a jak budou věci vypadat za rok.
Dejte nám vědět, pokud máte nějaké myšlenky na Clone Plugin, velmi nás zajímá, jaký je váš názor na tento nový nástroj.