2009-05-05 24 views
6

Estoy utilizando la línea de comandos para hacer una copia de seguridad y restaurar la base de datos MYSQL. Dejar uso Estoy teniendo un Database Data1 que tiene Vistas y Procedimientos en él. Cuando en Cmd line, utilizo mysqldump es decirCopia de seguridad y restauración de MySQL desde la línea de comandos

..>bin> mysqldump -u root -proot Data1 > Datafile.mysql 

Cuando uso anterior Cmd, se crea un archivo de copia de seguridad en la carpeta bin de MySQL con Dtafile.mysql Nombre.

pero la cosa es que crea una copia de seguridad de solo tablas, no procedimientos.

Y cuando estoy restaurando en una base de datos en blanco "Data 2"

..bin> mysql - u root -proot Data2 < Dataafile.mysql 

Lo que sí es, crea todas las tablas y convertir Vistas en tablas y no los procedimientos ha sido restaurada.

Significa que no puedo Restaurar mi copia de seguridad completa de la base de datos con Todas las tablas, vistas y Procedimientos.

¿Alguno de ustedes puede ayudar ... Agradecería muchísimo.

Respuesta

10

Incluye el parámetro "--routines" para mysqldump y volcará los procedimientos.

editar # 1: Su comando mysqldump debe parecerse,

mysqldump -u root -proot --routines Data1 > Datafile.mysql 

editar # 2:
Es necesario agregar el interruptor-drop-mesa --add, así que si quieres preserva tus Vistas. El motivo es que las Vistas se crean en dos pasos (primero como tablas ficticias y luego como vistas reales). También tome nota de que Tablas y Vistas comparten el mismo espacio de nombre, así que no se deje engañar por el resultado dado por el comando "Mostrar Tablas" en el cliente mysql. Use "Mostrar Crear Vista vw_test" en su lugar si ese comando le muestra la consulta de crear vista y luego el bingo, también para asegurarse de que las vistas se hayan restaurado correctamente inserte algunos datos en las tablas relevantes en su otra base de datos y luego ejecute una consulta de selección en el ver, si los datos se acumulan más de lo que se ve, se palmee la espalda :) si no, siempre puede regresar a esta maravillosa comunidad en Stackoverflow.

Así (para mantener visitas) su comando mysqldump ahora debería tener este aspecto

mysqldump -u root -proot --routines --add-drop-table Data1 > Datafile.mysql 

HTH

+1

Oye, ¿cómo incluyo --routines when take dump? ¿Puede explicar un poco? –

+0

Hola, he editado mi respuesta anterior para mostrar el comando que debo usar. –

+0

Hola, gracias .. Funciona .. Un problema más, me estoy enfrentando Es que en "Data1" estoy teniendo Vistas que se refiere a otras bases de datos. cuando lo estoy restaurando, convierte todas las Vistas en tablas. es decir, tengo View View vw_test en Data1 pero cuando lo restauro, se convierte en una tabla con Name vw_test. ¿Cuál sería el problema. Ayudame. Muchas gracias. –

-1

hay tres mejores maneras de línea de comandos de copia de seguridad de bases de datos; phpmyadmin o administrador de MySQL copia de seguridad de base de datos MySQL y restaurar de una manera sencilla, utilizar la copia de seguridad de base de datos MySQL

mysql administrator

phpmyadmin

Cuestiones relacionadas