GNU/Linux >> Tutoriales Linux >  >> Linux

Copia de seguridad y restauración de la base de datos MySQL usando mysqlhotcopy


mysqlhotcopy es un script perl que viene con la instalación de MySQL. Esto bloquea la tabla, vacía la tabla y luego realiza una copia de la base de datos. También puede usar mysqlhotcopy para copiar automáticamente la copia de seguridad directamente a otro servidor usando scp
.

1. comando mysqlhotcopy:

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold

El ejemplo anterior realiza una copia de seguridad de sugarcrm, una base de datos MySQL en el directorio /home/backup/database.

  • –allowold:esta opción cambia el nombre de la copia de seguridad anterior a {datbase-name}_old antes de realizar una nueva copia de seguridad. En este ejemplo, si la copia de seguridad de sugarcrm ya existe en /home/backup/database, moverá la copia de seguridad anterior a /home/backup/database/sugarcrm_old antes de crear /home/backup/database/sugarcrm.
  • –keepold:esta opción le indica a mysqlhotcopy que conserve la copia de seguridad anterior (es decir, el renombrado _old) después de que se complete la copia de seguridad.

Vea la documentación de mysqlhotcopy usando perldoc como se muestra a continuación.

[local-host]# perldoc mysqlhotcopy

Las siguientes son las opciones disponibles que se pueden pasar al comando mysqlhotcopy.

Opción

Descripción

–addtodest No cambie el nombre del directorio de destino (si existe); simplemente agregue archivos a él
–permitido No cancelar si existe un objetivo; cámbiele el nombre agregando un _sufijo antiguo
–checkpoint=nombre_bd.nombre_tbl Insertar entradas de punto de control
–chroot=ruta Directorio base del chroot jail en el que opera mysqld
–depurar Escribir un registro de depuración
–ejecución en seco Reportar acciones sin realizarlas
–flushlogs Vaciar registros después de que todas las tablas estén bloqueadas
–ayuda Mostrar mensaje de ayuda y salir
–host=nombre_host Conéctese al servidor MySQL en el host dado
–mantenimiento No elimine el objetivo anterior (renombrado) cuando haya terminado
–sin índices No incluya archivos de índice completos en la copia de seguridad
–contraseña[=contraseña] La contraseña a utilizar al conectarse al servidor
–port=número_puerto El número de puerto TCP/IP a usar para la conexión
–silencio Guardar silencio excepto por errores
–regexp Copiar todas las bases de datos con nombres que coincidan con la expresión regular dada
–restablecer maestro Restablecer el registro binario después de bloquear todas las tablas
–restablecer esclavo Restablezca el archivo master.info después de bloquear todas las tablas
–socket=ruta Para conexiones a localhost
–tmpdir=ruta El directorio temporal
–usuario=nombre_usuario, El nombre de usuario de MySQL que se usará al conectarse al servidor
–versión Mostrar información de versión y salir

2. Salida del comando mysqlhotcopy:

El comando mysqlhotcopy anterior mostrará un resultado similar al siguiente.

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
Locked 98 tables in 0 seconds.
Flushed tables (`sugarcrm`.`accounts`, `sugarcrm`.`accounts_audit`, `sugarcrm`.`accounts_bugs`) in 0 seconds.
Copying 295 files...
Copying indices for 0 files...
Unlocked tables.
mysqlhotcopy copied 98 tables (295 files) in 0 seconds (0 seconds overall).

De forma predeterminada, la base de datos MySQL se encuentra en /var/lib/mysql/{db-name}. mysqlhotcopy realiza una copia de seguridad de los archivos de la tabla desde esta ubicación de base de datos predeterminada al directorio de copia de seguridad. El directorio de copia de seguridad /home/backup/database/sugarcrm, contendrá una copia exacta de todos los archivos del directorio real de la base de datos MySQL /var/lib/mysql/sugarcrm.

[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l
295
[local-host]# ls -1 /home/backup/database/sugarcrm | wc -l
295

Tenga en cuenta que cada tabla tiene tres archivos correspondientes con la extensión *.frm, *.MYD y *.MYI. El directorio de la base de datos también contiene un archivo db.opt que contiene el parámetro relacionado con la base de datos.

En el ejemplo anterior, puede ver que mysqlhotcopy realiza una copia de seguridad de 98 tablas de la base de datos sugarcrm. Entonces, el número total de archivos en el directorio de copia de seguridad =98 tablas * 3 + 1 archivo de configuración de db =296 archivos.

3. Restaurar desde mysqlhotcopy

Para restaurar la copia de seguridad desde la copia de seguridad de mysqlhotcopy, simplemente copie los archivos del directorio de copia de seguridad al directorio /var/lib/mysql/{db-name}. Solo para estar seguro, asegúrese de detener mysql antes de restaurar (copiar) los archivos. Después de copiar los archivos en /var/lib/mysql/{db-name}, vuelva a iniciar mysql.

4. Solución de problemas de mysqlhotcopy

¿Cómo resolver el problema No se puede ubicar DBD/mysql.pm? mysqlhotcopy es un script perl y requiere el módulo perl-DBD. Puede recibir el siguiente error al ejecutar mysqlhotcopy si el módulo perl-DBD no está instalado.

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains:
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8 .) at (eval 7) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: DBM, ExampleP, File, Proxy, Sponge.
at /usr/bin/mysqlhotcopy line 177

Asegúrese de instalar el paquete perl-DBD como se muestra a continuación.

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
Preparing...                ########################################### [100%]
1:perl-DBD-MySQL         ########################################### [100%]

¿Cómo resolver el problema con la instalación de perl-DBD? Al instalar perl-DBD, es posible que reciba el siguiente mensaje de error.

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages index using db3 -  (-30974)
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
error: Failed dependencies:
libmysqlclient.so.15 is needed by perl-DBD-MySQL-3.0007-1.fc6.i386
libmysqlclient.so.15(libmysqlclient_15) is needed by perl-DBD-MySQL-3.0007-1.fc6.i386

Descargue e instale MySQL-shared-compat desde mysql.com y esto debería resolver el error mencionado anteriormente al instalar el paquete perl-DBD.

[local-host]# rpm -ivh MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm
Preparing...                ########################################### [100%]
1:MySQL-shared-compat    ########################################### [100%]

¿Utiliza algún otro método para hacer una copia de seguridad o restaurar su base de datos MySQL? Por favor, deje sus comentarios.


Linux
  1. MySQL:cómo hacer una copia de seguridad (volcar) y restaurar una base de datos usando mysqldump

  2. Cómo hacer una copia de seguridad y restaurar la base de datos de Postgres

  3. Cómo hacer una copia de seguridad y restaurar la base de datos MySQL usando la línea de comandos

  4. Cómo hacer una copia de seguridad y restaurar la base de datos en PostgreSQL

  5. Importar una base de datos MySQL

Copia de seguridad y restauración de aplicaciones de Ubuntu usando Aptik

Cómo realizar una copia de seguridad y restaurar la base de datos MSSQL/MySQL en Plesk

¿Cómo realizar una copia de seguridad de la base de datos MySQL usando cPanel cron?

¿Cómo hacer una copia de seguridad de la base de datos MySQL usando cPanel?

¿Cómo restaurar la copia de seguridad de la base de datos usando JetBackup 5?

Cómo restaurar una base de datos MySQL desde .SQL Backup