2010-08-15 18 views
10

he hecho una copia de una base de datos MySQL desde hace varios años con el comando: mysqldump myDatabaseName -u root > myBackupFile.sqlCómo restaurar de forma fiable las gotas de MySQL

han aparecido Las copias de seguridad que funciona bien ...

Entonces quería restaurar una de las copias de seguridad en una base de datos llamada diferente por lo que hice: mysql myNewDatabaseName -u root < myBackupFile.sql

Tengo algunos errores sobre el tamaño de archivo de registro así que dejé de MySQL y quitado los archivos de registro y establezca los siguientes parámetros en el archivo my.ini y mysql reiniciado.

innodb_log_file_size=64M

innodb_log_buffer_size=8M

La restauración ahora completa sin errores, pero una de las tres tablas que contiene gotas no se restaura.

Mi max-allowed-packet se establece en 32M

El tamaño de copia de seguridad de base de datos es de aproximadamente 2.2 GB la mayoría de ese tamaño estar en la mesa que no restaure. Si ejecuto un mysqldump en la base de datos restaurada, el tamaño es de 185 MB.

Ahora he intentado hacer un mysqldump con la opción --hex-blob pero todavía no he intentado restaurar ese archivo (3,9 GB).

Realmente necesito tener una forma a prueba de bombas de copia de seguridad y restaurar ya que mis copias de seguridad existentes parecen inútiles. Estoy particularmente preocupado de que "falle silenciosamente" sin entradas de registro de errores por lo que puedo ver.

el medio ambiente es el servidor Windows 2003 SP2

Cualquier ayuda apreciada!

George

+0

¿Están los blobs presentes en el archivo de volcado?Quizás para empezar, nunca se realizó una copia de seguridad y el proceso de restauración funcionó perfectamente con los datos que realmente existían. Max_packet afecta los datos en ambos sentidos. Si eliminó un límite demasiado pequeño, es posible que los blobs se hayan eliminado o truncado. –

Respuesta

4

he conseguido una copia de seguridad y restaurar las manchas utilizando el siguiente mysqldump comando:

mysqldump --opt --skip-extended-insert --max_allowed_packet=128M -u root myDB > filename 

No estoy seguro si se especifica max_allowed_packet en la línea de comandos o la skip-extended-insert que hizo el truco.

Supuse que mi max_allowed_packet de 32M estaba siendo utilizado, pero creo que en el archivo de configuración de mysql está en la sección [mysqld] y probablemente no se aplique al volcado.

Todavía no entiendo por qué no obtuve errores ni en el volcado ni en la restauración.

+0

mysqldump ignora max_allowed_packet. Lea este informe de errores para intentar averiguar si es por diseño o no: http://bugs.mysql.com/bug.php?id=9753 – Leopd

2

mysqldump --skip-extended-insert funciona pero puede reducir el rendimiento en 100x en la restauración, por lo que no es una opción viable.

Al hacer la copia de seguridad, max_allowed_packet es ignorado por mysqldump (por design?) El complemento real es net_buffer_length. Así que asegúrese de que su max_allowed_packet sea más grande que su net_buffer_length y debería funcionar. Como en:

mysqldump -u root --net_buffer_length=100k oldDB > backup.sql 
mysql -u root --max_allowed_packet=10M newDB < backup.sql 
Cuestiones relacionadas