GNU/Linux >> Znalost Linux >  >> Linux

Zálohování a obnova databáze MySQL pomocí mysqlhotcopy


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.


Linux
  1. MySQL:Jak zálohovat (vypsat) a obnovit databázi pomocí mysqldump

  2. Jak zálohovat a obnovit databázi Postgres

  3. Jak zálohovat a obnovit databázi MySQL pomocí příkazového řádku

  1. Jak zálohovat a obnovovat databázi v PostgreSQL

  2. Jak obnovit databázi MySQL pomocí příkazu v SSH?

  3. Základy uživatele a databáze MySQL

  1. Jak zálohovat a obnovit databázi MySQL

  2. Zálohování a obnova databáze MS SQL Server 2008

  3. Importujte databázi MySQL