Portál AbcLinuxu, 14. prosinec 2017 20:02

Dotaz: Jak spustit druhou instanci MySQL?

29.3. 17:37 Belzebub
Jak spustit druhou instanci MySQL?
Přečteno: 1043×
Odpovědět | Admin
Potřeboval bych na jednom počítači spustit (dočasně) druhou instanci MySQL serveru. Je to kvůli zálohování, kdy nejdřív databázi zamknu (FLUSH TABLES WITH READ LOCK), pak udělám snapshot celého FS, databázi odemknu a už z snapshotu kopíruju data na zálohovací disk. Jenže zrovna MySQL zálohuju tak, že prostě a jednoduše zkopíruji celou složku /var/lib/mysql, což jsem ale slyšel že prý není úplně dobré a mohly by být problémy s obnovou. Já obnovovat ještě naštěstí nikdy nemusel. Chtěl bych teda spustit druhou instanci MySQL která by data vzala právě z toho snapshotu, a z toho pak udělat normální mysqldump. Jenže jak? Něco jsem našel, ale nic z toho nefungovalo.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.3. 18:41 Kit | skóre: 40 | Brno
Rozbalit Rozbalit vše Re: Jak spustit druhou instanci MySQL?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co kdybys spustil ten mysql dump bez toho snapshotu?
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
29.3. 18:44 Belzebub
Rozbalit Rozbalit vše Re: Jak spustit druhou instanci MySQL?
To bych mohl, ale bojím se aby to pak bylo konzistentní se soubory na disku.
29.3. 20:23 Kit | skóre: 40 | Brno
Rozbalit Rozbalit vše Re: Jak spustit druhou instanci MySQL?
Jakými soubory? Databázovými? Ty se nezálohují. Databáze přitom normálně běží, takže problém nevidím.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Josef Kufner avatar 3.4. 11:38 Josef Kufner | skóre: 67
Rozbalit Rozbalit vše Re: Jak spustit druhou instanci MySQL?
Pokud ukládáš část dat do databáze a část do souborů (což je běžná praxe s objemnějšími daty, jako jsou např. fotky), tak ta konzistence stejně není zaručena a aplikace s tím musí počítat pro případ, že by třeba vypadl proud. Tedy aplikace nesmí commitnout transakci, dokud nemá soubor zapsaný a podobně.

Tedy udělej dump databáze a těsně potom snapshot filesystému, který následně odzálohuj. Pokud aplikace soubor uloží během dumpu, tak odzálohovaný bude. Pokud nějaký soubor smaže, tak bude odzálohovaný zbytečně (což nijak moc nevadí). Asi se najde nějaká situace, kdy by nekonzistence mohla vzniknout, ale pravděpodobnost bude podobná jako při výpadku proudu.
Hello world ! Segmentation fault (core dumped)
30.3. 10:49 Michal Karas | skóre: 45 | blog: /dev/random
Rozbalit Rozbalit vše Re: Jak spustit druhou instanci MySQL?
Odpovědět | | Sbalit | Link | Blokovat | Admin
MySQL i MariaDB se (alespoň na Debianu) distribuují s mysqld_multi.
30.3. 12:16 dustin | skóre: 61 | blog: dustin
Rozbalit Rozbalit vše Re: Jak spustit druhou instanci MySQL?
Odpovědět | | Sbalit | Link | Blokovat | Admin
mysql_multi jsem neznal, máme udělaný jednoduchý skript, který naklonuje další instanci mysql. Hlavní změny jsou v cestě ke konfigu, port, unix socket, data dir a to celé se zanese do vlastního init.d skriptu.

Pokud bys používal jen innodb tabulky, lze snapshot souborů ve /var/lib/mysql za běhu (i zatížené db) dělat pomocí nástroje innobackupex, kterým se i za běhu masteru klonují slave databáze. Funguje dobře. Samozřejmě je to klon datových souborů, ne dump SQL.
Řešení 1× (houska)
2.4. 21:40 maxlink
Rozbalit Rozbalit vše Re: Jak spustit druhou instanci MySQL?
Odpovědět | | Sbalit | Link | Blokovat | Admin
xtrabackup ? https://www.percona.com/software/mysql-database/percona-xtrabackup
4.4. 16:19 iwk
Rozbalit Rozbalit vše Re: Jak spustit druhou instanci MySQL?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tvoj sposob zalohovania je uplne v poriadku. Presne tak sa to robi. Iba si tam dopln tesne pred snapshotom sync, ak ho uz nerobis. K tomu, ze nie je dobre iba skopirovat /var/lib/mysql, to je pravda - ale to predsa nie je tento pripad. Tu sa kopiruje zo snapshotu, ktory sa uz nemeni.

Recovery si samozrejme vyskusaj - staci nakopirovat tento datadir na nejaky (druhy) mysql server. Ak nemas kde, tak napr. nejaky cloud? Mysql zrejme zanadava do logu, ze nebola korektne vypnuta, ale data by mali byt v poriadku.

Potom mozes skusit uz spominany Percona XtraBackup. Alebo ak mas druhy server, rozbehaj si mysql replikaciu a zalohovat mozes z tej repliky na druhom serveri.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.