Copias de seguridad automatizada por medio de contenedor de los gestores de bases de datos MariaDB y PostgreSQL
- Instalando bkpxdb via curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/install.sh)"
- Instalando bkpxdb via wget
sh -c "$(wget https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/install.sh -O -)"
mkdir -p bkpxdb bkpxdb/src/list bkpxdb/logs/app bkpxdb/logs/cron
Cambiarse al directorio bkpxdb
cd bkpxdb
- db_list.csv
wget -nc -O "src/list/db_list.csv" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/src/list/db_list.csv.example
- bkpxdb-cron
wget -nc -O "data/config/bkpxdb-cron" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/src/cront.example
- crontab
wget -nc -O "src/crontab" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/src/crontab.example
- .conf
wget -nc -O "src/.conf" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/src/.conf.example
- docker-compose.yml
wget -O "docker-compose.yml" https://raw.githubusercontent.com/GorillaTi/bkpxdb/refs/heads/main/docker-compose.yml
Estructura de directorios y archivos
bkpxdb
├── data
│ └── config
│ └── bkpxdb-cron
├── docker-compose.yml
├── logs
│ ├── app
│ └── cron
└── src
├── .conf
├── crontab
└── list
├── db_list.csv
└── db.lst
Para visualizar use el comando
tree -a
docker compose up -d
- Con el contenedor en ejecución
docker exec -it bkpxdb chown root:root /etc/cron.d/bkpxdb-cron
- Sin el contenedor en ejecución
sudo chown root:root /data/config/bkpxdb-cron
vim src/list/db_list.csv
Ejemplo:
sysadmin;$Sistemas.123;172.16.20.20;3303;sysadmin;mysql
pgadmin;$Password.123;172.16.20.21;5433;sysadmin;pg
Es un archivo csv separado por comas con la siguiente estructura
sysadmin;$Sistemas.123;172.16.20.20;3303;sysadmin;mysql
│ │ │ │ │ │
│ │ │ │ │ │__ Tipo DB (mysql,mdb,pg)
│ │ │ │ │__________ Usuario
│ │ | │________________ Puerto
│ │ │________________________ IP Servidor
│ │_______________________________________ Contraseña
│________________________________________________ Usuario
docker exec -it bkpxdb vim crontab/crontab
Ejemplo:
# Copias de seguridad programadas
# Todos los días a las 23:30
30 23 * * * root /app/scripts/backup.sh
# Todos los días a las 13:30
30 13 * * * root /app/scripts/backup.sh
# Todos los días a las 19:30
30 19 * * * root /app/scripts/backup.sh
# Pruebas de funcionamiento de cron
* * * * * root date >> /var/log/cron/cron.log 2>&1
* * * * * root /app/scripts/cron-test.sh
*/10 * * * * root truncate -s 0 /var/log/cron/cron*.log
# New line charter required!
* * * * * NOMBRE_USUARIO COMANDO/SCRIPT-A-EJECUTAR
│ │ │ │ │ │ │____ Comando a ejecutar
│ │ │ │ │ │___________________ Usuario que ejecutara el job
│ │ │ │ │_____________________ Día de la semana (0 – 6) (0 es domingo, o utilice nombres)
│ │ | │_______________________ Mes (1 – 12),* significa cada mes
│ │ │_________________________ Día del mes (1 – 31),* significa cada día
│ │___________________________ Hora (0 – 23),* significa cada hora
│_____________________________ Minuto (0 – 59),* significa cada minuto
Situarse en el directorio dkpxdb
y ejecutar el comando
docker exec -it bkpxdb cron-config
docker exec -it bkpxdb /app/scripts/backup.sh
- Envió de los archivos
logs
por medio de correo electrónico. - Copia automatizada de los archivos de copia de seguridad a un dispositivo de almacenamiento de red.
tail -f logs/app/error.log
Archivos de Logs:
- logs/app/error.log
- logs/app/info.log
- logs/app/warning.log
- logs/cron/cron-test.log
- logs/cron/cron.log