2016-03-28 14 views
5

Sto provando a configurare il backup giornaliero per il database MySQL dal server slave o dall'istanza MySQL. Il mio database è un misto di tabelle InnoDb e MyISAM. Ho installato AutoMySQLBackup su un'altra macchina. Sto cercando di fare un backup completo e un backup incrementale giornaliero di un database MySQL da quella macchina con l'aiuto di AutoMySQLBackup.Backup MySQL utilizzando AutoMySQLBackup dallo slave al computer remoto

+0

e cosa fare che vuoi fare? –

+2

Questo è solo per tua informazione che non c'è backup incrementale per myisam ... quindi qualsiasi strumento prenderà backup incrementali delle tabelle innodb ma backup completo delle tabelle myisam in qualsiasi momento ..... quindi se hai qualche tavolo grande myisam allora può essere problematico –

+2

Cosa hai provato finora? In quale parte del processo hai problemi? Qualche errore in particolare? –

risposta

-1

Mysql Backup completo: -

https://dev.mysql.com/doc/mysql-enterprise-backup/3.12/en/mysqlbackup.full.html

opzioni su riga di comando o in file di configurazione?

Per chiarezza, gli esempi in questo manuale spesso mostrano alcune delle opzioni della riga di comando utilizzate con i comandi mysqlbackup. Per comodità e coerenza , è possibile includere le opzioni che rimangono invariate per la maggior parte dei processi di backup nella sezione [mysqlbackup] del file di configurazione di MySQL fornito a mysqlbackup. mysqlbackup raccoglie anche le opzioni dalla sezione [mysqld] se sono presenti . L'inserimento delle opzioni in un file di configurazione può semplificare l'amministrazione del backup per te: ad esempio, mettendo le informazioni sulla porta in un file di configurazione, è possibile evitare la modifica di script di backup ogni volta che l'istanza del database passa a una porta diversa . Vedere il Capitolo 14, File e parametri di configurazione per dettagli sull'uso dei file di configurazione.

Uscita in directory singole o sottodirectory con data/ora?

Per comodità, l'opzione --with-timestamp crea sottodirectory denominate sotto la directory di backup per contenere l'output di ciascun processo di backup . Le sottodirectory con timestamp rendono più semplice il stabilire periodi di conservazione, consentendo una facile rimozione e archiviazione dei dati di backup che hanno superato una certa età.

Se si utilizza una singola directory di backup (ovvero, se si omette l'opzione --with-timestamp), specificare un nuovo nome di directory univoco per ciascun processo di backup o specificare l'opzione --force da sovrascrivere file di backup esistenti.

Per i backup incrementali che utilizza l'opzione --incremental-base per specificare la directory che contiene il backup precedente, al fine di rendere i nomi delle directory prevedibile, si potrebbe preferire non utilizzare l'opzione --with-timestamp e generare invece una sequenza di nomi di directory con lo script di backup.

Backup sempre completo o backup completo più backup incrementali?

Se il volume di dati InnoDB è piccolo, o se il database è così occupato che un'alta percentuale di modifiche dei dati tra i backup, si potrebbe desiderare per eseguire un backup completo ogni volta. Tuttavia, in genere è possibile risparmiare tempo e spazio di archiviazione eseguendo backup completi periodici e successivamente diversi backup incrementali tra di essi, come descritto nella Sezione 4.3.2, "Creazione di un backup differenziale o incrementale".

Utilizzare la compressione o no?

La creazione di un backup compresso consente di risparmiare considerevole spazio di archiviazione e riduce significativamente l'utilizzo dell'I/O. E con il metodo di compressione LZ4 (introdotto dalla versione 3.10), il sovraccarico per l'elaborazione della compressione di è piuttosto basso. Nei casi in cui i backup del database si spostano da un sistema disco più veloce in cui i file di database attivi si trovano in uno spazio di archiviazione possibilmente più lento, la compressione spesso riduce significativamente il tempo di backup complessivo di . Può ridurre i tempi di ripristino come bene. In generale, raccomandiamo la compressione LZ4 senza compressione per la maggior parte degli utenti di , poiché i backup basati su LZ4 spesso terminano in un periodo di tempo più breve . Tuttavia, testare MySQL Enterprise Backup all'interno dell'ambiente per determinare quale sia l'approccio più efficiente.

La funzione di backup incrementale è destinato principalmente per le tabelle InnoDB, o tabelle non InnoDB che sono di sola lettura o raramente aggiornati. Per i file non InnoDB, l'intero file è incluso in un backup incrementale se il file è stato modificato rispetto al backup precedente.

Non è possibile eseguire backup incrementali con l'opzione --compress.

I backup incrementali rilevano le modifiche a livello di pagine nei file di dati InnoDB, a differenza delle righe della tabella; ogni pagina che è stata modificata viene sottoposta a backup. Pertanto, il risparmio di spazio e tempo non è esattamente proporzionale alla percentuale di righe o colonne InnoDB modificate.

Quando una tabella InnoDB viene interrotta e si esegue un backup incrementale successivo, il passaggio apply-log rimuove il file .ibd corrispondente dalla directory di backup completo. Poiché il programma di backup non può avere la stessa visione dello scopo dei file non InnoDB, quando un file non InnoDB viene rimosso tra il tempo di un backup completo e un successivo backup incrementale, il passaggio apply-log non rimuove il file da la directory di backup completa. Pertanto, il ripristino di un backup potrebbe comportare la ricomparsa di un file eliminato.

creazione di backup incrementali utilizzando solo il Redo Log

Il --incremental-con-redo-log-solo potrebbe offrire alcuni vantaggi rispetto l'opzione --incremental per la creazione di un backup incrementale:

Le modifiche alle tabelle InnoDB sono determinate in base al contenuto di del registro di ripristino InnoDB. Poiché i file di registro di ripristino hanno una dimensione fissa che conosce in anticipo, può richiedere meno I/O per leggere le modifiche da anziché convertire i file tablespace InnoDB per individuare le pagine modificate , a seconda delle dimensioni del tuo database, quantità di attività DML, e dimensioni dei file di registro di ripristino.

Dal momento che i file di log redo agire come un buffer circolare, con i record di cambiamenti più vecchi vengono sovrascritti da nuove operazioni DML avverrà, voi deve prendere nuovi backup incrementali su un calendario prevedibile dettato dalle dimensioni dei file di log e la quantità di dati di ripristino generati per il carico di lavoro . In caso contrario, il log di ripristino potrebbe non tornare indietro abbastanza da per registrare tutte le modifiche dal backup incrementale precedente, in , in tal caso mysqlbackup determinerà rapidamente che non può procedere e restituirà un errore.Lo script di backup deve essere in grado di rilevare l'errore e quindi eseguire un backup incrementale con l'opzione - incrementale --incremental.

Ad esempio:

Per calcolare le dimensioni del redo log, eseguire il comando SHOW VARIABLES LIKE 'innodb_log_file%' e, in base all'uscita, moltiplicare l'impostazione innodb_log_file_size per il valore di innodb_log_files_in_group. Per calcolare la dimensione del registro di ripetizione al livello fisico , esaminare la directory datadir dell'istanza MySQL e sommare le dimensioni dei file corrispondenti al modello ib_logfile *.

Il valore LSN InnoDB corrisponde al numero di byte scritti nel registro di ripristino . Per controllare l'LSN ad un certo momento, impartire il comando SHOW ENGINE INNODB STATUS e guardare sotto la voce LOG. Mentre pianifica la strategia di backup, registra periodicamente i valori LSN e sottrarre il valore precedente da quello corrente per calcolare la quantità di dati ripristinati ogni ora, giorno e così via.

Prima di MySQL 5.5, era prassi comune mantenere i registri di ripetizione piuttosto piccoli per evitare un lungo tempo di avvio quando il server MySQL era ucciso anziché spegnersi normalmente. Con MySQL 5.5 e versioni successive, le prestazioni del ripristino di emergenza sono notevolmente migliorate, come descritto in in Ottimizzazione delle variabili di configurazione InnoDB, in modo che sia possibile rendere i file di registro di ripristino più grandi se ciò aiuta la strategia di backup e il carico di lavoro del database del database.

Questo tipo di backup incrementale non è così indulgente per i valori troppo bassi --start-lsn come opzione standard -incremental. Ad esempio, non è possibile eseguire un backup completo e quindi eseguire una serie di backup --incremental-with-redo-log-only con lo stesso valore --start-lsn. Assicurarsi di specificare l'LSN di fine preciso del backup precedente come LSN iniziale del successivo backup incrementale; do non utilizzare valori arbitrari.

Nota Per garantire che i valori LSN corrispondono esattamente tra successive backup incrementali, si consiglia di utilizzare sempre l'opzione --incremental-base quando si utilizza il --incremental-con-redo-log-unica opzione .

per giudicare se questo tipo di backup incrementale è pratico e efficiente per una particolare istanza di MySQL:

Misura quanto velocemente le modifiche di dati all'interno del InnoDB redo log file. Controllare periodicamente l'LSN per decidere la quantità di dati di ripetizione accumulati nel corso di un certo numero di ore o giorni.

Confrontare il tasso di accumulo del registro redo con le dimensioni dei file di registro di ripristino. Utilizzare questo rapporto per verificare la frequenza con cui eseguire un backup incrementale , al fine di evitare la probabilità che il backup non funzioni perché i dati storici non sono disponibili nel registro di ripristino. Ad esempio, se si producono 1 GB di dati di registro di ripristino al giorno e la dimensione combinata dei file di registro di ripristino è 7 GB, si programmano backup incrementali più frequentemente di una volta alla settimana.È possibile eseguire backup incrementali ogni giorno o due, per evitare un potenziale problema quando un'improvvisa raffica di aggiornamenti ha prodotto più ripetizioni del solito.

tempi di backup incrementale Benchmark utilizzando sia il --incremental e --incremental-con-redo-log-uniche opzioni, per confermare se la tecnica di backup redo log esegue più velocemente e con meno overhead rispetto al metodo di backup incrementale tradizionale . Il risultato potrebbe dipendere dalla dimensione dei dati , dalla quantità di attività DML e dalle dimensioni dei file di registro di ripristino . Esegui i tuoi test su un server con un volume di dati realistici e un carico di lavoro realistico. Ad esempio, se si dispone di enormi file di registro , la loro lettura nel corso di un backup incrementale potrebbe richiedere fino a quando si leggono i file di dati InnoDB utilizzando la tecnica incrementale tradizionale . Viceversa, se il volume di dati è grande, legge tutti i file di dati per trovare le poche pagine modificate potrebbe essere meno efficiente rispetto all'elaborazione di file di registro di ripristino molto più piccoli.

Altre considerazioni per backup incrementali

La funzione di backup incrementale è rivolto principalmente a InnoDB tabelle o tabelle non InnoDB che sono di sola lettura o raramente aggiornati. I backup incrementali rilevano le modifiche a livello di pagine nei file di dati InnoDB , a differenza delle righe della tabella; ogni pagina modificata è stata sottoposta a backup . Pertanto, i risparmi di spazio e tempo non sono esattamente pari a proporzionali alla percentuale di righe o colonne InnoDB modificate.

Per i file non InnoDB, l'intero file è incluso in un backup incrementale se il file è stato modificato dopo il backup precedente, il che significa i risparmi per risorse di backup sono meno rilevanti se si confrontano con il caso con le tabelle InnoDB .

Non è possibile eseguire backup incrementali con l'opzione --compress.

Quando si effettua un backup incrementale che si basa su un backup (completo o incrementale ) creato utilizzando l'opzione --no-bloccaggio, utilizzare l'opzione --skip-binlog saltare il backup dei log binario, poiché le informazioni del registro binario non saranno disponibili per mysqlbackup nella situazione .

Esempi di backup incrementali

Questo esempio mysqlbackup utilizza per fare un backup incrementale di un server MySQL, compresi tutti i database e le tabelle. Mostriamo due alternative, una con l'opzione --incremental-base e l'altra con l'opzione --start-lsn.

Con l'opzione --incremental-base, non è necessario tenere traccia dei valori LSN tra un backup e il successivo. Invece, è sufficiente specificare la directory del backup precedente (completa o incrementale) e mysqlbackup rappresenta il punto di partenza per questo backup in base ai metadati di quello precedente. Poiché è necessario un insieme noto di nomi di directory, è possibile che si desideri utilizzare nomi con hardcoded o generare una sequenza di nomi nel proprio script di backup, anziché utilizzare l'opzione --with-timestamp.

$ mysqlbackup --defaults-file=/home/pekka/.my.cnf --incremental \ 
    --incremental-base=dir:/incr-backup/wednesday \ 
    --incremental-backup-dir=/incr-backup/thursday \ 
    backup 

... molte linee di uscita ... mysqlbackup: backup creato nella directory '/ incr-backup/giovedi' mysqlbackup: start_lsn: 2.654.255,717 mila mysqlbackup: incremental_base_lsn: 2.666.733,462 mila mysqlbackup: end_lsn: 2666736714z

101208 17:14:58 mysqlbackup: mysqlbackup completato OK! Si noti che se l'ultimo backup era un singolo file invece di un backup di directory, è comunque possibile utilizzare --incremental-base specificando per dir: directory_path il percorso della directory temporanea fornita con l'opzione --backup-dir durante il backup completo.

In alternativa alla specifica --incremental-base = dir: percorso_directory, è possibile indicare a mysqlbackup di eseguire una query sul valore end_lsn dall'ultimo backup riuscito, come registrato nella tabella backup_history sul server utilizzando --incremental-base = history : last_backup (richiesto che l'ultimo backup sia stato eseguito con mysqlbackup connesso al server).

È inoltre possibile utilizzare l'opzione --start-lsn per specificare dove deve essere avviato il backup incrementale. È necessario registrare il LSN del backup precedente riportato da mysqlbackup al termine del backup:

mysqlbackup: era in grado di analizzare il registro fino a LSN 2.654.255,716 mila Il numero viene registrato nel file meta/backup_variables.txt nella cartella specificata da --backup-dir durante il backup. Fornisci quel numero a mysqlbackup usando l'opzione --start-lsn. Il backup incrementale include quindi tutte le modifiche apportate dopo l'LSN specificato. Da allora la posizione del backup precedente non è molto significativa, quindi puoi utilizzare --with-timestamp per creare automaticamente sottodirectory con nome.

$ mysqlbackup --defaults-file=/home/pekka/.my.cnf --incremental \ 
    --start-lsn=2654255716 \ 
    --with-timestamp \ 
    --incremental-backup-dir=/incr-backup \ 
    backup 

... molte linee di uscita ... mysqlbackup: backup creato nella directory '/ incr-backup/2010-12-08_17-14-48' mysqlbackup: start_lsn: 2.654.255,717 mila mysqlbackup: incremental_base_lsn : 2666733462 mysqlbackup: end_lsn: 2666736714

101208 17:14:58 mysqlbackup: mysqlbackup completato OK! Per creare un'immagine di backup incrementale, invece, utilizzare il seguente comando, specificando con --incremental-backup-dir una directory temporanea per memorizzare i metadati per il backup e alcuni file temporanei:

$ mysqlbackup --defaults-file=/home/pekka/.my.cnf --incremental \ 
    --start-lsn=2654255716 \ 
    --with-timestamp \ 
    --incremental-backup-dir=/incr-tmp \ 
--backup-image=/incr-backup/incremental_image.bi 
    backup-to-image 

Nell'esempio seguente però , perché --backup-immagine non fornisce un percorso completo del file immagine da creare, l'immagine di backup incrementale viene creata nella cartella specificata da --incremental-backup-dir:

$ mysqlbackup --defaults-file=/home/pekka/.my.cnf --incremental \ 
    --start-lsn=2654255716 \ 
    --with-timestamp \ 
    --incremental-backup-dir=/incr-images \ 
--backup-image=incremental_image1.bi 
    backup-to-image 

https://dev.mysql.com/doc/mysql-enterprise-backup/3.7/en/mysqlbackup.incremental.html

+3

Non penso che incollare un intero documento nello stackoverflow sia una buona idea. – Harry

Problemi correlati