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.