Estoy importando 7 GB foobar.sql
para restaurar una tabla en una base de datos local.
$ mysql -h localhost -u root 'my_data' < foobar.sql
$ mysql --version
/usr/local/mysql/bin/mysql Ver 14.12 Distrib 5.0.96, for apple-darwin9.8.0 (i386) using readline 5.1
¿Cómo puedo monitorear su progreso?
Respuestas:
Si solo está importando desde un archivo de volcado desde la CLI en * nix, por ejemplo
luego instale pipe viewer en su sistema operativo y luego intente algo como esto:
que mostrará una barra de progreso mientras se ejecuta el programa.
Es muy útil y también puede usarlo para obtener una estimación del progreso de mysqldump.
pv vuelca el
sqlfile.sql
y los pasa a mysql (debido al operador de tubería) Mientras se está descargando, muestra el progreso. Lo bueno es que mysql toma los datos tan rápido como puede progresar, por lo que pv puede mostrar el progreso de la importación. No tengo ninguna prueba Pero parece que sí. Supongo que se usa algo de búfer, pero en algún momento creomysql
que no lee más datos cuando todavía está ocupado procesando.fuente
sudo hd /dev/sda1 | less
y no tener toda la partición del sistema en la memoria.pv
no será demasiado preciso en muchos casos porque algunos fragmentos de SQL tardarán más tiempo en procesarse que otros. Una línea que constituye una inserción simple se ejecutará mucho más rápido que una que crea un índice en una tabla que ya tiene muchas filas, por ejemplo. Pero una idea aproximada del progreso de la salida debería ser útil a menos que el búfer de lectura utilizadomysql
sea particularmente grande (para una entrada de 7 Gb, el búfer debería ser muy grande para quepv
la salida no sea útil en absoluto.mysqldump
?Si ya ha comenzado la importación, puede ejecutar este comando en otra ventana para ver el tamaño actual de sus bases de datos. Esto puede ser útil si conoce el tamaño total del archivo .sql que está importando.
Crédito a: http://forums.mysql.com/read.php?108,201578,201578
La referencia de MySQL 8.0 establece lo siguiente sobre la precisión:
fuente
Cuando ejecuta un mysqldump de una sola base de datos, todas las tablas se vuelcan en orden alfabético.
Naturalmente, la recarga de mysqldump en una base de datos también estaría en orden alfabético.
Podrías hacer una LISTA DE PROCESOS SHOW; y descubra la conexión DB que ejecuta mysqldump. Cuando se vuelve a cargar el volcado, la conexión DB se desvanecerá.
Si desea saber qué tablas hay en el archivo de volcado, ejecute esto en foobar.sql
ACTUALIZACIÓN 2012-05-02 13:53 EDT
Perdón por no notar que solo hay una mesa.
Si la tabla es MyISAM, la única forma de monitorear es desde el punto de vista del sistema operativo. ¿La razón? La tabla está bloqueada durante la recarga. Qué buscas? El tamaño de los archivos
.MYD
y.MYI
. Por supuesto, debe comparar eso con el tamaño de la tabla antes en el otro servidor de base de datos desde el que importó.Si la tabla es InnoDB y tiene innodb_file_per_table habilitado, la única forma de monitorear es desde el punto de vista del sistema operativo. ¿La razón? La tabla está bloqueada durante la recarga. Qué buscas? El tamaño del
.ibd
archivo. Por supuesto, debe comparar eso con el tamaño de la tabla antes en el otro servidor de base de datos desde el que importó.Si la tabla es InnoDB y tiene innodb_file_per_table deshabilitado, ni siquiera el punto de vista del sistema operativo puede ayudar.
ACTUALIZACIÓN 2012-05-02 13:56 EDT
Abordé algo como esto el año pasado: ¿Cómo obtengo% de progreso para "type db.sql | mysql"
ACTUALIZACIÓN 2012-05-02 14:09 EDT
Como una escritura estándar mysqldump bloquea la tabla así:
entonces, no hay forma de avanzar con mysql hasta que se libere el bloqueo de la tabla.
Si puede obtener
LOCK TABLES
yUNLOCK TABLES
comentar del archivo de volcado ...fuente
.MYD
y.MYI
tamaño de los archivos?Cada 2 segundos verá los procesos en ejecución.
Si desea que sea menos frecuente, agregue
-n x
donde x es el número de segundos. 5 segundos serían:fuente
Si solo desea verificar si está estancado, puede consultar
y mira lo que se está ejecutando.
fuente
Como una solución para alguien que no puede hacer que pv funcione o para quien pv dice mentiras. Puede controlar el tamaño del archivo ibdata1 en / var / lib / mysql que contiene los datos. Esto terminará el mismo tamaño (o más o menos) del tamaño de archivo en su servidor de origen.
Si hay muchas tablas, también puede verlas aparecer una por una en / var / lib / mysql / <nombre de la base de datos>.
Hace poco utilicé este hecho cuando una base de datos a largo plazo había acumulado un archivo de registro de alrededor de 20G durante un período de tres o cuatro años. Noté que la transferencia estaba tomando años y usé esta técnica para monitorear el progreso.
Creo que es muy poco probable que amanezca cuando una base de datos no incluya un archivo en algún lugar u otro. Mientras tanto, puede monitorear el archivo para ver cómo progresa una transferencia. El método que sugerí ha sido algo que podría hacer de una forma u otra desde que se escribió la primera base de datos SQL. Nunca tuve la intención de sugerir que era un tipo de técnica "oficial" en la que un jinete manual podría recurrir. Asume un nivel general de competencia con las computadoras en general y con Unix en particular.
fuente
Si su base de datos es silenciosa (es decir, no hay otros usuarios activos) y desea ver la actividad de lectura / escritura, ¿por qué no hacer algo como:
Verá la cantidad de lecturas / escrituras / inserciones / esperas / actualizaciones.
Si está insertando, por ejemplo, verá algo como:
Donde 28958 es el número de filas insertadas para su intervalo (10 segundos en mi caso).
fuente
Para alguien que está buscando el ejemplo de visor de tuberías que usa
mysqldump
, simplemente haría algo como esto:La
-W
bandera solo le dice a pv que espere a que llegue el primer byte antes de mostrar el progreso (después del aviso)fuente
Puede supervisar una importación en la carpeta \ Msql \ Data [nombre de la base de datos]
fuente
Ok, otro trabajo alrededor. Pero esa puede ser la peor e inexacta opción.
Dicho esto, aquí está mi solución para Windows:
Abra el Administrador de tareas presionando
Copie la velocidad del valor del disco "mysqld.exe"
Pon eso en una calculadora como esta: https://techinternets.com/copy_calc?do
Estima la ETA. Mi caso fue:
Resultados:
fuente
Estoy tan sorprendido de que nadie haya publicado 'mysql -v' como una opción. Si se atasca, la salida se detendrá.
fuente
mysql -v
que no ofrecerá. Además, arrojar 7 GB de datos al terminal disminuirá significativamente la restauración.