Copiar base de datos MySql sin Backup

Hoy en mi trabajo tuve la necesidad de copiar una base de datos mysql de un servidor a otro sin poder utilizar las funciones de backup y restore, ya que el servidor principal, donde recidía la base de datos se daño, y el sistema operativo no funcionaba…… Pensé que con sólo copiar la carpeta de la base de datos en el directorio de datos de mysql era suficiente. Luego de hacer me fijé que no se mostraban ninguna de las tablas con el motor de almacenamiento InnoDB…. Tras unas horas de búsqueda, descubrí que también tenía que copiar en el directorio de mysql los siguientes archivos:

  • ib_logfile1
  • ibdata1
  • ib_logfile0

Estos son los archivos de datos y logs poseen información sobre la configuración de InnoDB.

Al hacer el reemplazo de la carpeta data se obtiene el siguiente mensaje de error:

ErrorTable ‘performance_schema.session_variables’ doesn’t exist

Ejecutando la siguiente instrucción de línea de comando soluciona este error:

mysql_upgrade -u root -p --force

Luego reiniciar el servicio de mysql:

sudo /bin/systemctl restart  mysqld.service

 

Respaldo automatizado de MySQL con MySQLDump

Generar archivo my.cnf
[client]
user=user
password=secret
routines
databases

Es conveniente cambiar permisos a este archivo con el comano

chmod 600 my.cnf

mysqldump –defaults-extra-file=”my.cnf” database1 database2 database3 > database.sql

 

crontab -e
0 0 * * * mysqldump -u mysqluser -h localhost –routines –all-databases | gzip -9  > alldb.sql.gz > /dev/null

 

Operaciones administrativas basicas de MySQL desde consola

create database database;

GRANT ALL PRIVILEGES ON database.* TO ‘usuario’@’servidor’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;

FLUSH PRIVILEGES ;

mysql –user=usuario –password database < database.sql

mysqldump –opt –password=password –user=usuario database > database.sql

REVOKE GRANT OPTION ON database.* FROM ‘usuario ‘@’localhost’;