miércoles, 18 de septiembre de 2019

Restore Base de Datos "Pesadas" en MySQL

Bueno... después de algunos años se me dió por escribir algo nuevamente; esta vez de la restauración de datos de MySQL.

Estuve luchando con la restauración de un dump SQL (de unos 13Gb aprox.) de una BDD MySQL 5.x, para lograr realizarlo en un tiempo razonable... Digo en un tiempo razonable, porque este restore me llevaba más de 1 día... algo que no era aceptable bajo ningún concepto para el negocio.

Empecé a ver comentarios por todos lados, pero nada me daba resultado, probé herramientas de terceros... pero tampoco era lo que estaba buscando... yo pretendía que usando mysql desde línea de comandos con el dump como entrada, con los parámetros indicados, pudiera hacer ese restore en no más de 2 o 3 horas...

Hasta que dí con lo siguiente, un script que tiene la paramétrización indicada para llegar al objetivo... y lo dejo por acá...


 #!/bin/sh

  # Guarda fecha de inicio
  inicio=`date`

  echo "Inicio restore: OK"
  # Ruta completa del dump de la base de datos a restaurar
  dumpfile="/home/backups/nombre_del_dump_a_restaurar.sql"

  ddl="set names utf8; "
  ddl="$ddl set global net_buffer_length=1000000;"
  ddl="$ddl set global max_allowed_packet=1000000000; "
  ddl="$ddl SET foreign_key_checks = 0; "
  ddl="$ddl SET UNIQUE_CHECKS = 0; "
  ddl="$ddl SET AUTOCOMMIT = 0; "
  # Si el archivo de dump no crea la base de datos, en la linea a continuación especificar la base de datos destino luego del USE
  ddl="$ddl USE facturaelectronicaweb_prueba2; "
  ddl="$ddl source $dumpfile; "
  ddl="$ddl SET foreign_key_checks = 1; "
  ddl="$ddl SET UNIQUE_CHECKS = 1; "
  ddl="$ddl SET AUTOCOMMIT = 1; "
  ddl="$ddl COMMIT ; "

# Setear contraseña
passw=contraseña_del_usuario_para_realizar_restore

  time mysql -h 127.0.0.1 -u root -p$passw -e "$ddl" &
  wait

  # Guarda fecha de fin
  fin=`date`

  echo "Inicio restore: $inicio"
  echo "Fin restore: $fin"


Espero que sea de utilidad y que bajen los tiempos de esos restore!
Cualquier sugerencia o modificación es muy bienvenida!
ÉXITOS!!!