* Primer método: parar el servidor y copiar o restaurar los ficheros, que están
en el directorio de datos (normalmente en ‘/var/lib/mysql/’). Para obtener
dicho directorio:

SHOW VARIABLES LIKE ‘datadir’;

En tablas de tipo MyISAM estos ficheros están en una carpeta con el nombre de
la base de datos, tienen el mismo nombre que las tablas y extensiones ‘*.frm’
(formato), ‘*.myd’ (datos), y ‘*.myi’ (índices).

En tablas de tipo InnoDB se encuentran ficheros con los nombres de las tablas
y extensión ‘*.frm’ en la carpeta de la base de datos, y en el directorio
principal de datos existen varios ficheros de datos con nombre ‘ibdata1’,
‘ibdata2’, … que comparten todas las bases de datos InnoDB del servidor, y
también los ficheros de “logs” de InnoDB: ‘ib_logfile0’, ‘ib_logfile1’, …

(Aviso: si los ficheros InnoDB vamos a copiarlos de un ordenador a otro, debe
cumplirse:
(1) que las bases de datos y tablas tengan nombres en minúsculas;
(2) que ambos ordenadores utilicen aritmética entera de complemento a dos; y
(3) que si hay tablas con columnas de tipo numero real, ambos ordenadores
utilicen el formato de números reales especificado por la IEEE.)

Ejemplos de realización de copias de seguridad: (1) con tar, (2) con zip, (3)
con rsync, (4) con cp, (5) con cp sólo bbdd world, (6) con cp sólo tabla City.

mysqladmin -u root -p shutdown

(1) sudo tar czf /tmp/mysql-backup.tar.gz /var/lib/mysql/
(2) sudo zip -r /tmp/mysql-backup.zip /var/lib/mysql/
(3) sudo rsync -r /var/lib/mysql/ /tmp/mysql-backup
(4) sudo cp -r /var/lib/mysql/ /tmp/mysql-backup
(5) sudo cp -r /var/lib/mysql/world/ /tmp/mysql-backup
(6) sudo cp -r /var/lib/mysql/world/City.* /tmp/mysql-backup

sudo /etc/init.d/mysql start

Ejemplos de restauración de las copias (vigilad con los permisos y con que el
propietario de los ficheros siga siendo ‘mysql’):

sudo /etc/init.d/mysql stop

sudo cp -r /otro_directorio/ /var/lib/mysql/
sudo chown -R mysql.mysql /var/lib/mysql/

sudo /etc/init.d/mysql start

* Segundo método: mediante el script ‘mysqlhotcopy’. Sólo sirve para tablas
MyISAM, pero es rápido y no hace falta parar el servidor ya que el script
bloquea las tablas. Se ejecuta localmente en el servidor.

Ejemplos de realización de copias de seguridad:

sudo mysqlhotcopy world /otro_directorio -u root -p contraseña

Ejemplos de restauración de las copias (vigilad con los permisos y con que el
propietario de los ficheros siga siendo ‘mysql’):

sudo /etc/init.d/mysql stop

sudo cp -r /otro_directorio/ /var/lib/mysql/
sudo chown -R mysql.mysql /var/lib/mysql/

sudo /etc/init.d/mysql start

* Tercer método: mediante el comando ‘mysqldump’. Es menos rápido, pero sirve
para todo tipo de tablas. El fichero que genera no contiene los datos, sino
instrucciones SQL que generan las tablas y les insertan los datos, por lo que
también nos sirve para migrar las bases de datos de MySQL a otro gestor. Se
puede ejecutar de forma local y remota, y los ficheros quedan en el servidor.

Ejemplos de realización de copias de seguridad:

mysqldump -u root -p world > world.sql
mysqldump -u root -p world Country City > pais_i_ciutat.sql
mysqldump -u root -p –xml world > world.xml
mysqldump -u root -p –tab=/tmp world
mysqldump -u root -p –all-databases > backup.sql
mysqldump -u root -p –opt world | mysql -h 192.168.0.110 -u root -pcontraseña mundo
mysqldump -u root -p –no-data world | mysql -h 192.168.0.110 -u root -pcontraseña mundo

Ejemplos de restauración de las copias:

mysql world -u root -p < world.sql

* Cuarto método: las sentencias SQL ‘BACKUP TABLE’ y ‘RESTORE TABLE’, que no
explicaré porque han quedado obsoletas.

* Para restaurar los cambios en la base de datos que se produjeron después de
la copia de seguridad debemos obtener dichos cambios de los ficheros de “logs”:

– Miramos cuales son posteriores a la fecha de la copia de seguridad:

ls -l /var/log/mysql


-rw-rw—- 1 mysql adm 11949 2007-02-04 09:23 mysql-bin.000102
-rw-rw—- 1 mysql adm 117 2007-02-04 13:46 mysql-bin.000103
-rw-rw—- 1 mysql adm 11906 2007-02-04 13:48 mysql-bin.000104

– Si queremos asegurarnos comprobando su contenido:

mysqlbinlog /var/log/mysql/mysql-bin.000102 | less

– Los restauramos ordenadamente:

mysqlbinlog /var/log/mysql/mysql-bin.000102 | mysql -u root -p
mysqlbinlog /var/log/mysql/mysql-bin.000103 | mysql -u root -p
mysqlbinlog /var/log/mysql/mysql-bin.000104 | mysql -u root -p

* Relacionado con el tema de las copias de seguridad, podemos comprimir las
tablas MyISAM que ya no se actualizan para que ocupen mucho menos espacio.
Comprimidas con la utilidad ‘myisampack’ todavía se pueden consultar aunque
no se pueden actualizar hasta que se descomprimen de nuevo con ‘myisamchk’.

myisampack /var/lib/mysql/world/City.MYI
myisamchk –recover –quick /var/lib/mysql/world/City.MYI

Para descomprimirlas:

myisamchk –unpack /var/lib/mysql/world/City.MYI

Para consultar si estaban comprimidas:

shell> mysql world -u root -p -e “SHOW TABLE STATUS LIKE ‘City'”

* Lecturas para profundizar:
– http://dev.mysql.com/doc/refman/5.0/es/disaster-prevention.html
– http://dev.mysql.com/doc/refman/5.0/es/mysqlhotcopy.html
– http://dev.mysql.com/doc/refman/5.0/es/mysqldump.html
– http://dev.mysql.com/doc/refman/5.0/es/mysqlbinlog.html
– http://dev.mysql.com/doc/refman/5.0/es/myisampack.html

Es fácil tener un empleo desde casa? Hay una gran cantidad de información sobre el como tener un empleo desde casa en Internet, y hoy en día con un poco de estudio y perseverancia, casi c...
Como ser más productivo en el teletrabajo Trabajar desde casa… el sueño de realizar tu trabajo desde la comodidad de tu salón, con tu chándal favorito puesto, y haciendo los últimos preparativ...
La penetración de los smartphones en España alcanza el 44% Los smartphones han llegado a España para quedarse, y un estudio que acaba de publicar Google no hace más que confirmarlo. Según los datos recogidos p...
mysqli affected rows mysqli_affected_rows, mysqli->affected_rows — Obtiene el número de filas afectadas en una operación de MySQL previa Descripción Estilo por p...
Quien Domina los .com domina internet, y ya los empezaron a cerrar Las autoridades de Estados Unidos cierran un website de apuestas canadiense por infringir leyes norteamericanas gracias a su control de Verisgn. En...
Firefox 8 beta repotenciado con twitter como buscador Mozilla ha lanzado una nueva versión beta de Firefox, el segundo navegador más utilizado del mercado (al menos por el momento, ya que Google Chrome es...
7% de los amigos de Facebook son completos extraños La palabra “amigo” adquiere una nueva dimensión en redes sociales como Facebook. Dentro de esa categoría figuran desconocidos, personas que sólo se ha...
Chrome 12 final supuestamente tiene mas seguridad y mejores gráficos El equipo de desarrollo del navegador de Google ha liberado recientemente Chrome 12, la última versión final del que ya se ha convertido en uno de los...
Ya está aquí Windows 8 Durante la celebración del Mobile World Congress que actualmente tiene lugar en Barcelona acaba de ser presentado el nuevo Windows 8. Steven Sinofs...
La descarga de apps se disparó un 125% el día de Navidad La popularización de los teléfonos inteligentes no ha supuesto únicamente que se dispare el envío de mensajes y felicitaciones a través de programas d...