LinuxParty
Si usted es administrador de bases de datos ( DBA ) o es responsable del mantenimiento, la realización de copias de seguridad y la restauración de bases de datos, sabe que no puede permitirse perder datos. La razón es simple: perder datos no solo significa la pérdida de información importante, sino que también puede perjudicar económicamente a su empresa.
Por esta razón, debes asegurarte siempre de que:
1. sus bases de datos se respaldan periódicamente,
2. esas copias de seguridad se almacenan en un lugar seguro y
3. usted realiza simulacros de restauración periódicamente.
Esta última actividad no debe pasarse por alto, ya que no desea encontrarse con un problema importante sin haber practicado lo que se debe hacer en tal situación.
En este tutorial le presentaremos dos útiles 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 destacaremos 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.
Instalación de bases de datos MySQL / MariaDB / PostgreSQL
1. Esta guía asume que debe tener una instancia MySQL / MariaDB / PostgreSQL en ejecución. De lo contrario, instale 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 MySQL / MariaDB / PostgreSQL de prueba que puede utilizar (se recomienda NO utilizar 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 complételas con datos antes de continuar. En este artículo, utilizaré las siguientes bases de datos y tablas:
CREATE DATABASE mariadb_db; CREATE TABLE tabla1 (UserID INT AUTO_INCREMENT PRIMARY KEY, UserName VARCHAR(50), IsActive BOOL);
CREATE DATABASE postgresql_db; CREATE TABLE tabla1 ( UserID SERIAL PRIMARY KEY, UserName VARCHAR(50), IsActive BOOLEAN);
Instalación de automysqlbackup y autopgsqlbackup en RHEL y similares y Debian y similares
3. En Debian, ambas herramientas están disponibles en los repositorios, por lo que instalarlas es tan sencillo como ejecutar:
# aptitude install automysqlbackup autopostgresqlbackup
Mientras que en RHEL y similares, necesitarás descargar los scripts de instalación y ejecutarlos. En las secciones siguientes, nos centraremos exclusivamente en la instalación, configuración y prueba de estas herramientas en RHEL y similares, ya que para Debian y similares, donde funcionan prácticamente de inmediato, haremos las aclaraciones necesarias más adelante en este artículo.
Instalación y configuración de automysqlbackup en RHEL y similares
4. Comencemos creando un directorio de trabajo dentro /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
Instalación de AutoMysqlBackup en Rhel y similares
5. El archivo de configuración de automysqlbackup se encuentra dentro de /etc/automysqlbackup con el nombre myserver.conf . Echemos un vistazo a las directivas de configuración más relevantes:
# Nombre de usuario para acceder al servidor MySQL CONFIG_mysql_dump_username='root' # Contraseña CONFIG_mysql_dump_password='SuContraseñaAquí' # Nombre de host (o dirección IP) del servidor MySQL CONFIG_mysql_dump_host='localhost' # Directorio de respaldo CONFIG_backup_dir='/var/backup/db/automysqlbackup' # Lista de bases de datos para copia de seguridad diaria/semanal, por ejemplo ('DB1' 'DB2' 'DB3' ...) # Establezca en (), es decir, vacío, si desea realizar una copia de seguridad de todas las bases de datos CONFIG_db_names=(Agregue los nombres de su base de datos aquí) # Lista de bases de datos para copias de seguridad mensuales. # Establezca en (), es decir, vacío, si desea realizar una copia de seguridad de todas las bases de datos CONFIG_db_month_names=(Agregue los nombres de su base de datos aquí) # ¿Qué día quieres los backups mensuales? (01 al 31) # Si el día elegido es mayor que el último día del mes, se realizará # el último día del mes. # Establezca en 0 para deshabilitar las copias de seguridad mensuales. CONFIG_do_monthly="01" # ¿Qué día quieres las copias de seguridad semanales? (1 al 7, donde 1 es el lunes) # Establezca en 0 para deshabilitar las copias de seguridad semanales. CONFIG_do_weekly="5" # Establecer la rotación de las copias de seguridad diarias. VALOR*24 horas # Si desea conservar solo las copias de seguridad de hoy, puede elegir 1, es decir, se eliminará todo lo que tenga más de 24 horas. CONFIG_rotation_daily=6 # Establezca la rotación para las copias de seguridad semanales. VALOR*24 horas. Un valor de 35 significa 5 semanas. CONFIG_rotation_weekly=35 # Establezca la rotación para las copias de seguridad mensuales. VALOR*24 horas. Un valor de 150 significa 5 meses. CONFIG_rotation_monthly=150 # ¿Incluir la declaración CREATE DATABASE en la copia de seguridad? CONFIG_mysql_dump_create_database='no' # ¿Directorio y archivo de respaldo separados para cada base de datos? (yes o no) CONFIG_mysql_dump_use_separate_dirs='yes' # Elija el tipo de compresión. (gzip o bzip2) CONFIG_mysql_dump_compression='gzip' #¿Qué te gustaría que te enviaran por correo? # - log : envía solo el archivo de registro # - archivos: envía archivos de registro y archivos sql como archivos adjuntos (ver documentos) # - stdout: simplemente mostrará el registro en la pantalla si se ejecuta manualmente. # - quiet : Solo envía registros si ocurre un error en MAILADDR. CONFIG_mailcontent='quiet' # ¿Dirección de correo electrónico a la que enviar el correo? ( Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. ) CONFIG_mail_address='root' # ¿Desea cifrar sus copias de seguridad utilizando openssl? #CONFIG_encrypt='no' # Elija una contraseña para cifrar las copias de seguridad. #CONFIG_encrypt_password='contraseña0123' # Comando a ejecutar antes de las copias de seguridad (quitar el comentario para usar) #CONFIG_prebackup="/etc/mysql-backup-pre" # Comando que se ejecuta después de las copias de seguridad (descomenta para usar) #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é listo, continúe y ejecute el programa, pasando el archivo de configuración como argumento:
# automysqlbackup /etc/automysqlbackup/myserver.conf
Configurar Automysqlbackup en RHEL y similares
Una inspección rápida del directorio diario mostrará que automysqlbackup se ha ejecutado correctamente:
# pwd # ls -lR daily
Copia de seguridad diaria de la base de datos MySQL
Por supuesto, puede agregar una entrada crontab para ejecutar automysqlbackup en el momento 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:
mysql -u root -p
> DROP DATABASE mariadb_db;
> exit
Vamos a crearla de nuevo y restaurar la copia de seguridad. En el mensaje de MariaDB, escriba:
CREATE DATABASE mariadb_db; exit
Luego localiza:
# cd /var/backup/db/automysqlbackup/diario/mariadb_db # ls
Localizar copia de seguridad de la base de datos MariaDB
Y restaurar la copia de seguridad:
# mysql -u root -p mariadb_db < diario_mariadb_db_2015-09-01_23h19m_martes.sql # mysql -u root -p MariaDB [(ninguno)]> USE mariadb_db; MariaDB [(ninguno)]> SELECT * FROM tabla1;
Restaurar copia de seguridad de MariaDB
Instalación y configuración de autopostgresqlbackup en RHEL y similares
8. Para que autopostgresql funcione sin problemas en RHEL y similares, 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
Por último, editaremos el valor de la configuración del directorio de respaldo a:
BACKUPDIR="/var/backup/db/autopostgresqlbackup"
Después de haber revisado el archivo de configuración de automysqlbackup, configurar esta herramienta es muy fácil (esa parte de la tarea queda en sus manos).
9. En RHEL y similares, a diferencia de Debian y similares, autopostgresqlbackup se ejecuta mejor como usuario del sistema postgres, por lo que para hacerlo debe cambiar a esa cuenta o agregar un trabajo cron a su archivo crontab:
# crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh
Por cierto, es necesario crear el directorio de respaldo y sus permisos y propiedad del grupo deben configurarse recursivamente en 0770 y postgres (nuevamente, esto NO será necesario en 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
Copia de seguridad diaria de la base de datos PostgreSQL
10. Ahora puedes restaurar los archivos cuando sea necesario (recuerda hacerlo como usuario postgres después de recrear la base de datos vacía):
# gunzip -c postgresql_db_nombre-y-fecha.sql.gz | psql postgresql_db
Consideraciones sobre Debian y similares
Como ya hemos comentado anteriormente, no sólo la instalación de estas herramientas en Debian es más sencilla, sino también sus respectivas configuraciones. Encontrarás los archivos de configuración en:
- Copia de seguridad automática de MySQL : /etc/default/automysqlbackup
- Copia de seguridad automática de PostgreSQL : /etc/default/autopostgresqlbackup
Resumen
En este artículo hemos explicado cómo instalar y utilizar automysqlbackup y autopostgresqlbackup (aprender a utilizar el primero le ayudará a dominar también el segundo), dos excelentes herramientas de copia de seguridad de bases de datos que pueden hacer que sus tareas como DBA o administrador/ingeniero de sistemas sean mucho más fáciles.
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 puede resultar útil en ocasiones).
Como nota final, recuerda que los permisos de los archivos de configuración deben estar configurados al mínimo ( 0600 en la mayoría de los casos). Esperamos conocer tu opinión sobre este artículo. No dudes en enviarnos un mensaje mediante el formulario que aparece a continuación.
-
Bases de Datos
- Cómo hacer copias de seguridad y restaurar MySQL/MariaDB y PostgreSQL con las herramientas 'Automysqlbackup' y 'Autopostgresqlbackup'
- La última versión de MySQL es decepcionante, dicen algunos expertos en bases de datos
- Cómo instalar MongoDB en AlmaLinux 9 con ejemplos de uso
- Cómo instalar PostgreSQL 16 en distribuciones basadas en RHEL, AlmaLinux, RockyLinux y Fedora
- Cómo instalar PhpMyAdmin con Apache en sistemas RHEL, Alma Linux, Rocky Linux, Centos y Fedora
- Cómo hacer una copia de seguridad y restaurar una base de datos PostgreSQL en Linux
- Cómo instalar phpPgAdmin y PostgreSQL en CentOS, AlmaLinux, RHEL, RockyLinux y similares
- 20 comandos mysqladmin para la administración de bases de datos MYSQL/MariaDB
- Copiar y restaurar copias de seguridad de MySQL / MariaDB para la administración de bases de datos
- Crear Copias de Seguridad (Backups) de MariaDB o MySQL Automáticas con AutoMySQLBackup
- Grafana, software para análisis y supervisión
- Cómo configurar la replicación MariaDB (Maestro-Esclavo) en CentOS / RHEL y Debian
- Arrancar al inicio MySQL / MariaDB con Linux.
- Conocer que IPs están conectados a MySQL haciendo consultas a la base de datos.
- MariaDB, guía práctica para Administradores Linux