User Tools

Site Tools


progetti:cloud-areapd:operations:backup

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
progetti:cloud-areapd:operations:backup [2014/09/26 07:43] – [Bacula Backup] cresce@infn.itprogetti:cloud-areapd:operations:backup [2014/09/26 08:05] (current) – [Bacula Backup] cresce@infn.it
Line 1: Line 1:
 +====== Backup ======
  
 +====== MySQL DB Backup ======
 +
 +Il cluster MySQL e' composto da tre macchine nelle quali e' installato Percona XtraDB Cluster. Per eseguire il backup basta utilizzare uno qualsiasi dei tre server, essendo tutti in configurazione attiva. 
 +Nel nostro cluster e' stato utilizzato mysql-cluster-01 per eseguire tutte le attivita' di backup.
 +
 +Percona fornisce un tool per eseguire il backup e restore chiamato **innobackupex**.
 +
 +Innobackupex esegue il “full backup” del cluster e non “partial backups” in quanto Percona utilizza un unico tablespace per tutti i databases. Per consentire i “partial backups” e' necessario utilizzare l'opzione //innodb_file_per_table// nella configurazione di MySQL (attiva nel nostro caso).
 +
 +Innobackupex e' uno script perl che utilizza il binario xtrabackup per eseguire il backup di tutti i dati delle tabelle InnoDB, tutte le definizioni delle tabelle nel database (.frm files), dati e files riferiti a MyISAM, ... , triggers e informazioni di configurazione del database in una directory con nome il timestamp attuale creata nella directory fornita al comando.
 +
 +I files di backup sono salvati in una partizione montata sotto /backup/mysql/xtrabackup.
 +
 +''[root@mysql-cluster-01 ~]# ll /backup/mysql/xtrabackup/\\
 +...............................................\\
 +drwxr-xr-x 28 root root 4096 Sep 19 20:00 /backup/mysql/xtrabackup/2014-09-19_20-00-05\\
 +drwxr-xr-x 28 root root 4096 Sep 20 20:00 /backup/mysql/xtrabackup/2014-09-20_20-00-02\\
 +drwxr-xr-x 28 root root 4096 Sep 21 20:00 /backup/mysql/xtrabackup/2014-09-21_20-00-06\\
 +drwxr-xr-x 28 root root 4096 Sep 22 20:00 /backup/mysql/xtrabackup/2014-09-22_20-00-02\\
 +drwxr-xr-x 28 root root 4096 Sep 23 20:00 /backup/mysql/xtrabackup/2014-09-23_20-00-06''
 +
 +===== Full Backup/Restore =====
 +
 +Il backup viene eseguito ogni sera alle 20:00 tramite un cron job, nel quale viene invocato
 +il comando: /usr/bin/innobackupex /backup/mysql/xtrabackup/<timestamp>
 +
 +Per eseguire il restore bisogna innanzitutto copiare il backup in un area temporanea e
 +applicare i logs al backup con i seguenti comandi:
 +
 +mkdir /tmp/backup
 +cp -r /backup/mysql/xtrabackup/<timestamp>/* /tmp/backup/
 +innobackupex --apply-log --use-memory=2G /tmp/backup
 +
 +A questo punto spegnare tutte le istanze mysql nel cluster con il comando:
 +
 +<code bash>
 +/etc/init.d/mysql stop
 +</code>
 +
 +ripulire l'area data di mysql:
 +
 +<code bash>
 +rm -rf /var/lib/mysql/*
 +</code>
 +
 +e caricare il backup con l'opzione di copy-back (la dir. dove ripristinare viene letta dal file di conf. /etc/my.cnf):
 +
 +<code bash>
 +innobackupex --copy-back /tmp/backup
 +</code>
 +
 +Una volta caricato tutti i database, cambiare i permessi dell'area mysql:
 +
 +<code bash>
 +chown -R mysql:mysql /var/lib/mysql
 +</code>
 +
 +A questo punto e' possibile riavviare il server mysql nel nodo mysql-cluster-01 con il seguente comando:
 +
 +<code bash>
 +/etc/init.d/mysql start --wsrep-cluster-address="gcomm://"
 +</code>
 +
 +Non utilizzare il comando "/etc/init.d/mysql start" per avviare la prima istanza del database perche' non troverebbe le altre istanze attive e non riuscirebbe ad avviarsi.
 +
 +Una volta avviata la prima istanza procedere con le altre due. Nel caso non si sia gia' proceduto alla pulizia dell'area dati di mysql eseguire il comando:
 +
 +<code bash>
 +rm -rf /var/lib/mysql/*
 +</code>
 +
 +Ora e' possibile avviare mysql:
 +
 +<code bash>
 +/etc/init.d/mysql start
 +</code>
 +===== Partial Backups/Restore =====
 +
 +Il backup viene eseguito ogni mattina alle 08:00 tramite un cron job. I backups dei singoli database sono eseguiti tramite il comando **mysqldump**.
 +Per eseguire il backup e' stato utilizzato lo script presente al link http://bash.cyberciti.biz/backup/backup-mysql-database-server-2/ con alcune personalizzazioni. Lo script in mysql-clsuter-01 si chiama /usr/local/bin/mysql_dump_separate_db.
 +
 +I vecchi backup verranno cancellati dall'area backup dopo 30 giorni tramite il comando (non ancora attivo):
 +
 +<code bash>
 +find /backup/mysql -type f -mtime +30 -exec rm {} \;
 +</code>
 +
 +Per eseguire la cancellazione il comando find verra' eseguito in catena con gli script di backup. 
 +
 +Per eseguire il restore di un database bisogna innanzitutto eseguire il drop dello stesso dal server MySQL con account root.
 +
 +<code bash>
 +mysql -u root
 +mysql> drop <db_name>;
 +</code>
 +
 +Ora e' possibile caricare il database dal file presente in /backup/mysql con la seguente sequenza di comandi:
 + 
 +<code bash>
 +cp /backup/mysql/<db_name>.mysql-cluster-01.cloud.pd.infn.it.<timestamp>.gz /tmp/<db_name>.gz
 +gunzip /tmp/<db_name>.gz
 +mysql -u root < /tmp/<db_name>
 +rm -f /tmp/<db_name>
 +</code>
 +
 +====== Bacula Backup ======
 +Per eseguire il backup dei servers viene utilizzato bacula. La seguente tabella mostra le macchine e le directories di cui viene eseguito il backup. 
 +
 +<html>
 +<head>
 +<style>
 +div.bacula table {
 +    margin: 0 0 1em;
 +    font-size: 100%;
 +}
 +div.bacula table.inline {
 +    background-color: #FFFFFF;
 +    border-collapse: collapse;
 +    border-spacing: 0;
 +}
 +div.bacula table.inline th {
 +    background-color: #EEEEEE;
 +    border: 1px solid #CCCCCC;
 +    padding: 3px;
 +}
 +div.bacula table.inline td {
 +    border: 1px solid #CCCCCC;
 +    padding: 3px;
 +}
 +
 +.leftalign {
 +    text-align: left;
 +}
 +</style>
 +</head>
 +<body>
 +<div class="bacula">
 +<table class="inline">
 +<tbody>
 +<tr class="row0">
 +<th class="col0 leftalign"> Host </th>
 +<th class="col1 leftalign"> Time </th>
 +<th class="col2 leftalign"> Type </th>
 +<th class="col3 leftalign"> Directories </th>
 +</tr>
 +<tr class="row1">
 +<td rowspan="3" class="col0 leftalign"> cld-nagios </td>
 +<td class="col1 leftalign"> 3rd sat at 23:30 </td>
 +<td class="col2 leftalign"> Full </td>
 +<td rowspan="3" class="col3 leftalign"> /etc/nagios <br> /usr/lib64/nagios/plugins </td>
 +</tr>
 +<tr class="row2">
 +<td class="col1 leftalign"> 1st,2nd,4th,5th sat at 23:30 </td>
 +<td class="col2 leftalign"> Incremental </td>
 +</tr>
 +<tr class="row3">
 +<td class="col1 leftalign"> mon-fri,sun at 23:30 </td>
 +<td class="col2 leftalign"> Incremental </td>
 +</tr>
 +<tr class="row1">
 +<td rowspan="3" class="col0 leftalign"> cld-nat </td>
 +<td class="col1 leftalign"> 3rd sat at 23:30 </td>
 +<td class="col2 leftalign"> Full </td>
 +<td rowspan="3" class="col3 leftalign"> /etc <br> /root <br> /var/named </td>
 +</tr>
 +<tr class="row2">
 +<td class="col1 leftalign"> 1st,2nd,4th,5th sat at 23:30 </td>
 +<td class="col2 leftalign"> Incremental </td>
 +</tr>
 +<tr class="row3">
 +<td class="col1 leftalign"> mon-fri,sun at 23:30 </td>
 +<td class="col2 leftalign"> Incremental </td>
 +</tr>
 +<tr class="row1">
 +<td rowspan="3" class="col0 leftalign"> mysql-cluster-01.cloud </td>
 +<td class="col1 leftalign"> 3rd sat at 23:30 </td>
 +<td class="col2 leftalign"> Full </td>
 +<td rowspan="3" class="col3 leftalign"> /backup <br> /backup/mysql <br> /etc <br> /home <br> /root </td>
 +</tr>
 +<tr class="row2">
 +<td class="col1 leftalign"> 1st,2nd,4th,5th sat at 23:30 </td>
 +<td class="col2 leftalign"> Incremental </td>
 +</tr>
 +<tr class="row3">
 +<td class="col1 leftalign"> mon-fri,sun at 23:30 </td>
 +<td class="col2 leftalign"> Incremental </td>
 +</tr>
 +</tbody>
 +</table>
 +</div>
 +</body>
 +</html>

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki