Cómo subir bases de datos MySQL grandes a un nuevo servidor

by Andrés Borbón on 19 February, 2009

in Blogueradas, Geek, Sorprendente, TecnoCulto

mysql_logo

Un pequeño truco que aprendí en mis recientes andanzas, penas y desconsuelos con los servidores, es que subir una base de datos a un nuevo servidor es la cosa más sencilla del mundo… si tiene menos de 2 megas de tamaño, pero cuando esto no es así, las cosas comienzan a ponerse color de hormiga.

La base de datos de tecnoculto, depurada de tablas que no vienen al caso, tiene cerca de 40 megas sin comprimir (SQL). Por lo tanto, los métodos habituales de importación son imposibles.

La vez pasada que me cambié de servidor, como no tenía la menor idea, simplemente fui copiando y pegando texto en el cuadro de SQL de PHPMyAdmin, con lo cual el proceso me llevó unas 4 horas, aproximadamente. OJO: Si van a utilizar este método, copien los trozos de texto hasta un punto y coma. Siempre debe haber un “;” al final del texto que pegan en el cuadro de SQL de PHPMyAdmin, ¿eh? Si no, les va a devolver errores. Y tal punto y coma, por supuesto, debe corresponder al final de una línea de la base de datos, Ooobviamente.

Bueno, pero antes de subir la base de datos hay que bajarla del antiguo servidor, ¿no?

He aquí un pequeño tutorial:

Paso número 1:

Loguéense en su base de datos mediante PHPMyAdmin y opriman el botón de arriba que dice “Export” o “Exportar”

Paso número 2:

Elijan del cuadro pertinente las tablas que deseen exportar (por defecto vienen señaladas todas y si no saben de qué se trata, déjenlo así). Y asegúrense de que la casilla de SQL se encuentra marcada

Paso número 3:

En SQL Options (Opciones), asegúrense de que lo siguiente (y nada más) se encuentra seleccionado (pongo el texto en inglés y en español):

  • Structure (Estructura)
  • Add DROP TABLE (Añada DROP TABLE)
  • Add AUTO_INCREMENT value (Añadir el valor AUTO_INCREMENT)
  • Enclose table and filed names with Backquotes (Usar “backquotes” con tablas y nombres de campo)
  • Data (Datos)
  • Complete INSERTS (Completar los INSERTS)
  • Use hexadecimal for binary fields (Use hexadecimal para BLOB)

Activen el cuadro de “Save as file” o “Enviar (genera un archivo descargable)” en español y elijan si quieren descargar la tabla con compresión o sin compresión.

Dénle click a “Go” (“Continuar” en español) y bajen el archivo al disco duro de su computadora.

Bigdump

Descarguen el programa Bigdump de esta dirección

Descompriman Bigdump y ábranlo con el bloc de notas. Busquen las opciones que siguen:

$db_server   = ”; Entre las comillas (son comillas simples) hay que poner el nombre del servidor de la base de datos (la nueva)
$db_name     = ”; El nombre de la base de datos
$db_username = ”; El nombre del usuario
$db_password = ”; El password del usuario

$filename         = ”; Este es el nombre del archivo de su base de datos vieja (la que acaban de descargar (y descomprimir, en su caso). No olviden poner la extensión “.sql” al final.

IMPORTANTE:

Un poco más abajo, busquen esta opción:

$db_connection_charset = ”; pongan utf8 entre las comillas, o su blog tendrá signos extraños en palabras acentuadas, las que tienen ñ, ¿, ¡ y cosas por el estilo

Salven el archivo y ciérrenlo

Upload

Suban bigdump.php y el archivo de la base de datos al mismo directorio en su nuevo blog

Final

Dirijan su navegador (Firefox, IE, Opera o lo que usen) hacia el archivo bigdump.

Ejemplo:

Escribir en la barra de direcciones (si subieron ambos archivos a la carpeta “blog”):

http://www.ejemplo.com/blog/bigdump.php

Denle click a Start Import

¡Listo! Verán cómo bigdump hace su trabajo en unos cuantos minutos. Tiene un cuadro de diálogo que marca el progreso e indica el trabajo restante en varias formas.

A veces parece “atorarse”, pero no se desesperen. Puede haber un lapso de inactividad de 2 ó 3 minutos. No interrumpan el proceso a menos que supere los 10 minutos, por ejemplo. No sé por qué sucede esto, pero en mi caso bigdump se detuvo cuando le faltaba sólo el 2% y estuvo casi inmóvil por casi 4 minutos.

MUY IMPORTANTE: Después de la importación exitosa (pueden repetir el proceso si no funcionó la primera vez) deben borrar tanto el archivo bigdump.php como la base de datos que subieron, pues contiene información confidencial sobre su base de datos y alguien podría hacer mal uso de ella.

Ojalá sea de utilidad para alguien.

 
Suscríbete por: Email | RSS | Twitter     

{ 2 trackbacks }

Cómo subir bases de datos MySQL grandes a un nuevo servidor - DbRunas
23 February, 2009 at 11:22 am
Anonymous
10 June, 2009 at 9:04 am

{ 25 comments }

1 Javier 21 February, 2009 at 10:48 am

interesante entrada; un truco que sin duda puede venir muy bien en alguna ocasión.

2 Isaac 21 February, 2009 at 12:15 pm

Charros. en mis comienzos. estos temas eran totalmente desconocidos. ahora que lo leo, me doy cuenta que alguien que no se dedica a la developeada ya lo puede hacer…. OJO. tiene que ser autodidacta y emprendedor. por asi decirlo. llevo ya unos meses chequeando este blog y jamas….leanlo bien jamas le habian posteado algo relacionado con terminal PHP, ni MYSQL. me doy cuenta que este Andres, es una celebridad en mi vida, en realidad me sorprendes. Gran parte de mis dias es programar visitar oppensource, fourge, y mis librerias. si me gustaria que sigas post about php mysql. es lo mejor de los mejores LAMP, es la neta GRACIAS por tu post desde MEXICO D.F

3 Yamilskate 23 February, 2009 at 5:38 pm

Hola amigo, comento para agradecerte, no sabes por cuanto tiempo batalle para subir enormes bases de datos teniendo muhos errores en tiempos de espera, recortar bases de datos, todo un proceso largo y tedioso se resuelve con este simple archivo.

Excelente!

4 Andrés Borbón 25 February, 2009 at 2:42 am

Yamilskate :

Nada qué agradecer. Me alegra que te haya sido de utilidad.

5 alberto 7 March, 2009 at 6:06 pm

necesito ayuda urgente, mi disco duro en el cual tenia mi base de datos se daño, trate de salvarlo pero no se pudo, asi que decidi extraer los datos con un programa asi que solo obtuve los archivos de mi base de datos, pero ahora que ya heche a andar de nuevo el servidor con un disco duro nuevo no encuentro como aplicar los archivos para que mi base de datos vuelva a funcionar como antes, tengo toda la carpeta en donde estaba instalado sql server, que se encuentra en c:\archivos de programas\microsoft sql server\data, estoy pidiendo ayuda para resolver este frustante problema, si me pudieran ayudar les agradeceria un 1000

6 Diego 26 March, 2009 at 9:31 pm

Estimado. Con mysqlFront puede sincronizar, exportar e importar bases y tablas de gran tamaño sin problemas. Nosotros trabajamos en nuestra base con màs de 30 gbs de info y se encuentra constantemente en producciòn con cientos de usuarios online al mismo tiempo. Para ello programamos en algùn lenguaje, puede php o asp, en loop controlado, queries que van descargando tablas registro por registro a una tasa de copia que manejamos en los paràmetros del query y del refresh, De esta manera tenemos varias copias de nuestras bases en los servidores de producciòn y otras en los servidores experimentales, donde innovamos para que la performance de la base sea eficiente y estable. Saludos. Diego.

7 JoseLuis 2 April, 2009 at 11:02 am

Gran herramienta amigo, de verdad que un lujazo subir las bds con esta herramienta.

Gracias por el manual y por el php, un saludo.

8 Andrés Borbón 2 April, 2009 at 11:09 am

JoseLuis:

De nada, y qué bueno que te fue de utilidad.

Saludos

9 German Quiñones Serna 30 July, 2009 at 12:32 pm

Hola Amigo,

Tengo el siguiente problema, necesito trasladar mi base de datos de motor mysql tal cual como esta hacia SQL Server, es posible?

10 Andrés Borbón 30 July, 2009 at 8:30 pm

Germán:

Sí, es posible, pero honestamente no conozco el procedimiento bien ni nunca lo he realizado, así que no me atrevería a aconsejarte. Una disculpa

11 Jon 14 August, 2009 at 12:59 am

Quiero agradecerte por este post tan util

Agrego algo importante: me aparecia un mensaje cuando llevaba 12%, que decia “Wrong Page or unavailable”, se detenia ahi y en la BD creaba 15 tablas las 3 veces, revisando las tablas note que eran de imagenes, parece que tiene problemas con lineas super largas, las borre y puse en la variable $linespersession = 500; en lugar de 3000, funciono bien asi.

Saludos

12 Andrés Borbón 14 August, 2009 at 1:05 am

jon:

En efecto, el script tiene problemas con líneas demasiado largas no separadas por un “;”. Eso lo descubrí después, pero olvidé agregarlo al post, ya que la mayor parte de la gente no tiene problemas de ese tipo, aunque se supone que debería trabajar bien con 3000 líneas.

13 Jose Daniel Canchila 27 September, 2009 at 5:54 pm

40 Mb? Mysql puede subir bases de datos mucho mas grandes sin ningún problema y sin necesidad de un intermediario, yo he subido tablas de 100 MB a 7 GB sin ningún problema y el tiento ronda entre 20 Seg a 5 Min, la forma de realizarlo desde una terminal es con la siguiente sintaxis.

mysql -u usuario -p contraseña nombre_tabla < /ruta_archivo/archivo.sql;

Espero que les sea de utilidad.

Nota: posiblemente al intentar realizar consultas o subir tablas muy grandes, mysql retorne algún error, pero esto se puede solucionar modificando algunos parámetros en el archivo de configuración (como lo es el tamaño de las consultas, cache, etc.)

14 Andrés Borbón 28 September, 2009 at 1:32 am

José Daniel:

Muchas gracias, claro que es de enorme utilidad, aunque como bien lo mencionas, se requiere meterse a la terminal y no todos sabemos cómo hacerlo. Je, je. Pero el método que pones se ve realmente sencillo.

Gracias nuevamente, y saludos!

15 LASR 14 January, 2010 at 11:40 am

Hola…en una terminal…??
en un hosting ??
Como se hace eso ??
Slds

16 Roberto Rodriguez 28 September, 2009 at 11:05 am

Hola, me ha sido muy util su explicacion de como subir una base de datos MySql al servidor de forma simple y eficaz. De verdad mil gracias, creo que sin su ayuda no lo hubiese conseguido. Te deseo un feliz dia.

17 Andrés Borbón 30 September, 2009 at 7:13 pm

Roberto Rodriguez:

Me da mucho gusto que la entrada haya sido de utilidad para ti. La verdad que es la solución más sencilla que encontré

18 luisvt 2 October, 2009 at 12:26 pm

hola al ver los comentarios veo que les funciono pero ami no me funciona nose si podras ayudarme ahi te dejo mi correo, de todas formas gracias luisvt_61@hotmail.com

19 Andrés Borbón 18 January, 2010 at 3:12 am

LASR:

Normalmente los servidores dedicados o virtuales dedicados te dan la posibilidad de modificar tu instalación de linux mediante comandos SSH. Si se trata de un hosting compartido, no hay posibilidad de ello, pero para realizar el procedimiento básico no se requiere tal cosa.

20 Luis 21 January, 2010 at 12:14 am

Excelente!!!… Fenomenal!!!… estaba haciendo gusto lo que dices, copiando y pegando texto… Y ME CANSE…!!!
En menos de 2 minutos pude subir mi base de datos C O M P L E T I T A…. de 88 Mb… EL BIGDUMP, ya esta guardado bajo siete llaves.
Un abrazo a la distancia desde Perú…

21 espartan1047 22 January, 2010 at 7:08 pm

ya cuando mude de servidor, y uso wordpress, me fui a herrmaientas>exportar
y cree un archivo xhtml donde vienen todo y por lo general son mas ligeros que una copia total del sql y muy efectivos, claro esto en el sistema wordpress

22 antonio 6 February, 2010 at 5:42 am

También MySqlAdministrator es una buena utilidad para subir grandes BD, lo que pasa es que no todos los hostings lo admiten

23 Matias Cruz 8 March, 2010 at 3:45 am

Gracias por el Script, hace tiempo que lo estaba buscando

saludos

24 aydim dagam 11 March, 2010 at 4:55 am

muy bueno.
quizás un apunte. parece que se hace la picha un lío con más de 300 saltos de línea, o ‘inserts’ seguidos. así que se pueden dividir en varios ‘insert’ la consulta cuando son más de 300…

25 Javier Delgado 14 March, 2010 at 9:46 am

Perfecto, muchisimas gracias por el truco. Yo acabo de actualizar mi página de lujo.

Comments on this entry are closed.

Previous post:

Next post: