{"id":4870,"date":"2013-05-29T19:58:52","date_gmt":"2013-05-29T17:58:52","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=4870"},"modified":"2013-05-29T20:21:32","modified_gmt":"2013-05-29T18:21:32","slug":"restaurar-una-base-de-datos-mysql-en-modo-de-rescate","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/restaurar-una-base-de-datos-mysql-en-modo-de-rescate\/","title":{"rendered":"Restaurar una base de datos MySQL en modo de rescate"},"content":{"rendered":"<p>Si no dispones de un backup de la base de datos Mysql en formato .sql o dump, y posees en cambio los ficheros que se encuentran en la carpeta:<\/p>\n<p>carpeta\/var\/lib\/mysql\/data\/NOMBRE_BASE_DE_DATOS<\/p>\n<p>Ejemplo:\u00a0\u00a0\/var\/lib\/mysql<\/p>\n<p>En esa carpeta tendremos unos ficheros por cada tabla de la base:<\/p>\n<p>&#8211; mitabla.frm \u00a0que es el fichero con la definici\u00f3n de la tabla<\/p>\n<p>&#8211; mitabla.MYD (extensi\u00f3n en MAY\u00daSCULAS) que es donde est\u00e1n los datos de la tabla<\/p>\n<p>&#8211; mitabla.MYI (extensi\u00f3n en MAY\u00daSCULAS) donde se almacenan los \u00edndices de la tabla<\/p>\n<p>Los pasos para restaurar son los siguientes:<\/p>\n<p><!--more--><\/p>\n<ol>\n<li>Creamos desde p.e. phpMyAdmin una base de datos que contendr\u00e1 las tablas (servidor destino).<\/li>\n<li>Copiamos los ficheros anteriores dentro de la carpeta \/var\/lib\/mysql\/data\/nombreBD<\/li>\n<li>Cambiamos de cada uno de los ficheros el usuario a \u201c<strong>mysql \u2013 MySQL Server<\/strong>\u201d en este caso y al grupo \u201c<strong>mysql<\/strong>\u201d, ambos con los permisos de Lectura y Escritura. Otros no tendr\u00e1n ning\u00fan permiso sobre estos tres ficheros.<\/li>\n<\/ol>\n<p>Con lo anterior deber\u00eda funcionar. Uno de los errores que t\u00edpicos es que a la hora de copiar los ficheros de extensi\u00f3n .frm, .MYD y .MYI se cambiaban \u00a0a min\u00fasculas las extensiones por lo que cuando desde phpMyAdmin intentaba leer estas tablas obten\u00eda el siguiente error:<\/p>\n<p><em>#1017 \u2013 Can\u2019t find file: mitabla\u00a0(errno: 2)<\/em><\/p>\n<p>Que decir que tendremos que enviar esta informaci\u00f3n mediante ftp desde el servidor rescue hacia otro. (Puede ser local montando un filezilla server)<\/p>\n<p>Para que el servidor ftp, funcione es necesario, desactivar el cortafuegos local, entrar en el router, dirigir la IP publica hacia la local y los puertos 21, activar zona DMZ en dicha ip local. (en funci\u00f3n del router).<\/p>\n<p><strong>Otra posibilidad, 2\u00a0<\/strong><b>Alternativa<\/b><\/p>\n<p>Para hacer un backup de una base de datos en modo rescue, debe seguir estos pasos:<\/p>\n<p>&#8211; Montar las particiones \/ y \/home<\/p>\n<div>\n<div>C\u00f3digo:<\/div>\n<pre># mount \/dev\/sda1 \/mnt\/\r\n# mount \/dev\/sda2 \/mnt\/home<\/pre>\n<\/div>\n<p>Montar los directorios \/proc y \/dev para poder ejecutar comandos del sistema<\/p>\n<div>\n<div>C\u00f3digo:<\/div>\n<pre># mount -o bind \/proc\/ \/mnt\/proc\/\r\n# mount -o bind \/dev \/mnt\/dev<\/pre>\n<\/div>\n<p>Hacer chroot sobre \/mnt para empezar a trabajar como root en nuestras particiones<\/p>\n<div>\n<div>C\u00f3digo:<\/div>\n<pre># chroot \/mnt<\/pre>\n<\/div>\n<p>Arrancamos el motor MySQL en modo seguro con el comando:<\/p>\n<div>\n<div>C\u00f3digo:<\/div>\n<pre>@ mysqld_safe --skip-grant-tables --skip-networking &amp;<\/pre>\n<\/div>\n<p>Entramos a MySQL con el comando:<\/p>\n<div>\n<div>C\u00f3digo:<\/div>\n<pre>@ mysql<\/pre>\n<\/div>\n<p>Miramos nuestras bases de datos con el comando:<\/p>\n<div>\n<div>C\u00f3digo:<\/div>\n<pre>mysql&gt; show databases;<\/pre>\n<\/div>\n<p>Y salimos:<\/p>\n<div>\n<div>C\u00f3digo:<\/div>\n<pre>mysql&gt; exit<\/pre>\n<\/div>\n<p>Ejecutamos el dump con el comando:<\/p>\n<div>\n<div>C\u00f3digo:<\/div>\n<pre>@ mysqldump test &gt; test.sql<\/pre>\n<\/div>\n<p>Y ya tendremos nuestro backup sql que habr\u00e1 que sacar del servidor antes de reinstalar.<\/p>\n<p>&nbsp;<\/p>\n<p>Para subir los ficheros podemos emplear este script.<\/p>\n<p>#!\/bin\/bash<\/p>\n<p><tt>FTP_HOST='xxx.xxx.xxx.xxx'<\/tt><br \/>\n<tt>FTP_LOGIN='miservidor.net'<\/tt><br \/>\n<tt>FTP_PASS='******'<\/tt><\/p>\n<p><tt>ftp -in &lt;&lt; EOF<\/tt><br \/>\n<tt>open ${FTP_HOST}<\/tt><br \/>\n<tt>user ${FTP_LOGIN} ${FTP_PASS}<\/tt><br \/>\n<tt>bin<\/tt><br \/>\n<tt>verbose<\/tt><br \/>\n<tt>prompt<\/tt><br \/>\n<tt>put $1<\/tt><br \/>\n<tt>bye<\/tt><br \/>\n<tt>EOF<\/tt><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si no dispones de un backup de la base de datos Mysql en formato .sql o dump, y posees en cambio los ficheros que se encuentran en la carpeta: carpeta\/var\/lib\/mysql\/data\/NOMBRE_BASE_DE_DATOS Ejemplo:\u00a0\u00a0\/var\/lib\/mysql En esa carpeta tendremos unos ficheros por cada tabla de la base: &#8211; mitabla.frm \u00a0que es el fichero con la definici\u00f3n de la tabla &#8211; mitabla.MYD (extensi\u00f3n en MAY\u00daSCULAS) que es donde est\u00e1n los datos de la tabla &#8211; mitabla.MYI (extensi\u00f3n en MAY\u00daSCULAS) donde se almacenan los \u00edndices de la tabla Los pasos para restaurar son los siguientes:<\/p>\n","protected":false},"author":1,"featured_media":4871,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40],"tags":[37],"class_list":["post-4870","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bases-de-datos","tag-mysql"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/4870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=4870"}],"version-history":[{"count":4,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/4870\/revisions"}],"predecessor-version":[{"id":4876,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/4870\/revisions\/4876"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/4871"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=4870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=4870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=4870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}