2010-12-10 11 views
7

Estoy intentando construir una copia de desarrollo de una base de datos MySQL de producción cargando una de las copias de seguridad. ¿Cuánto tiempo se tarda en hacer esto si el volcado no comprimido es ~ 20G?¿Cuánto tiempo debería durar una restauración de 20 GB en MySQL? (A.k.a. ¿Hay algo roto?)

Este comando se ha estado ejecutando durante aproximadamente 24 horas con una carga de CPU del 10% y me pregunto si es solo lento o si/estoy haciendo algo mal.

mysql -u root -p < it_mysql_dump.sql 

cierto es que en una máquina de escritorio dev fornido con un montón de memoria RAM, pero pueden estar leyendo y escribiendo el mismo disco duro. Creo que estoy usando InnoDB.

+0

¿Cuánta RAM, qué pasa con los detalles en el disco duro (s)? IO es el problema –

+2

¿Es este un pentium 2 con 256 mb de ram? – DogDog

Respuesta

2

Abra otra terminal, ejecute mysql y cuente las filas en algunas de las tablas de su volcado (SELECT COUNT(*) FROM table). Compare con la base de datos de origen. Eso te dirá el progreso.

INSERTé unos 80 GB de datos en MySQL a través de una red en aproximadamente 14 horas. Eran volcados de una inserción por fila (lentos) con un poco de sobrecarga, insertándose en un servidor con discos rápidos.

24 horas es posible si el hardware es lo suficientemente viejo o si su importación está compitiendo con otra cosa para el disco IO y la memoria.

+0

Lo hice en una de las tablas (la que creo que se está cargando) y la consulta no ha regresado en varias horas, como si la tabla estuviera bloqueada desde la lectura. – BCS

+0

Los rescates pueden estar compitiendo con las lecturas del archivo de volcado: o) 14 horas me da un parque de bolas razonable. – BCS

+0

Desafortunadamente, en general no puede supervisar las restauraciones con otra sesión, ya que suelen contener bloqueos de tabla. – MarkR

6

Restaurar los volcados de MySQL puede llevar mucho tiempo. Esto se debe a que realmente reconstruye las tablas completas.

Exactamente lo que hay que hacer para solucionarlo depende del motor, pero en general

diría, haga lo siguiente:

regla Cero: Sólo utilice un sistema operativo de 64 bits.

  1. Asegúrese de que tiene suficiente memoria RAM física para adaptarse a la mayor sola tabla en la memoria; incluya cualquier sobrecarga para el sistema operativo en este cálculo (NB: en los sistemas operativos que usan páginas de 4k, es decir, todas ellas, las tablas de páginas ocupan mucha memoria en sistemas de gran memoria, no lo olvide)
  2. Tune el innodb_buffer_pool tal que es más grande que la tabla más grande; o si usa MyISAM, sintonice key_buffer para que sea lo suficientemente grande como para contener los índices de la tabla más grande.
  3. Sea paciente.

Ahora, si sigues encontrando que es lento haber hecho lo anterior, puede ser que tu base de datos particular tenga una estructura muy difícil de restaurar.

Personalmente he logrado reconstruir un servidor con ~ 2 TB en < 48 horas, pero ese fue un caso particular.

Asegúrese de que su sistema de desarrollo tenga hardware de grado de producción si tiene la intención de cargar datos de producción en él.

En particular, si cree que puede cargar datos a granel en tablas que no caben en la memoria (o al menos, principalmente en la memoria), olvídese de ello.


Si todo esto parece demasiado, recuerde que sólo puede utilizar un sistema de archivos o LVM instantánea en línea con InnoDB, y luego simplemente copiar los archivos. Con MyISAM es un poco más complicado pero aún se puede hacer.

+0

¿Tiene enlaces sobre cómo hacer eso último? – BCS

0

Acabo de pasar por la experiencia de restaurar una base de datos de 51.8 Gb de un archivo mysqldump de 36.8 Gb para crear una base de datos imdb. Para mí, la restauración que no se realizó a través de la red, sino que se realizó desde un archivo en la máquina nativa tomó un poco menos de 4 horas.

La máquina es un Servidor de cuatro núcleos que ejecuta Windows Server 2008. La gente se ha preguntado si hay una forma de supervisar el progreso. En realidad hay Puede ver cómo la restauración crea los archivos de la base de datos yendo al directorio de Datos del programa y encontrando el subdirectorio MYSQL y luego encontrando el subdirectorio con el nombre de su base de datos.

Los archivos se crean gradualmente en el directorio y puede verlos acumularse. No es poca comodidad cuando tiene un problema de producción y se pregunta si el trabajo de restauración se colgó o simplemente si le tomó mucho tiempo.

Cuestiones relacionadas