Come aumentare il backup e il ripristino rapidi del database da 500 GB utilizzando mysqldump?


10

Esiste un database di dimensioni pari a 500 GB. Le tabelle nel database A contengono sia le tabelle MyISAM che INNODB. Le tabelle MyISAM sono tabelle principali e le tabelle Innodb sono le principali tabelle delle transazioni.

Esegui il backup e il ripristino utilizzando il dump mysql che impiega da molto tempo o giorni.

  • max_allowed_packet = 1G
  • foreign_key_checks = 0
  • auto_commit = off

1
Voglio solo assicurarmi che tu stia usando --opt con l'utility mysqldump. Questo è un enorme risparmio di tempo durante il ricaricamento. senza di essa mysqldump crea il file sql riga per riga. --opt fa: aggiunge blocchi, rilascia e ricrea con tutte le opzioni di creazione abilitate, disabilita temporaneamente le chiavi per un rapido ricaricamento e quindi riattiva le chiavi alla fine per ricostruire gli indici dopo aver finito la scrittura. Concatena più righe insieme negli inserti per ridurre le dimensioni dei file E il tempo di analisi di ogni istruzione (fino al 70%) e consente a --quick di ridurre il carico sul DB di dumping durante l'esecuzione. riduce il tempo di caricamento dell'80%
ppostma1

Risposte:


5

Ma il link raccomanda anche XtraBackup di Percona, che è più veloce, senza blocchi sui tavoli che sono già in uso e non guadagna tempo per il ripristino. Per 500 GB di dati preferisco Percona XtraBackup per essere veloce ed efficiente a meno che tu non voglia convertirli in modello innodb_file_per_table se non provenisse dal server DB esistente. Di seguito il link spiega come procedere.

http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html


1
Il problema con Percona Xtrabackup è che mysqld deve essere arrestato per ripristinare un database.
dr_

2

Dai un'occhiata a mydumper. È molto più veloce di mysqldump: la nuova versione di mydumper 0.6.1 offre prestazioni e funzionalità di usabilità

Puoi scaricare da qui: https://github.com/maxbube/mydumper

Che cos'è mydumper? Perché?

  • Parallelismo (quindi velocità) e prestazioni (evita costose routine di conversione dei set di caratteri, codice efficiente globale)
  • Gestione dell'output più semplice (file separati per tabelle, metadati di dump, ecc., Dati di facile visualizzazione / analisi)
  • Coerenza: mantiene l'istantanea su tutti i thread, fornisce posizioni precise del registro master e slave, ecc
  • Gestibilità: supporta PCRE per specificare inclusioni ed esclusioni di database e tabelle

1

Penso che la domanda sia su come ripristinare più velocemente dai file dump ripetuti di mysqldump e non su una diversa soluzione di backup.

Uno dei modi per farlo è creare gruppi di tabelle nello schema e creare un utente DB separato per ciascun gruppo e utilizzare le autorizzazioni MySQL per non consentire l'inserimento di tabelle nell'uso di tutti gli utenti DB tranne uno.

Questa è una tecnica collaudata, veloce, quasi parallela ma non sicura al 100% di quanto tempo ci vorrà per ripristinare da 500G. Ma imho, hai bisogno di qualcosa di parallelo. Vedi il link qui sotto per un esempio.

Ripristino rapido e parallelo da dump SQL (mysqldump) per MySQL


1

Prova quanto segue con innobackupex:

innobackupex --parallel=7 --rsync  /var/mysql/backup

È possibile modificare il numero di processo parallelo come desiderato. Dato che hai menzionato di avere tabelle myisam, il parametro "rsync" ti aiuterà a velocizzare il backup di quelle.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.