sql >> Base de Datos >  >> RDS >> Mysql

Cómo hacer una copia de seguridad y restaurar (exportar e importar) bases de datos MySQL Tutorial

phpMyAdmin se puede usar para exportar o respaldar bases de datos MySQL o MariaDB fácilmente. Sin embargo, si el tamaño de la base de datos es muy grande, probablemente no sea una buena idea. phpMyAdmin permite a los usuarios guardar el volcado de la base de datos como archivo o mostrarlo en la pantalla, lo que implica exportar declaraciones SQL desde el servidor y transmitir los datos a través de una conexión de red más lenta o Internet a la computadora del usuario. Este proceso ralentiza el proceso de exportación, aumenta el tiempo de bloqueo de la base de datos y, por lo tanto, la falta de disponibilidad de MySQL o MariaDB, ralentiza el servidor y puede simplemente bloquear el servidor Apache HTTPD si hay demasiadas conexiones web entrantes que acaparan los recursos del sistema.

La mejor manera de hacer una copia de seguridad y exportar la base de datos MySQL o MariaDB es realizar la tarea localmente en el servidor, de modo que los datos de las tablas se puedan volcar instantáneamente en el disco local sin demora. Por lo tanto, la velocidad de exportación será más rápida y reducirá el tiempo en que la base de datos o tabla MySQL o MariaDB está bloqueada para acceder. Este tutorial es la guía sobre cómo hacer una copia de seguridad (exportar) y restaurar (importar) la(s) base(s) de datos MySQL o MariaDB en el propio servidor de la base de datos usando mysqldump y mysql utilidades. Básicamente, existen dos métodos para hacer una copia de seguridad de MySQL o MariaDB, uno es copiar todos los archivos de la tabla (archivos *.frm, *.MYD y *.MYI) o usar mysqlhotcopy utilidad, pero solo funciona para tablas MyISAM. El siguiente tutorial se concentrará en mysqldump, que funciona para las tablas MyISAM e InnoDB.

Cómo exportar, hacer una copia de seguridad o volcar una base de datos MySQL o MariaDB

Para exportar una base de datos MySQL o MariaDB a un archivo de volcado, simplemente escriba la siguiente sintaxis de comando en el shell. Puede usar Telnet o SSH para iniciar sesión de forma remota en la máquina si no tiene acceso a la caja física.

mysqldump -u username -ppassword database_name > dump.sql

Reemplazar nombre de usuario con un ID de usuario válido de MySQL o MariaDB, contraseña con la contraseña válida para el usuario (IMPORTANTE:no hay espacio después de -p y la contraseña, de lo contrario, mysqldump le pedirá la contraseña pero la tratará como el nombre de la base de datos, por lo que la copia de seguridad fallará) y nombre_de_la_base_de_datos con el nombre real de la base de datos que desea exportar. Finalmente, puede poner el nombre que desee para el archivo de volcado SQL de salida, aquí se encuentra dump.sql .

Todos los datos, tablas, estructuras y base de datos de database_name se realizará una copia de seguridad en un archivo de texto SQL llamado dump.sql con el comando anterior.

Cómo exportar solo estructuras de bases de datos MySQL o MariaDB

Si ya no necesita los datos dentro de las tablas de la base de datos (poco probable), simplemente agregue –no-data cambie para exportar solo las estructuras de las tablas. Por ejemplo, la sintaxis es:

mysqldump -u username -ppassword --no-data database_name > dump.sql

Cómo hacer una copia de seguridad solo de los datos de una base de datos MySQL o MariaDB

Si solo desea realizar una copia de seguridad de los datos, utilice –no-create-info opción. Con esta configuración, el volcado no volverá a crear la base de datos, las tablas, los campos y otras estructuras al importar. Use esto solo si está bastante seguro de que tiene bases de datos duplicadas con la misma estructura, donde solo necesita actualizar los datos.

mysqldump -u username -ppassword --no-create-info database_name > dump.sql

Cómo volcar varias bases de datos MySQL o MariaDB en un archivo de texto

–bases de datos La opción le permite especificar más de 1 base de datos. Ejemplo de sintaxis:

mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql

Cómo volcar todas las bases de datos en el servidor MySQL o MariaDB

Para volcar todas las bases de datos, use –all-databases y ya no es necesario especificar el nombre de la base de datos.

mysqldump -u username -ppassword --all-databases > dump.sql

Cómo hacer una copia de seguridad en línea de las tablas de InnoDB

Hacer una copia de seguridad de la base de datos causa inevitable que el servidor MySQL o MariaDB no esté disponible para las aplicaciones porque al exportar, todas las tablas adquirieron un bloqueo de lectura global usando FLUSH TABLES WITH READ LOCK al comienzo del volcado hasta que finalizó. Entonces, aunque las declaraciones READ pueden continuar, todas las declaraciones INSERT, UPDATE y DELETE tendrán que ponerse en cola debido a las tablas bloqueadas, como si MySQL o MariaDB estuvieran inactivos o estancados. Si está utilizando InnoDB, –single-transaction es la forma de minimizar esta duración del tiempo de bloqueo a casi inexistente como si se realizara una copia de seguridad en línea. Funciona leyendo las coordenadas del registro binario tan pronto como se adquiere el bloqueo, y el bloqueo se libera inmediatamente.

Sintaxis:

mysqldump -u username -ppassword  --all-databases --single-transaction > dump.sql

Cómo restaurar e importar bases de datos MySQL o MariaDB

Puede restaurar desde phpMyAdmin, usando la pestaña Importar. Para una forma más rápida, cargue el archivo de volcado en el servidor MySQL o MariaDB y use el siguiente comando para importar las bases de datos nuevamente al servidor MySQL o MariaDB.

mysql -u username -ppassword database_name < dump.sql
Si desea conectarse a servidores MySQL o MariaDB de forma remota en otro servidor, agregue -h nombre-del-servidor-o-dirección-IP al mando.

La importación y exportación de bases de datos MySQL o MariaDB no solo es importante para recuperar los datos cuando ocurre un desastre, sino que también proporciona una manera fácil de migrar o pasar a otro servidor, como cuando se cambia de proveedor de alojamiento web. Sin embargo, tenga en cuenta que hay un problema común:la codificación del juego de caracteres. La versión más reciente de mysqldump usa UTF8 como su conjunto de caracteres predeterminado si no se especifica nada, mientras que las versiones anteriores (generalmente anteriores a la 4.1) usan Latin1 como conjunto de caracteres predeterminado. Si el conjunto de caracteres de su base de datos es Latin1 y se vuelca en la intercalación UTF8, los datos pueden terminar convirtiéndose simplemente en basura, distorsionados o ilegibles (sucede con frecuencia con el blog de WordPress). Si este es el caso, use –default-character-set=charset_name opción para especificar el juego de caracteres o convertir la base de datos a UTF8.