Categorías

Entradas recientes

Comentarios recientes


« Mi Experiencia como Ingeniero de Sistemas | Main

Moodle y backups.

By claudio | Noviembre 6, 2009

Hace años que moodle se ha implementado y masificado en muchos colegios y universidades, en lo personal lo utilizo para los cursos que dicto en http://www.hormazabal.cl/e-cursos/. Para que esta herramienta Open Source funcione de buena manera, existen muchos tips dispersos en Internet, uno de los más básicos es correr el cron.php y programarlo con crontab.
Ahora, en un escenario extremo en el que el servidor “murió”, el disco falló y no contamos con RAID1, por accidente se borraron los archivos o base de datos, etc, lo más recomendale es tener backup de la carpeta moodledata, base de datos y los archivos de apache propios de moodle. Para lograr esto realicé unos scripts básicos que consisten en hacer backup de la base de datos MySql todos los días, realizar backups incrementales de moodledata y de los archivos de apache con rsync y mysqldump en un servidor remoto obviamente programado con el crontab. Considerar que el servidor moodle no debe utilizar password en la autenticación del usuario de sistema.
Lo primero, para realizar backup de la base de datos MySql se ejecuta el siguiente script llamado moodle_basedatos.sh:
#!/bin/bash
mysqldump –user=usuario_moodle –password=pass_usuario DB_moodle | gzip -9 >> bd_moodle_`date +%Y-%m-%d_%Hh%Mm`.sql.gz
scp -p bd_moodle_`date +%Y-%m-%d_%Hh%Mm`.sql.gz usuario_remoto@host_remoto:/Directorio

En Donde:
usuario_moodle: es el usuario de la base de datos asociada a moodle.
pass_usuario: password de usuario_moodle.
DB_moodle: Base de datos moodle.
usuario_remoto: usuario de sistema del servidor remoto donde caerán los backups
Directorio: Directorio de host remoto de backup.

La línea de mysqldump realiza una backup de la base de datos y la comprime con gzip y se le da el nombre de bd_moodle_ más la fecha.
La línea siguiente envía el backup mencionado al host_remoto con el usuario de sistema definido.

Ahora se realizará el backup de moodledata (donde se guardan los apuntes, fotos, tareas que se suben a moodle), de manera incremental de Lunes a Sábado y el Domingo se realizará respaldo completo. En el mismo script se respaldará la carpeta de archivos propios de moodle que “miran” a Internet por Apache. Se asume que en equipo donde llegan los backups, estos van a dar en /home/moodle y que los archivos moodledata están en /var/www/ y los archivos de moodle en /var/www/html/moodle. Se dejarán logs en la carpeta logs donde están los scripts del servdidor moodle.

Script para backup incremental:
#!/bin/bash
rsync -avvb –delete –backup-dir=/home/moodle/incremental_rsync/backup_$(date +%y%m%d) /var/www/moodledata usuario_de_sistema_remoto@host_backup:/home/moodle >> ./logs/mdata_$(date +%y%m%d).log
rsync -avvb –delete –backup-dir=/home/moodle/incremental_rsync/backup_$(date +%y%m%d) /var/www/html/moodle usuario_de_sistema_remoto@host_backup:/home/moodle/www >> ./logs/www_$(date +%y%m%d).log

Este Scritp es para respaldos incrementales que mi caso serán de Lunes a Sábado y se llama moodle_data_www_incremental.sh. Revisar los logs para ver resultados y considerar que al final hay un resumen.

Script para backup full:
#!/bin/bash
rsync -agE /var/www/moodledata usuario_de_sistema_remoto@host_backup:/home/moodle
rsync -agE /var/www/html/moodle usuario_de_sistema_remoto@host_backup:/home/moodle/www

Este Script es para respaldos full que se programarán los Domingos. Se dejaron los scripts en /root/respaldos.
Ahora la programación se realizará por crontab, para ello editarlo con crontab -l y agregar:

00 04 * * * root cd /root/respaldos ; sh moodle_basedatos.sh
30 04 * * 0 root cd /root/respaldos ; sh moodle_data_www_full.sh
30 04 * * 1-6 root cd /root/respaldos ; sh moodle_data_www_incremental.sh

Con esto los respaldos de la base de datos de moodle se ejecutará todos los días a las 4 AM. Luego el respaldo full los Domingos a las 4:30AM y los incrementales(moodledata y los archivos de apache) de Lunes a Sábado a las 4AM.

Observación: Si al restaurar alguna base de datos, esta es demasiado grande como para procesarla por consola o con phpmyadmin, existe una alternativa en http://www.ozerov.de/bigdump.php la cual divide al dump y lo restaura en partes. No olvidar crear el nombre de la base de datos, el usuario/password y los privilegios en caso de ser necesario.

Dato: Exámen con Scorm y ExeLearning.

Atte., Claudio Hormazábal Ocampo claudio@hormazabal.cl

Topics: General |

Comments

You must be logged in to post a comment.