Se sei un amministratore di database (DBA ) o sono responsabili della manutenzione, del backup e del ripristino dei database, sai che non puoi permetterti di perdere dati. Il motivo è semplice:la perdita di dati non solo significa la perdita di informazioni importanti, ma può anche danneggiare finanziariamente la tua attività.
Per questo motivo, devi sempre assicurarti che:
1. i tuoi database vengono sottoposti a backup su base periodica,
2. tali backup vengono archiviati in un luogo sicuro e
3. esegui regolarmente le esercitazioni di restauro.
Quest'ultima attività non dovrebbe essere trascurata, poiché non vuoi incappare in un problema importante senza aver praticato ciò che deve essere fatto in una situazione del genere.
In questo tutorial ti presenteremo due utili utilità per eseguire il backup di MySQL / MariaDB e PostgreSQL database, rispettivamente:automysqlbackup e autopostgresqlbackup .
Poiché quest'ultimo si basa sul primo, concentreremo la nostra spiegazione su automysqlbackup ed evidenzia le differenze con autopgsqlbackup , se presente.
Si consiglia vivamente di archiviare i backup in una condivisione di rete montata nella directory di backup in modo che in caso di arresto anomalo del sistema, sarai comunque coperto.
Leggi le seguenti utili guide su MySQL:
Comandi di amministrazione del database MySQL di base Comandi di backup e ripristino di MySQL per l'amministrazione del databasephpMyBackupPro – Uno strumento di backup MySQL basato sul WebMySQLDumper:uno strumento di backup di database MySQL basato su PHP e Perl15 Domande di intervista di base su MySQL per gli amministratori di databaseInstallazione di database MySQL/MariaDB/PostgreSQL
1. Questa guida presuppone che tu debba avere MySQL / MariaDB / PostgreSQL istanza in esecuzione, in caso contrario, installare i seguenti pacchetti:
Distribuzioni basate su Fedora:
# yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs
Debian e derivati:
# aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common
2. Hai un test MySQL / MariaDB / PostgreSQL database che puoi utilizzare (ti consigliamo di NON usa automysqlbackup o autopostgresqlbackup in un ambiente di produzione fino a quando non avrai acquisito familiarità con questi strumenti).
In caso contrario, creare due database di esempio e popolarli con i dati prima di procedere. In questo articolo utilizzerò i seguenti database e tabelle:
MySQL/MariaDBCREATE DATABASE mariadb_db; CREATE TABLE tecmint_tbl (UserID INT AUTO_INCREMENT PRIMARY KEY, UserName VARCHAR(50), IsActive BOOL);PostgreSQL
CREATE DATABASE postgresql_db; CREATE TABLE tecmint_tbl ( UserID SERIAL PRIMARY KEY, UserName VARCHAR(50), IsActive BOOLEAN);
Installazione di automysqlbackup e autopgsqlbackup in CentOS 7 e Debian 8
3. In Debian 8 , entrambi gli strumenti sono disponibili nei repository, quindi installarli è semplice come eseguire:
# aptitude install automysqlbackup autopostgresqlbackup
Mentre in CentOS 7 dovrai scaricare gli script di installazione ed eseguirli. Nelle sezioni seguenti ci concentreremo esclusivamente sull'installazione, la configurazione e il test di questi strumenti su CentOS 7 poiché per Debian 8 – dove funzionano quasi fuori dagli schemi, faremo i necessari chiarimenti più avanti in questo articolo.
Installazione e configurazione di automysqlbackup in CentOS 7
4. Iniziamo creando una directory di lavoro all'interno di /opt
per scaricare lo script di installazione ed eseguirlo:
# mkdir /opt/automysqlbackup # cd /opt/automysqlbackup # wget http://ufpr.dl.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz # tar zxf automysqlbackup-v3.0_rc6.tar.gz # ./install.sh
.
5. Il file di configurazione per automysqlbackup si trova all'interno di /etc/automysqlbackup sotto il nome myserver.conf . Diamo un'occhiata alle direttive di configurazione più rilevanti:
myserver.conf – Configura Automysqlbackup# Username to access the MySQL server CONFIG_mysql_dump_username='root' # Password CONFIG_mysql_dump_password='YourPasswordHere' # Host name (or IP address) of MySQL server CONFIG_mysql_dump_host='localhost' # Backup directory CONFIG_backup_dir='/var/backup/db/automysqlbackup' # List of databases for Daily/Weekly Backup e.g. ( 'DB1' 'DB2' 'DB3' ... ) # set to (), i.e. empty, if you want to backup all databases CONFIG_db_names=(AddYourDatabase Names Here) # List of databases for Monthly Backups. # set to (), i.e. empty, if you want to backup all databases CONFIG_db_month_names=(AddYourDatabase Names Here) # Which day do you want monthly backups? (01 to 31) # If the chosen day is greater than the last day of the month, it will be done # on the last day of the month. # Set to 0 to disable monthly backups. CONFIG_do_monthly="01" # Which day do you want weekly backups? (1 to 7 where 1 is Monday) # Set to 0 to disable weekly backups. CONFIG_do_weekly="5" # Set rotation of daily backups. VALUE*24hours # If you want to keep only today's backups, you could choose 1, i.e. everything older than 24hours will be removed. CONFIG_rotation_daily=6 # Set rotation for weekly backups. VALUE*24hours. A value of 35 means 5 weeks. CONFIG_rotation_weekly=35 # Set rotation for monthly backups. VALUE*24hours. A value of 150 means 5 months. CONFIG_rotation_monthly=150 # Include CREATE DATABASE statement in backup? CONFIG_mysql_dump_create_database='no' # Separate backup directory and file for each DB? (yes or no) CONFIG_mysql_dump_use_separate_dirs='yes' # Choose Compression type. (gzip or bzip2) CONFIG_mysql_dump_compression='gzip' # What would you like to be mailed to you? # - log : send only log file # - files : send log file and sql files as attachments (see docs) # - stdout : will simply output the log to the screen if run manually. # - quiet : Only send logs if an error occurs to the MAILADDR. CONFIG_mailcontent='quiet' # Email Address to send mail to? ([email protected]) CONFIG_mail_address='root' # Do you wish to encrypt your backups using openssl? #CONFIG_encrypt='no' # Choose a password to encrypt the backups. #CONFIG_encrypt_password='password0123' # Command to run before backups (uncomment to use) #CONFIG_prebackup="/etc/mysql-backup-pre" # Command run after backups (uncomment to use) #CONFIG_postbackup="/etc/mysql-backup-post"
Dopo aver configurato automysqlbackup in base alle tue esigenze, ti consigliamo vivamente di controllare il README file trovato in /etc/automysqlbackup/README .
Backup del database MySQL
6. Quando sei pronto, vai avanti ed esegui il programma, passando il file di configurazione come argomento:
# automysqlbackup /etc/automysqlbackup/myserver.conf
Un rapido sopralluogo del quotidiano directory mostrerà che automysqlbackup è stato eseguito correttamente:
# pwd # ls -lR daily
Ovviamente puoi aggiungere una voce crontab per eseguire automysqlbackup all'ora del giorno più adatta alle tue esigenze (1:30 am ogni giorno nell'esempio seguente):
30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf
Ripristino di un backup MySQL
7. Ora lasciamo cadere il mariadb_db database apposta:
Creiamolo di nuovo e ripristiniamo il backup. Nel prompt di MariaDB, digita:
CREATE DATABASE mariadb_db; exit
Quindi individuare:
# cd /var/backup/db/automysqlbackup/daily/mariadb_db # ls
E ripristina il backup:
# mysql -u root -p mariadb_db < daily_mariadb_db_2015-09-01_23h19m_Tuesday.sql # mysql -u root -p MariaDB [(none)]> USE mariadb_db; MariaDB [(none)]> SELECT * FROM tecmint_tb1;
Installazione e configurazione di autopostgresqlbackup in CentOS 7
8. In ordine per autopostgresql per funzionare perfettamente in CentOS 7 , dovremo prima installare alcune dipendenze:
# yum install mutt sendmail
Quindi ripetiamo il processo come prima:
# mkdir /opt/autopostgresqlbackup # cd /opt/autopostgresqlbackup # wget http://ufpr.dl.sourceforge.net/project/autopgsqlbackup/AutoPostgreSQLBackup/AutoPostgreSQLBackup-1.0/autopostgresqlbackup.sh.1.0 # mv autopostgresqlbackup.sh.1.0 /opt/autopostgresqlbackup/autopostgresqlbackup.sh
Rendiamo lo script eseguibile e avviamo / abilita il servizio:
# chmod 755 autopostgresqlbackup.sh # systemctl start postgresql # systemctl enable postgresql
Infine, modificheremo il valore dell'impostazione della directory di backup su:
autopostgresqlbackup.sh - Configura AutopostgresqlbackupBACKUPDIR="/var/backup/db/autopostgresqlbackup"
Dopo aver eseguito il file di configurazione di automysqlbackup , configurare questo strumento è molto semplice (quella parte del compito è lasciata a te).
9. In CentOS 7 , al contrario di Debian 8 , autopostgresqlbackup è meglio eseguirlo come postgres utente di sistema, quindi per farlo dovresti passare a quell'account o aggiungere un lavoro cron al suo file crontab:
# crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh
La directory di backup, tra l'altro, deve essere creata e le sue autorizzazioni e la proprietà del gruppo devono essere impostate ricorsivamente su 0770 e postgres (di nuovo, questo NON sarà necessario in Debian ):
# mkdir /var/backup/db/autopostgresqlbackup # chmod -R 0770 /var/backup/db/autopostgresqlbackup # chgrp -R postgres /var/backup/db/autopostgresqlbackup
Il risultato:
# cd /var/backup/db/autopostgresqlbackup # pwd # ls -lR daily
10. Ora puoi ripristinare i file quando necessario (ricorda di farlo come utente postgres dopo aver ricreato il database vuoto):
# gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db
Considerazioni su Debian 8
Come accennato in precedenza, non solo l'installazione di questi strumenti in Debian è più semplice, ma anche le rispettive configurazioni. Troverai i file di configurazione in:
- Automysqlbackup :/etc/default/automysqlbackup
- Autopostgresqlbackup :/etc/default/autopostgresqlbackup
Riepilogo
In questo articolo abbiamo spiegato come installare e utilizzare automysqlbackup e autopostgresqlbackup (imparare a usare il primo ti aiuterà anche a padroneggiare il secondo), due ottimi strumenti di backup del database che possono semplificare molto le tue attività come DBA o amministratore di sistema/ingegnere.
Tieni presente che puoi approfondire questo argomento impostando notifiche email o l'invio di file di backup come allegati via e-mail, non strettamente necessario, ma a volte può tornare utile.
Come nota finale, ricorda che i permessi dei file di configurazione devono essere impostati al minimo (0600 nella maggior parte dei casi). Non vediamo l'ora di sapere cosa ne pensi di questo articolo. Sentiti libero di inviarci una nota utilizzando il modulo sottostante.