mysqlhotcopy je perl skript, který je součástí instalace MySQL. To uzamkne tabulku, vyprázdní tabulku a poté provede kopii databáze. Můžete také použít mysqlhotcopy k automatickému zkopírování zálohy přímo na jiný server pomocí scp
.
1. příkaz mysqlhotcopy:
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
Výše uvedený příklad provede zálohu sugarcrm, databáze MySQL do adresáře /home/backup/database.
- –allowold:Tato možnost před vytvořením nové zálohy přejmenuje starou zálohu na {database-name}_old. V tomto příkladu, pokud již záloha sugarcrm existuje pod /home/backup/database, přesune starou zálohu do /home/backup/database/sugarcrm_old před vytvořením /home/backup/database/sugarcrm.
- –keepold:Tato možnost dá mysqlhotcopy pokyn, aby po dokončení zálohy zachoval starou zálohu (tj. přejmenovanou _old).
Prohlédněte si dokumentaci mysqlhotcopy pomocí perldoc, jak je uvedeno níže.
[local-host]# perldoc mysqlhotcopy
Níže jsou uvedeny dostupné možnosti, které lze předat příkazu mysqlhotcopy.
Možnost | Popis |
–addtodest | Nepřejmenovávejte cílový adresář (pokud existuje); stačí do něj přidat soubory |
–povoleno | Nepřerušovat, pokud cíl existuje; přejmenujte jej přidáním _staré přípony |
–checkpoint=název_db.název_tbl | Vložte položky kontrolních bodů |
–chroot=cesta | Základní adresář chroot jail, ve kterém mysqld funguje |
–debug | Zapište protokol ladění |
–dryrun | Nahlašte akce, aniž byste je provedli |
–flushlogs | Po uzamčení všech tabulek vyprázdnit protokoly |
–help | Zobrazte zprávu nápovědy a ukončete |
–host=název_hostitele | Připojte se k serveru MySQL na daném hostiteli |
–zachovat | Po dokončení neodstraňujte předchozí (přejmenovaný) cíl |
–noindices | Do zálohy nezahrnujte úplné indexové soubory |
–heslo[=heslo] | Heslo, které se má použít při připojování k serveru |
–port=číslo_portu | Číslo portu TCP/IP pro připojení |
– tichý | S výjimkou chyb buďte zticha |
–regexp | Zkopírujte všechny databáze s názvy, které odpovídají danému regulárnímu výrazu |
–resetmaster | Po uzamčení všech tabulek resetujte binární protokol |
–resetslave | Po uzamčení všech tabulek resetujte soubor master.info |
–socket=cesta | Pro připojení k localhost |
–tmpdir=cesta | Dočasný adresář |
–user=jméno_uživatele, | Uživatelské jméno MySQL, které se má použít při připojování k serveru |
–verze | Zobrazte informace o verzi a ukončete |
2. výstup příkazu mysqlhotcopy:
Výše uvedený příkaz mysqlhotcopy zobrazí výstup podobný následujícímu.
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold Locked 98 tables in 0 seconds. Flushed tables (`sugarcrm`.`accounts`, `sugarcrm`.`accounts_audit`, `sugarcrm`.`accounts_bugs`) in 0 seconds. Copying 295 files... Copying indices for 0 files... Unlocked tables. mysqlhotcopy copied 98 tables (295 files) in 0 seconds (0 seconds overall).
Ve výchozím nastavení je databáze MySQL umístěna pod /var/lib/mysql/{db-name}. mysqlhotcopy provede zálohu souborů tabulky z tohoto výchozího umístění databáze do záložního adresáře. Záložní adresář /home/backup/database/sugarcrm bude obsahovat přesnou kopii všech souborů ze skutečné databáze MySQL /var/lib/mysql/sugarcrm.
[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l 295 [local-host]# ls -1 /home/backup/database/sugarcrm | wc -l 295
Vezměte prosím na vědomí, že každá tabulka má tři odpovídající soubory s příponou *.frm, *.MYD a *.MYI. Adresář databází také obsahuje soubor db.opt, který obsahuje parametr související s databází.
Ve výše uvedeném příkladu můžete vidět, že mysqlhotcopy zálohuje 98 databázových tabulek sugarcrm. Takže celkový počet souborů v záložním adresáři =98 tabulek * 3 + 1 db konfigurační soubor =296 souborů.
3. Obnovit z mysqlhotcopy
Chcete-li obnovit zálohu ze zálohy mysqlhotcopy, jednoduše zkopírujte soubory z adresáře zálohy do adresáře /var/lib/mysql/{db-name}. Pro jistotu nezapomeňte zastavit mysql, než obnovíte (zkopírujete) soubory. Po zkopírování souborů do /var/lib/mysql/{db-name} spusťte mysql znovu.
4. Odstraňování problémů s mysqlhotcopy
Jak vyřešit problém Nelze najít DBD/mysql.pm? mysqlhotcopy je skript perl a vyžaduje modul perl-DBD. Pokud není nainstalován modul perl-DBD, může se při provádění mysqlhotcopy zobrazit následující chyba.
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 7) line 3. Perhaps the DBD::mysql perl module hasn't been fully installed, or perhaps the capitalisation of 'mysql' isn't right. Available drivers: DBM, ExampleP, File, Proxy, Sponge. at /usr/bin/mysqlhotcopy line 177
Ujistěte se, že jste nainstalovali balíček perl-DBD, jak je znázorněno níže.
[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm Preparing... ########################################### [100%] 1:perl-DBD-MySQL ########################################### [100%]
Jak vyřešit problém s instalací perl-DBD? Při instalaci perl-DBD se může zobrazit následující chybová zpráva.
[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm rpmdb: Program version 4.3 doesn't match environment version error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch error: cannot open Packages index using db3 - (-30974) warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat rpmdb: Program version 4.3 doesn't match environment version error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat error: Failed dependencies: libmysqlclient.so.15 is needed by perl-DBD-MySQL-3.0007-1.fc6.i386 libmysqlclient.so.15(libmysqlclient_15) is needed by perl-DBD-MySQL-3.0007-1.fc6.i386
Stáhněte a nainstalujte MySQL-shared-compat z mysql.com a tím by se měla vyřešit výše zmíněná chyba při instalaci balíčku perl-DBD.
[local-host]# rpm -ivh MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm Preparing... ########################################### [100%] 1:MySQL-shared-compat ########################################### [100%]
Používáte nějaké jiné metody k zálohování nebo obnově databáze MySQL? Zanechte prosím své komentáře.