GNU/Linux >> Linux Esercitazione >  >> Linux

Backup e ripristino del database MySQL utilizzando mysqlhotcopy


mysqlhotcopy è uno script perl fornito con l'installazione di MySQL. Questo blocca la tabella, svuota la tabella e quindi esegue una copia del database. Puoi anche usare mysqlhotcopy per copiare automaticamente il backup direttamente su un altro server usando scp
.

1. comando mysqlhotcopy:

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold

L'esempio sopra, esegue un backup di sugarcrm, un database MySQL nella directory /home/backup/database.

  • –allowold:questa opzione rinomina il vecchio backup in {datbase-name}_old prima di eseguire un nuovo backup. In questo esempio, se il backup di sugarcrm esiste già in /home/backup/database, sposterà il vecchio backup in /home/backup/database/sugarcrm_old prima di creare /home/backup/database/sugarcrm.
  • –keepold:questa opzione indica a mysqlhotcopy di mantenere il vecchio backup (cioè il rinominato _old) dopo che il backup è stato completato.

Visualizza la documentazione di mysqlhotcopy usando perldoc come mostrato di seguito.

[local-host]# perldoc mysqlhotcopy

Di seguito sono elencate le opzioni disponibili che possono essere passate al comando mysqlhotcopy.

Opzione

Descrizione

–addtodest Non rinominare la directory di destinazione (se esiste); aggiungi semplicemente dei file
–allowold Non interrompere se esiste un target; rinominalo aggiungendo un _old suffisso
–checkpoint=nome_db.nome_tbl Inserisci voci checkpoint
–chroot=percorso Directory di base della jail chroot in cui opera mysqld
–debug Scrivi un registro di debug
–funzionamento a secco Segnala le azioni senza eseguirle
–flushlog Svuota i log dopo che tutte le tabelle sono state bloccate
–aiuto Visualizza il messaggio di aiuto ed esci
–host=nome_host Connettiti al server MySQL sull'host specificato
–mantieni Non eliminare la destinazione precedente (rinominata) al termine
–nessun indice Non includere i file di indice completi nel backup
–password[=password] La password da utilizzare durante la connessione al server
–port=port_num Il numero di porta TCP/IP da utilizzare per la connessione
–silenzioso Sii silenzioso tranne che per gli errori
–regexp Copia tutti i database con nomi che corrispondono all'espressione regolare data
–resetmaster Reimposta il log binario dopo aver bloccato tutte le tabelle
–resetslave Reimposta il file master.info dopo aver bloccato tutte le tabelle
–socket=percorso Per le connessioni a localhost
–tmpdir=percorso La directory temporanea
–utente=nome_utente, Il nome utente MySQL da utilizzare durante la connessione al server
–versione Visualizza le informazioni sulla versione ed esci

2. output del comando mysqlhotcopy:

Il comando mysqlhotcopy sopra mostrerà un output simile al seguente.

[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).

Per impostazione predefinita, il database MySQL si trova in /var/lib/mysql/{db-name}. mysqlhotcopy esegue un backup dei file della tabella da questa posizione del database predefinita, nella directory di backup. La directory di backup /home/backup/database/sugarcrm, conterrà la copia esatta di tutti i file dal vero database MySQL /var/lib/mysql/sugarcrm directory.

[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l
295
[local-host]# ls -1 /home/backup/database/sugarcrm | wc -l
295

Si noti che ogni tabella ha tre file corrispondenti con estensione *.frm, *.MYD e *.MYI. La directory del database contiene anche un file db.opt che contiene il parametro relativo al database.

Nell'esempio sopra, puoi vedere che mysqlhotcopy esegue un backup di 98 tabelle di database sugarcrm. Quindi, il numero totale di file nella directory di backup =98 tabelle * 3 + 1 file di configurazione db =296 file.

3. Ripristina da mysqlhotcopy

Per ripristinare il backup dal backup di mysqlhotcopy, copia semplicemente i file dalla directory di backup nella directory /var/lib/mysql/{db-name}. Solo per sicurezza, assicurati di interrompere mysql prima di ripristinare (copiare) i file. Dopo aver copiato i file in /var/lib/mysql/{db-name}, riavviare mysql.

4. Risoluzione dei problemi di mysqlhotcopy

Come risolvere Impossibile individuare il problema DBD/mysql.pm? mysqlhotcopy è uno script perl e richiede il modulo perl-DBD. Potresti ricevere il seguente errore durante l'esecuzione di mysqlhotcopy se il modulo perl-DBD non è installato.

[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

Assicurati di installare il pacchetto perl-DBD come mostrato di seguito.

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
Preparing...                ########################################### [100%]
1:perl-DBD-MySQL         ########################################### [100%]

Come risolvere il problema con l'installazione di perl-DBD? Durante l'installazione del perl-DBD, potresti ricevere il seguente messaggio di errore.

[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

Scarica e installa MySQL-shared-compat da mysql.com e questo dovrebbe risolvere l'errore sopra menzionato durante l'installazione del pacchetto perl-DBD.

[local-host]# rpm -ivh MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm
Preparing...                ########################################### [100%]
1:MySQL-shared-compat    ########################################### [100%]

Utilizzi altri metodi per eseguire il backup o il ripristino del database MySQL? Si prega di lasciare i vostri commenti.


Linux
  1. MySQL:come eseguire il backup (scaricare) e ripristinare il database utilizzando mysqldump

  2. Come eseguire il backup e il ripristino del database Postgres

  3. Come eseguire il backup e il ripristino del database MySQL utilizzando la riga di comando

  4. Come ripristinare il database MySQL usando il comando in SSH?

  5. Nozioni di base su utenti e database MySQL

Backup e ripristino delle applicazioni Ubuntu utilizzando Aptik

Come eseguire il backup e ripristinare il database MSSQL/MySQL in Plesk

Come eseguire il backup del database MySQL utilizzando cPanel cron?

Come eseguire il backup del database MySQL utilizzando cPanel?

Come ripristinare il backup del database utilizzando JetBackup 5?

Come ripristinare un database MySQL da .SQL Backup