Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 472

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 487

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 494

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 530

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 611

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 728

Strict Standards: Redefining already defined constructor for class wpdb in /home/controlz/public_html/blog/wp-includes/wp-db.php on line 306

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-includes/cache.php on line 103

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/controlz/public_html/blog/wp-includes/cache.php on line 425

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-includes/theme.php on line 623

Strict Standards: Redefining already defined constructor for class WP_Dependencies in /home/controlz/public_html/blog/wp-includes/class.wp-dependencies.php on line 15

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/controlz/public_html/blog/wp-settings.php:472) in /home/controlz/public_html/blog/wp-content/plugins/si-captcha-for-wordpress/si-captcha.php on line 31

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/controlz/public_html/blog/wp-settings.php:472) in /home/controlz/public_html/blog/wp-content/plugins/si-captcha-for-wordpress/si-captcha.php on line 31

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method GoogleSitemapGeneratorLoader::Enable() should not be called statically in /home/controlz/public_html/blog/wp-includes/plugin.php on line 311
Como crear copias de seguridad de una base de datos mysql 5 instalada en un servidor Linux (mysqldump + cron) | formatic.cat

Como crear copias de seguridad de una base de datos mysql 5 instalada en un servidor Linux (mysqldump + cron)

Para hacer copias de seguridad periódicas de una base de datos Mysql, vamos a utlizar el comando mysqldump. Este comando nos muestra en pantalla la consulta con la sql necesaria para crear de nuevo la base de datos con toda la información. Es exactemente igual que si hacemos un exportar bd a fichero desde el phpMyAdmin.

Esta instrucción única con el programador de tareas cron servirán para copiar un fichero con la sql del backup de la base de datos seleccionada a una carpeta determinada.

veamos un ejemplo de como sería la instrucción de mysqldump, suponemos tener una Base de datos llamada “BaseDeDatos”, el usuario para acceder a la base de datos es “USUARIO”, y su contraseña es “ContraseñaSegura” :

mysqldump -uUSUARIO -pContraseñaSegura –opt BaseDeDatos

con esta instrucción se nos mostraria en pantalla la sql, para redicreccionarla a un fichero, será necesario añadirle al final: “> /directorioElegido/ficheroConElBackup.sql ” quedando así:

mysqldump -uUSUARIO -pContraseñaSegura –opt BaseDeDatos > /directorioElegido/ficheroConElBackup.sql

Recordar que si estamos usando Ubuntu será necesario añadir delante del comando la palabra sudo. Tener encuenta que será necesario crear el fichero la primera vez y darle permisos de escritura. otra opción es que la carpeta destino tenga los permisos necesarios. Si necesitaramos copiar varias bases de datos, mysqldump tiene un parámetro -all que copiaría todas las bases de datos, a las que el usuario de mysql tenga acceso, en un solo fichero.

para cambiar los permisos utilizar el comando chmod, ejemplo de utilización:
chmod 777 ficheroOCarpeta
daría escritura lectura a todos los usuarios, ajustar el nivel de seguridad segun nos interese. Una vez probado que este comando nos funciona correctamente y solo falta automatizar esta instrucción para que se ejecute con la periodicidad que queramos. Para ello utilizamos el comando cron. Veamos un ejemplo:

quiero copiar cada dia a las 13:00 el contenido de la base de datos anterior:

cron 0 13 * * * 'sudo mysqldump -uUSUARIO -pContraseñaSegura –opt BaseDeDatos > /directorioElegido/ficheroConElBackup.sql’;

De este modo programamos que a las 13:00 se ejecute el comando mysqldump encargado de hacer la copia de la base de datos. Tener en cuenta que cada día se machaca el fichero que creamos con lo que sólo tenemos una única copia, la del dia anterior. Apartir de aquí se podria hacer un script que guardara todos las copias con la fecha concatenada.

Haciendo pruebas en Xubuntu server , el comando parecia ir, pero no se ejecutaba cuando tocaba. Así que tuvimos que editar manualmente el fichero del crontab, que se encuentra en /etc/crontab

sudo mousepad /etc/crontab

Añadiendo una linea al final, la misma que explicabamos antes. Veamos un ejemplo del fichero:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don’t have to run the `crontab’
# command to install the new version when you edit this file.
# This file also has a username field, that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root run-parts –report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || run-parts –report /etc/cron.daily
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts –report /etc/cron.weekly
52 6 1 * * root test -x /usr/sbin/anacron || run-parts –report /etc/cron.monthly
89 5 13 * * * root sudo mysqldump -uUSUARIO -pContraseñaSegura –opt BaseDeDatos > /directorioElegido/ficheroConElBackup.sql
#

Como se puede ver el primer parametro es el orden de preferencia de ejecuiones poner un numero mas alto. Os quedara todo en una sola linea, aqui en el ejemplo de cae, pero debe estar en la misma linea.

El primer sintoma de este error fue el siguiente. Tratando de recuperar la lista de tareas cron -l  el sistema lanzaba un error

cron: can’t open or create /var/run/crond.pid: Permission denied
administrador@ServerTaller:~$ sudo cron -l
Password:
cron: can’t lock /var/run/crond.pid, otherpid may be 4978: Resource temporarily unavailable

El primero permision denied, se soluciona añadiendo sudo, delante del comando. Pero despues nos da el error cron: can’t lock , que nos impide ver si se ha añadido correctamente nuestra nueva tarea. así es como detectemos el problema y pues busquemos alternativas.

En windows dentro de la carpeta del mysql/bin tambien disponemos del ejecutablre mysqldum.exe, así que seguramente también se podrian hacer algo similar con el programador de tareas de windows y mysql, alquien nos lo cuenta?

Etiquetas: , , , , , , , , , , , , , ,

Deja un comentario

CAPTCHA Image Audio Version
Reload Image