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

Haga una copia de seguridad de sus bases de datos MySQL

MySQL es un sistema de administración de bases de datos relacionales (DBMS) de código abierto que se implementa con frecuencia en una amplia variedad de contextos. Con mayor frecuencia, se implementa como parte de la pila LAMP. El sistema de base de datos también es fácil de usar y altamente portátil y, en el contexto de muchas aplicaciones, es extremadamente eficiente. Dado que MySQL suele ser un almacén de datos centralizado para grandes cantidades de datos de misión crítica, realizar copias de seguridad periódicas de su base de datos MySQL es una de las tareas de recuperación ante desastres más importantes que puede realizar un administrador de sistemas. Esta guía aborda varios métodos distintos para crear copias de seguridad de su base de datos y restaurar bases de datos a partir de copias de seguridad.

Antes de comenzar el proceso de instalación, asumimos que ha seguido los pasos descritos en nuestraConfiguración y protección de una instancia informática. Además, deberá instalar la base de datos MySQL. Toda la configuración se realizará en una sesión de terminal; asegúrese de haber iniciado sesión en su Linode como root a través de SSH. Si es nuevo en la administración de servidores Linux, es posible que le interese nuestra guía de introducción a los conceptos de Linux, la guía para principiantes y la guía básica de administración.

Metodología de copia de seguridad

La mayoría de las copias de seguridad de las bases de datos MySQL en esta guía se realizan usando el mysqldump herramienta, que se distribuye con la instalación predeterminada del servidor MySQL. Le recomendamos que utilice mysqldump siempre que sea posible porque a menudo es la forma más fácil y eficiente de realizar copias de seguridad de la base de datos. Se proporcionan otros métodos detallados en esta guía para situaciones en las que no tiene acceso a mysqldump herramienta, como en un entorno de recuperación como Finnix o en situaciones en las que la instancia local del servidor MySQL no se iniciará.

Sin embargo, esta guía proporciona una mera descripción general de mysqldump herramienta, ya que hay muchas opciones y usos de mysqldump que quedan fuera del alcance de este documento. Lo alentamos a familiarizarse con todos los procedimientos cubiertos en este documento y a continuar su exploración de mysqldump. más allá de los casos descritos aquí. Asegúrese de tener en cuenta lo siguiente:

  • El *.sql archivos creados con mysqldump se puede restaurar en cualquier momento. Incluso puede editar la base de datos .sql archivos manualmente (¡con mucho cuidado!) utilizando su editor de texto favorito.
  • Si sus bases de datos solo utilizan el motor de almacenamiento MyISAM, puede sustituir el mysqldump comando con el mysqlhotcopy más rápido .

Creación de respaldos de todo el sistema de administración de bases de datos (DBMS)

A menudo es necesario realizar una copia de seguridad (o "volcado") de un sistema de administración de base de datos completo junto con todas las bases de datos y tablas, incluidas las bases de datos del sistema que contienen los usuarios, los permisos y las contraseñas.

Opción 1:Cree copias de seguridad de un sistema de administración de base de datos completo usando la utilidad mysqldump

El método más sencillo para crear una única copia de seguridad coherente de todo el sistema de gestión de bases de datos MySQL utiliza mysqldump utilidad desde la línea de comandos. La sintaxis para crear un volcado de base de datos con una marca de tiempo actual es la siguiente:

mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p

Este comando le pedirá una contraseña antes de comenzar la copia de seguridad de la base de datos en el directorio actual. Este proceso puede demorar desde unos pocos segundos hasta algunas horas, según el tamaño de sus bases de datos.

Automatice este proceso agregando una línea a crontab :

0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD

Para el ejemplo anterior, use which mysqldump para confirmar la ruta correcta al comando y reemplazar root con el usuario de mysql con el que le gustaría ejecutar las copias de seguridad y PASSWORD con la contraseña correcta para ese usuario.

Nota En el ejemplo de crontab, asegúrese de que no haya espacio entre el indicador -P y la entrada de su contraseña.

Opción 2:Crear respaldos de un SGBD completo usando copias del directorio de datos MySQL

Mientras que mysqldump herramienta es el método de copia de seguridad preferido, hay un par de casos que requieren un enfoque diferente. mysqldump solo funciona cuando el servidor de la base de datos está accesible y en ejecución. Si no se puede iniciar la base de datos o no se puede acceder al sistema host, podemos copiar la base de datos de MySQL directamente. Este método suele ser necesario en situaciones en las que solo tiene acceso a un entorno de recuperación como Finnix con los discos de su sistema montados en ese sistema de archivos. Si está intentando este método en su propio sistema, asegúrese de que la base de datos no corriendo. Ejecute un comando similar al siguiente:

/etc/init.d/mysqld stop

En la mayoría de las versiones de distribución de MySQL, el directorio de datos se encuentra en /var/lib/mysql/ directorio. Si este directorio no existe, examine el /etc/mysql/my.cnf archivo para una ruta al directorio de datos. Alternativamente, puede buscar en su sistema de archivos el directorio de datos emitiendo el siguiente comando:

find / -name mysql

Una vez que haya localizado su directorio de datos MySQL, puede copiarlo en una ubicación de respaldo. El siguiente ejemplo asume que el directorio de datos MySQL está ubicado en /var/lib/mysql/ :

cp -R /var/lib/mysql/* /opt/database/backup-1266871069/

En este caso, hemos copiado recursivamente el contenido del directorio de datos (por ejemplo, /var/lib/mysql/ ) a un directorio dentro de /opt/ jerarquía (por ejemplo, /opt/database/backup-1266871069/ ). Este directorio debe existir antes de iniciar la operación de copia. Considere la siguiente secuencia de operaciones:

/etc/init.d/mysql stop
mkdir -p /opt/database/backup-1266872202/
cp -R /var/lib/mysql/* /opt/database/backup-1266872202/

Estos comandos comienzan deteniendo el demonio del servidor MySQL y luego creando un directorio llamado /opt/database/backup-1266872202/ y realizando una copia recursiva del directorio de datos. Tenga en cuenta que hemos elegido usar el backup-[time_t] convención de nomenclatura para nuestros ejemplos. Sustituya las rutas anteriores por su organización y esquema de nomenclatura preferidos. El cp El comando no produce resultados y puede tardar un tiempo en completarse según el tamaño de su base de datos. No se alarme si tarda un tiempo en completarse. Cuando finalice la operación de copia, es posible que desee archivar el directorio de datos en un archivo "tar" para que sea más fácil de administrar y mover entre máquinas. Ejecute los siguientes comandos para crear el archivo:

cd /opt/database/backup-1266872202
tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz

Una vez que se crea el tarball, puede transferir fácilmente el archivo de la manera que le resulte más conveniente. No olvide reiniciar el demonio del servidor MySQL nuevamente si es necesario:

/etc/init.d/mysql start

Creación de respaldos de una sola base de datos

En muchos casos, no es necesario crear una copia de seguridad de todo el servidor de la base de datos. En algunos casos, como la actualización de una aplicación web, el instalador puede recomendar realizar una copia de seguridad de la base de datos en caso de que la actualización afecte negativamente a la base de datos. De manera similar, si desea crear un "volcado" de una base de datos específica para mover esa base de datos a un servidor diferente, puede considerar el siguiente método.

Cuando sea posible, use el mysqldump herramienta para exportar un "volcado" de una sola base de datos. Este comando se parecerá a lo siguiente:

mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql

El ejemplo anterior es como el ejemplo de la sección anterior, excepto que en lugar de usar --all-databases opción, este ejemplo especifica un nombre de base de datos particular. En este caso creamos una copia de seguridad de los danceLeaders base de datos. La forma de este comando, en una notación más sencilla, es la siguiente:

mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql

Para un ejemplo adicional, haremos una copia de seguridad de la base de datos llamada customer usando la cuenta de la base de datos raíz emitiendo el siguiente comando:

mysqldump -u root -p -h localhost customer > customerBackup.sql

Se le pedirá una contraseña antes de mysqldump comienza su proceso de copia de seguridad. Como siempre el archivo de copia de seguridad, en este caso customerBackup.sql , se crea en el directorio donde emite este comando. El mysqldump El comando puede completarse en unos segundos o unas pocas horas, según el tamaño de la base de datos y la carga en el host al ejecutar la copia de seguridad.

Creación de respaldos de una sola tabla

Opción 1:Crear copias de seguridad de una sola tabla usando la utilidad mysqldump

Esta operación, al igual que los usos anteriores de mysqldump utilidad en este documento, le permite crear una copia de seguridad de una sola tabla de base de datos. Continuando con nuestros ejemplos anteriores, el siguiente ejemplo le permite hacer una copia de seguridad de la tabla usernameRecords en los danceLeaders base de datos.

 mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql

El ejemplo anterior es como el ejemplo de la sección anterior, excepto que hemos agregado una especificación de nombre de tabla al comando para especificar el nombre de la tabla que queremos respaldar. La forma de este comando en una notación más sencilla es la siguiente:

mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql

Para un ejemplo adicional, haremos una copia de seguridad de la tabla llamada "pedido" de la base de datos llamada customer usando la cuenta de la base de datos raíz emitiendo el siguiente comando:

mysqldump -u root -p -h localhost customer order > customerBackup-order.sql

Se le pedirá una contraseña antes de mysqldump comienza su proceso de copia de seguridad. Como siempre, el archivo de copia de seguridad (en este caso customerBackup.sql ) se crea en el directorio donde emite este comando. El mysqldump El comando puede completarse en unos segundos o unas pocas horas, según el tamaño de la base de datos y la carga en el host al ejecutar la copia de seguridad.

Opción 2:Crear copias de seguridad de una sola tabla usando MySQL Client y una declaración OUTFILE

El cliente MySQL en sí tiene alguna capacidad de copia de seguridad. Es útil cuando ya ha iniciado sesión y no desea salir de la sesión actual. Si está utilizando un sistema en vivo y no puede permitirse el tiempo de inactividad, debe considerar bloquear temporalmente la tabla que está respaldando.

Tenga en cuenta que cuando realiza una copia de seguridad de una sola tabla con el cliente MySQL, la estructura de esa tabla no se mantiene en la copia de seguridad. Solo los datos en sí se guardan cuando se usa este método.

  1. Antes de comenzar, recomendamos realizar un LOCK TABLES en las tablas que desea respaldar, seguido de FLUSH TABLES para garantizar que la base de datos esté en un espacio coherente durante la operación de copia de seguridad. Solo necesita un bloqueo de lectura. Esto permite que otros clientes continúen consultando las tablas mientras usted realiza una copia de los archivos en el directorio de datos de MySQL. Para un bloqueo de "lectura", la sintaxis de LOCK TABLES se parece a lo siguiente:

    1
    
    LOCK TABLES tableName READ;

    Para realizar un LOCK TABLES en el order tabla del customer base de datos, emita el siguiente comando:

    mysql -u root -p -h localhost
    

    A continuación, se le pedirá la contraseña de root. Una vez que haya ingresado las credenciales de la base de datos, llegará al indicador del cliente mysql. Ejecute el siguiente comando para bloquear el order tabla en el customer base de datos (el final ; se requiere para los comandos de MySQL):

    1
    2
    3
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
  2. Ahora podemos comenzar la operación de copia de seguridad. Para crear una copia de seguridad de una sola tabla con el cliente MySQL, deberá iniciar sesión en su MySQL DBMS. Si no ha iniciado sesión actualmente, puede iniciar sesión con el siguiente comando:

    mysql -u root -p -h localhost
    

    Se te solicitará una contraseña. Una vez que haya ingresado la contraseña correcta y esté en el indicador del cliente MySQL, puede usar SELECT * INTO OUTFILE declaración. La sintaxis de esta declaración es similar a la siguiente:

    1
    
    SELECT * INTO OUTFILE 'file_name' FROM tbl_name;

    En este ejemplo, crearemos una copia de seguridad de los datos del order tabla del customer base de datos. Emita el siguiente comando para comenzar el procedimiento de copia de seguridad (el ; final se requiere para los comandos de MySQL):

    1
    2
    3
    4
    5
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
    SELECT * INTO OUTFILE 'customerOrderBackup.sql' FROM order;
    UNLOCK TABLES;

    El customerOrderBackup.sql El archivo se creará en el subdirectorio de datos apropiado dentro del directorio de datos de MySQL. El directorio de datos de MySQL es comúnmente /var/lib/mysql/ . En este ejemplo, el OUTFILE será /var/lib/mysql/customer/customerOrderBackup.sql . Sin embargo, la ubicación de este directorio y archivo puede variar entre las distribuciones de Linux. Si no puede encontrar su archivo de copia de seguridad, puede buscarlo con el siguiente comando:

    find / -name customerOrderBackup.sql
    
  3. Una vez que haya completado la operación de copia de seguridad, querrá desbloquear las tablas usando el siguiente comando en el cliente MySQL. Esto devolverá su base de datos a su funcionamiento normal. Inicie sesión en el cliente MySQL con el primer comando si no ha iniciado sesión actualmente y luego emita el segundo comando:

    mysql -uroot -p -h localhost
    
    1
    
    UNLOCK TABLES;

Puede continuar usando su base de datos normalmente desde este punto.

Consideraciones para una estrategia de copia de seguridad eficaz

La creación de copias de seguridad de su base de datos MySQL debe ser una tarea regular y programada. Puede considerar programar copias de seguridad periódicas usando cron , mysqldump y/o mail . Considere nuestra documentación para obtener más información sobre cron. La implementación de una solución de copia de seguridad automatizada puede ayudar a minimizar el tiempo de inactividad en una situación de recuperación ante desastres.

No es necesario que inicie sesión como root cuando realice una copia de seguridad de las bases de datos. Un usuario de MySQL con lectura (por ejemplo, SELECT ) es capaz de usar tanto el mysqldump y mysql (por ejemplo, el cliente MySQL) herramientas para realizar copias de seguridad, como se describe a continuación. Como práctica habitual, le recomendamos que no utilice MySQL root usuario siempre que sea posible para minimizar los riesgos de seguridad.

Es posible que desee considerar las copias de seguridad incrementales como parte de un plan de copia de seguridad de la base de datos a largo plazo. Si bien este proceso no se cubre aquí, le recomendamos que considere el recurso Métodos de copia de seguridad de la base de datos MySQL para obtener más información.

Restauración de un DBMS completo desde la copia de seguridad

Una copia de seguridad que no se puede restaurar tiene un valor mínimo. Recomendamos probar sus copias de seguridad regularmente para asegurarse de que puedan restaurarse en caso de que necesite restaurar desde copias de seguridad. Cuando utilice la restauración de copias de seguridad de su base de datos MySQL, el método que utilice dependerá del método que haya utilizado para crear la copia de seguridad en cuestión.

Opción 1:Restauración de un SGBD completo usando el cliente MySQL y respaldos creados por mysqldump

Antes de comenzar el proceso de restauración, esta sección asume que su sistema está ejecutando una versión recién instalada de MySQL sin bases de datos o tablas existentes. Si ya tiene bases de datos y tablas en su MySQL DBMS, haga una copia de seguridad antes de continuar, ya que este proceso sobrescribirá los datos MySQL actuales.

Puede restaurar fácilmente todo su DBMS utilizando mysql dominio. La sintaxis para esto será similar a la siguiente:

mysql -u [username] -p [password] < backupFile.sql

En este caso, simplemente estamos restaurando todo el DBMS. El comando tendrá el siguiente aspecto:

mysql -u root -p < 1266861650-backup-all.sql

Se le pedirá la contraseña del usuario raíz de MySQL. Una vez que se proporcionen las credenciales correctas, comenzará el proceso de restauración. Dado que este proceso restaura un DBMS completo, puede tardar desde unos pocos segundos hasta muchas horas.

Opción 2:Restaurar un SGBD completo usando archivos de datos MySQL copiados directamente de Directorio de datos de MySQL

Antes de comenzar el proceso de restauración, esta sección asume que su sistema está ejecutando una versión recién instalada de MySQL sin bases de datos o tablas existentes. Si ya tiene bases de datos y tablas en su MySQL DBMS, haga una copia de seguridad antes de continuar, ya que este proceso sobrescribirá los datos MySQL actuales.

  1. Si tiene una copia de seguridad completa de su directorio de datos MySQL (comúnmente /var/lib/mysql ), puede restaurarlo desde la línea de comandos. Para garantizar una restauración exitosa, primero debe detener el demonio del servidor MySQL y eliminar los datos actuales en el directorio de datos de MySQL.

    /etc/init.d/mysql stop
    rm -R /var/lib/mysql/*
    
  2. En el siguiente ejemplo, la copia de seguridad del directorio de datos de MySQL se encuentra en /opt/database/backup-1266872202 directorio. Si creó un tarball del directorio de datos cuando realizó una copia de seguridad de su directorio de datos DBMS, deberá extraer los archivos del tarball antes de copiarlos con los siguientes comandos:

     cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/
     cd /var/lib/mysql
     tar xzvf mysqlBackup-1266872202.tar.gz
    
  3. Antes de que podamos reiniciar el proceso de la base de datos MySQL, debemos asegurarnos de que los permisos estén configurados correctamente en /var/lib/mysql/ directorio. Para este ejemplo, asumimos que el demonio del servidor MySQL se ejecuta como el usuario mysql con el grupo mysql . Para cambiar los permisos en el directorio de datos, emita el siguiente comando:

    chown -R mysql:mysql /var/lib/mysql
    
  4. Modificar el mysql:mysql parte de este comando si su instancia de MySQL se ejecuta con diferentes permisos de usuario y grupo. La forma de este argumento es [user]:[group] . Finalmente podemos iniciar el demonio del servidor MySQL con el siguiente comando:

    /etc/init.d/mysql start
    

    Si recibe un error similar al siguiente:

    /usr/bin/mysqladmin: connect to server at 'localhost' failed
        error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
    

    Necesitará encontrar el antiguo debian-sys-maint contraseña del usuario en /etc/mysql/debian.cnf y luego cambie el nuevo debian-sys-maint contraseña del usuario. Puede ver la contraseña anterior usando cat :

    cat /etc/mysql/debian.cnf | grep password
    

    Copie (o recuerde) la contraseña. Luego deberá cambiar el nuevo debian-sys-maint contraseña del usuario. Puede hacerlo iniciando sesión como usuario root de MySQL y emitiendo el siguiente comando (donde es la contraseña del antiguo debian-sys-maint usuario):

    1
    
    GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
  5. Luego deberá reiniciar MySQL con el siguiente comando:

    /etc/init.d/mysql restart
    

Después de que el servidor MySQL se haya iniciado con éxito, querrá probar su MySQL DBMS y asegurarse de que todas las bases de datos y tablas se hayan restaurado correctamente. También le recomendamos que audite sus registros en busca de posibles errores. En algunos casos, MySQL puede iniciarse correctamente a pesar de los errores de la base de datos.

Restauración de una única base de datos desde la copia de seguridad

En los casos en los que solo haya creado una copia de seguridad para una base de datos, o solo necesite restaurar una sola base de datos, el proceso de restauración es algo diferente.

Antes de comenzar el proceso de restauración, esta sección asume que su sistema está ejecutando una versión recién instalada de MySQL sin bases de datos o tablas existentes. Si ya tiene bases de datos y tablas en su MySQL DBMS, haga una copia de seguridad antes de continuar, ya que este proceso sobrescribirá los datos MySQL actuales.

  1. Para restaurar una sola base de datos utilizando mysql comando, primero prepare la base de datos de destino. Inicie sesión en su (nuevo) servidor de base de datos MySQL utilizando el cliente MySQL:

    mysql -u root -p -h localhost
    
  2. Se le pedirá la contraseña del usuario raíz de MySQL. Una vez que haya proporcionado las credenciales correctas, debe crear la base de datos de destino. En este caso, el customer la base de datos será restaurada:

    1
    
    CREATE DATABASE customer;
  3. Al igual que con todas las declaraciones de MySQL, no omita el punto y coma final (por ejemplo, ; ) al final de cada comando. Según su implementación, es posible que deba crear un nuevo usuario de MySQL o volver a crear un usuario anterior con acceso a la base de datos recién creada. El comando para crear un nuevo usuario de MySQL toma la siguiente forma:

    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  4. En el siguiente ejemplo, crearemos un usuario llamado customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  5. Ahora le daremos a customeradmin privilegios para acceder al customer base de datos. El comando para otorgar privilegios a una base de datos para un usuario específico toma la siguiente forma:

    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
  6. A los efectos del siguiente ejemplo, daremos customeradmin acceso completo al customer base de datos. Ejecute el siguiente comando en el cliente MySQL:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  7. Es posible que deba especificar diferentes concesiones de acceso según las demandas de su implementación. Consulte la documentación oficial de la declaración GRANT de MySQL. Una vez que se hayan creado la base de datos de destino y el usuario MySQL, puede cerrar el cliente MySQL con el siguiente comando:

     quit
    
  8. Ahora puede usar mysql comando para restaurar su archivo SQL. La forma de este comando se parece a la siguiente:

     mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
    

En el siguiente ejemplo, restauraremos el customer base de datos de un archivo de copia de seguridad de SQL llamado customerBackup.sql (presta especial atención al < símbolo en este comando):

mysql -u root -p -h localhost customer < customerBackup.sql

Se le pedirá la contraseña del usuario raíz de MySQL. Una vez que se proporcionen las credenciales correctas, comenzará el proceso de restauración. La duración de esta operación depende de la carga de su sistema y del tamaño de la base de datos que está restaurando. Puede completarse en unos segundos o puede tardar varias horas.

Restauración de una sola tabla desde la copia de seguridad

Opción 1:restaurar una sola tabla usando MySQL y copias de seguridad creadas por mysqldump

  1. Antes de comenzar el proceso de restauración, asumimos que su instancia de MySQL ya tiene una base de datos existente que puede recibir la tabla que desea restaurar. Si su instancia de MySQL no tiene la base de datos requerida, tendremos que crearla antes de continuar. Primero, inicie sesión en su instancia de MySQL con el siguiente comando:

    mysql -u root -p -h localhost
    
  2. Se le pedirá la contraseña del usuario raíz de MySQL. Una vez que haya proporcionado las credenciales correctas, debe crear la base de datos de destino. A los efectos de este ejemplo, crearemos el customer base de datos.

    1
    
    CREATE DATABASE customer;

    Luego salga de mysql aviso:

    quit
    

    Si ya tiene la base de datos requerida, puede omitir con seguridad el paso anterior. Para continuar con la restauración de la tabla, emita un comando de la siguiente forma:

    mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
    
  3. Para el siguiente ejemplo, restauraremos el order tabla en el customer existente base de datos de un archivo de copia de seguridad SQL llamado customerOrderBackup.sql . Tenga mucho cuidado al usar el < operador en el siguiente comando:

    mysql -u root -p -h localhost customer < customerOrderBackup.sql
    

Se le pedirá la contraseña del usuario raíz de MySQL. Una vez que se proporcionen las credenciales correctas, comenzará el proceso de restauración. La duración de esta operación depende de la carga de su sistema y del tamaño de la tabla que está restaurando. Puede completarse en unos segundos o puede tardar varias horas.

Opción 2:Restauración de una sola tabla usando el cliente MySQL y una instrucción INFILE para copias de seguridad creadas con OUTFILE

  1. Antes de comenzar el proceso de restauración, asumimos que su instancia de MySQL ya tiene una base de datos existente que puede recibir la tabla que desea restaurar. Si su instancia de MySQL no tiene la base de datos requerida, tendremos que crearla antes de continuar. Primero, inicie sesión en su instancia de MySQL con el siguiente comando:

    mysql -u root -p -h localhost
    
  2. Se le pedirá la contraseña del usuario raíz de MySQL. Una vez que haya proporcionado las credenciales correctas, debe crear la base de datos de destino. A los efectos de este ejemplo, crearemos el customer base de datos.

    1
    
    CREATE DATABASE customer;

    Luego salga de mysql aviso:

    quit
    
  3. La copia de seguridad de datos utilizada en este caso se creó utilizando SELECT * INTO OUTFILE 'backupFile.sql' FROM tableName dominio. Este tipo de copia de seguridad solo conserva los datos en sí, por lo que se debe volver a crear la estructura de la tabla. Para restaurar una sola tabla desde el cliente MySQL, primero debe preparar la base de datos y la tabla de destino. Inicie sesión en su (nueva) instancia de MySQL utilizando el cliente de MySQL:

    mysql -u root -p -h localhost
    
  4. Se le pedirá la contraseña del usuario raíz de MySQL. Una vez que se proporcionan las credenciales correctas, debe crear la base de datos de destino. En este caso, crearemos el customer base de datos. Emita la siguiente declaración:

    1
    
    CREATE DATABASE customer;
  5. Recuerde que los puntos y comas (por ejemplo, ; ) después de cada declaración son obligatorios. Ahora debe crear la tabla de destino con la estructura correcta. Los tipos de datos de los campos de la tabla deben reflejar los de la tabla donde se originó la copia de seguridad. En este ejemplo, restauraremos el order tabla del customer base de datos. Hay 2 campos en el order tabla, custNum con tipo de dato INT y orderName con tipo de datos VARCHAR(20); la estructura de su tabla será diferente:

    1
    2
    
    USE customer;
    CREATE TABLE order (custNum INT, orderName VARCHAR(20));
  6. Según su implementación, es posible que deba crear un nuevo usuario de MySQL o volver a crear un usuario anterior con acceso a la base de datos recién creada. El comando para crear un nuevo usuario de MySQL toma la siguiente forma:

    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  7. En el siguiente ejemplo, crearemos un usuario llamado customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  8. Ahora le daremos a customeradmin privilegios para acceder al customer base de datos. El comando para otorgar privilegios a una base de datos para un usuario específico toma la siguiente forma:

    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'

    A los efectos del siguiente ejemplo, daremos customeradmin acceso total al customer base de datos. Ejecute el siguiente comando en el cliente MySQL:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  9. Es posible que deba especificar diferentes concesiones de acceso según las demandas de su implementación. Consulte la documentación oficial de la declaración GRANT de MySQL. Una vez que se han creado la tabla y el usuario, podemos importar los datos de la copia de seguridad desde el archivo de copia de seguridad mediante LOAD DATA dominio. La sintaxis se parece a la siguiente:

    1
    
    LOAD DATA INFILE '[filename]' INTO TABLE [tableName];

    En el siguiente ejemplo, restauraremos datos de una tabla desde un archivo llamado customerOrderBackup.sql . Cuando al cliente MySQL se le da la ruta y el nombre del archivo después de INFILE , busca en el directorio de datos de MySQL ese archivo. Si el nombre de archivo customerOrderBackup.sql se proporcionó, la ruta sería /var/lib/mysql/customerOrderBackup.sql . Asegúrese de que el archivo que está tratando de restaurar exista, especialmente si MySQL genera File not found errores.

  10. To import the data from the customerOrderBackup.sql file located in /var/lib/mysql/ , issue the following command:

    1
    
    LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;

    This process can take anywhere from a few seconds to many hours depending on the size of your table. The duration of this operation depends on your system’s load and the size of the table that you are restoring. It may complete in a few seconds, or it may take many hours. After you have verified that your data was imported successfully, you can log out:

    quit
    

Más información

Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.

  • The Official MySQL Web Site
  • MySQL Database Backup Methods page
  • mysqldump Manual Page
  • Schedule Tasks With Cron
  • MySQL’s Grant Statement, Official Documentation