Saltar al contenido

¿Cómo restaurar la base de datos mysql usando archivos en la carpeta de datos?

Solución:

Restauración de archivos MySQL InnoDB en Windows

Los archivos de tipo InnoDB fueron una tarea más difícil, y es por eso que estoy escribiendo este artículo. Me costó mucho descubrir cómo hacerlo, pero reuní suficiente información para realizar la tarea. Ahora, en un esfuerzo por retribuir, explicaré exactamente lo que hice para restaurarlo.

En nuestras copias de seguridad teníamos los siguientes archivos:

MySQLMySQL Server 4.1dataibdata1
MySQLMySQL Server 4.1dataib_logfile0
MySQLMySQL Server 4.1dataib_logfile1

Además, en la carpeta de datos había una carpeta con el nombre de la base de datos que estaba restaurando que contenía *.frm archivostable_name.frm).

Hice la restauración en mi máquina de desarrollo en lugar del servidor real porque no quería estropear lo que estaba funcionando en el servidor. Ya tenía MySQL instalado desde una instalación de XAMPP. (Mi caja de desarrollo ejecuta Windows XP SP2). XAMPP instala MySQL de manera un poco diferente a la instalación regular de MySQL, por lo que si ayuda a seguir lo que hice aquí, es posible que desee instalarlo.

Primero detuve mi servicio MySQL usando el panel de control de XAMPP.

Moví los archivos enumerados arriba (ib* archivos y la carpeta que contiene el *.frm archivos) a la carpeta de datos MySQL local (C:Program Filesxamppmysqldata).

Luego edité my.cnf (situado en C:Program Filesxamppmysqlbin) e hice los siguientes cambios (comenzando en la línea 66 para mí):

VIEJO:

skip-innodb
#innodb_data_home_dir = C:/Program Files/xampp/mysql/data/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = C:/Program Files/xampp/mysql/data/
#innodb_log_arch_dir = C:/Program Files/xampp/mysql/data/
#set-variable = innodb_buffer_pool_size=16M
#set-variable = innodb_additional_mem_pool_size=2M
#set-variable = innodb_log_file_size=5M
#set-variable = innodb_log_buffer_size=8M
#innodb_flush_log_at_trx_commit=1
#set-variable = innodb_lock_wait_timeout=5

NUEVO:

#skip-innodb
innodb_data_home_dir = C:/Program Files/xampp/mysql/data/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = C:/Program Files/xampp/mysql/data/
innodb_log_arch_dir = C:/Program Files/xampp/mysql/data/
set-variable = innodb_buffer_pool_size=16M
set-variable = innodb_additional_mem_pool_size=2M
set-variable = innodb_log_file_size=170M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
set-variable = innodb_lock_wait_timeout=50

(Tuve que configurar innodb_log_file_size al tamaño real de mi archivo de registro)

Luego edité el archivo por lotes XAMPP que inicia el servicio mysql (C:Program Filesxamppmysql_start.bat). yo añadí
–innodb_force_recovery=6 hasta el final de la llamada a mysqld. Entonces, la línea 8 de ese archivo ahora lee:

mysqlbinmysqld –defaults-file=mysqlbinmy.cnf –standalone –console –innodb_force_recovery=6

¡Esto funcionó! Mis bases de datos se recuperaron en mi máquina. Usé SQLyog para hacer un volcado sql de la base de datos para restaurarla en nuestro servidor de producción.

Fuente


Recursos adicionales

  • Forzar la recuperación de InnoDB

  • Modos de recuperación InnoDB

  • InnoDB corrupto: inicie mysqld solo innodb_force_recovery = 6

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *