Búsqueda de sitios web

Cómo hacer una copia de seguridad/restaurar MySQL/MariaDB y PostgreSQL usando las herramientas 'Automysqlbackup' y 'Autopostgresqlbackup'


Si es administrador de bases de datos (DBA) o es responsable de mantener, realizar copias de seguridad y restaurar bases de datos, sabe que no puede permitirse el lujo de perder datos. La razón es simple: perder datos no sólo significa la pérdida de información importante, sino que también puede dañar financieramente a su negocio.

Por esa razón, siempre debes asegurarte de que:

1. se realiza una copia de seguridad de sus bases de datos periódicamente,
2. esas copias de seguridad se almacenan en un lugar seguro, y
3. realiza ejercicios de restauración con regularidad.

Esta última actividad no debe pasarse por alto, ya que no querrás encontrarte con un problema importante sin haber practicado lo que se debe hacer en tal situación.

En este tutorial le presentaremos dos interesantes utilidades para realizar copias de seguridad de bases de datos MySQL/MariaDB y PostgreSQL, respectivamente: automysqlbackup y autopostgresqlbackup.

Dado que este último se basa en el primero, centraremos nuestra explicación en automysqlbackup y resaltaremos las diferencias con autopgsqlbackup, si las hay.

Se recomienda encarecidamente almacenar las copias de seguridad en un recurso compartido de red montado en el directorio de copias de seguridad para que, en caso de una falla en todo el sistema, aún esté cubierto.

Lea las siguientes guías útiles sobre MySQL:

Instalación de bases de datos MySQL/MariaDB/PostgreSQL

1. Esta guía asume que debe tener una instancia MySQL/MariaDB/PostgreSQL ejecutándose. Si no, instálela. los siguientes paquetes:

Distribuciones basadas en Fedora:

yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs

Debian y derivados:

aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common

2. Tiene una base de datos de prueba MySQL/MariaDB/PostgreSQL que puede utilizar (se recomienda < strong style="color:red">NO utilice automysqlbackup o autopostgresqlbackup en un entorno de producción hasta que se haya familiarizado con estas herramientas).

De lo contrario, cree dos bases de datos de muestra y rellénelas con datos antes de continuar. En este artículo utilizaré las siguientes bases de datos y tablas:

CREATE DATABASE mariadb_db;
CREATE TABLE tecmint_tbl (UserID INT AUTO_INCREMENT PRIMARY KEY, 
UserName VARCHAR(50), 
IsActive BOOL);

CREATE DATABASE postgresql_db;
CREATE TABLE tecmint_tbl (
UserID SERIAL PRIMARY KEY,
UserName VARCHAR(50),
IsActive BOOLEAN);

Instalación de automysqlbackup y autopgsqlbackup en CentOS 7 y Debian 8

3. En Debian 8, ambas herramientas están disponibles en los repositorios, por lo que instalarlas es tan sencillo como ejecutar:

aptitude install automysqlbackup autopostgresqlbackup

Mientras que en CentOS 7 necesitarás descargar los scripts de instalación y ejecutarlos. En las secciones siguientes nos centraremos exclusivamente en instalar, configurar y probar estas herramientas en CentOS 7 ya que para Debian 8, donde casi funcionan de fábrica, Haga las aclaraciones necesarias más adelante en este artículo.

Instalación y configuración de automysqlbackup en CentOS 7

4. Comencemos creando un directorio de trabajo dentro de /opt para descargar el script de instalación y ejecutarlo:

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. El archivo de configuración para automysqlbackup se encuentra dentro de /etc/automysqlbackup con el nombre myserver.conf. Echemos un vistazo a las directivas de configuración más relevantes:

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 )
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"

Una vez que haya configurado automysqlbackup según sus necesidades, le recomendamos encarecidamente que consulte el archivo README que se encuentra en /etc/automysqlbackup/README.

Copia de seguridad de la base de datos MySQL

6. Cuando estés listo, continúa y ejecuta el programa, pasando el archivo de configuración como argumento:

automysqlbackup /etc/automysqlbackup/myserver.conf

Una inspección rápida del directorio daily mostrará que automysqlbackup se ha ejecutado correctamente:

pwd
ls -lR daily

Por supuesto, puede agregar una entrada crontab para ejecutar automysqlbackup a la hora del día que mejor se adapte a sus necesidades (1:30 a. m. todos los días en el siguiente ejemplo):

30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf

Restaurar una copia de seguridad de MySQL

7. Ahora eliminemos la base de datos mariadb_db a propósito:

Creémoslo nuevamente y restauremos la copia de seguridad. En el indicador de MariaDB, escriba:

CREATE DATABASE mariadb_db;
exit

Luego localiza:

cd /var/backup/db/automysqlbackup/daily/mariadb_db
ls

Y restaurar la copia de seguridad:

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;

Instalación y configuración de autopostgresqlbackup en CentOS 7

8. Para que autopostgresql funcione perfectamente en CentOS 7, primero necesitaremos instalar algunas dependencias:

yum install mutt sendmail

Luego repitamos el proceso como antes:

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

Hagamos que el script sea ejecutable e iniciemos/habilitemos el servicio:

chmod 755 autopostgresqlbackup.sh
systemctl start postgresql
systemctl enable postgresql

Finalmente, editaremos el valor de la configuración del directorio de respaldo a:

BACKUPDIR="/var/backup/db/autopostgresqlbackup"

Después de revisar el archivo de configuración de automysqlbackup, configurar esta herramienta es muy fácil (esa parte de la tarea queda en tus manos).

9. En CentOS 7, a diferencia de Debian 8, autopostgresqlbackup se ejecuta mejor como postgres usuario del sistema, por lo que para hacerlo debe cambiar a esa cuenta o agregar una tarea cron a su archivo crontab:

crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh

Por cierto, es necesario crear el directorio de copia de seguridad y sus permisos y propiedad del grupo deben establecerse recursivamente en 0770 y postgres (nuevamente, esto NO será necesario en < fuerte>Debian):

mkdir /var/backup/db/autopostgresqlbackup
chmod -R 0770 /var/backup/db/autopostgresqlbackup
chgrp -R postgres /var/backup/db/autopostgresqlbackup

El resultado:

cd /var/backup/db/autopostgresqlbackup
pwd
ls -lR daily

10. Ahora puedes restaurar los archivos cuando sea necesario (recuerda hacer esto como usuario postgres después de recrear la base de datos vacía):

gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db

Consideraciones en Debian 8

Como comentábamos anteriormente, no sólo es más sencilla la instalación de estas herramientas en Debian, sino también sus respectivas configuraciones. Encontrarás los archivos de configuración en:

  1. Automysqlbackup: /etc/default/automysqlbackup
  2. Autopostgresqlbackup: /etc/default/autopostgresqlbackup

Resumen

En este artículo hemos explicado cómo instalar y utilizar automysqlbackup y autopostgresqlbackup (aprender a utilizar el primero te ayudará a dominar también el segundo), dos excelentes copias de seguridad de bases de datos. herramientas que pueden facilitar mucho sus tareas como DBA o administrador/ingeniero de sistemas.

Tenga en cuenta que puede ampliar este tema configurando notificaciones por correo electrónico o enviando archivos de respaldo como archivos adjuntos por correo electrónico; no es estrictamente necesario, pero a veces puede resultar útil.

Como nota final, recuerde que los permisos de los archivos de configuración deben establecerse al mínimo (0600 en la mayoría de los casos). Esperamos escuchar lo que piensa sobre este artículo. No dude en enviarnos una nota utilizando el siguiente formulario.