GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo hacer una copia de seguridad de las bases de datos MySQL con mylvmbackup en Debian Squeeze

mylvmbackup es un script de Perl para crear rápidamente copias de seguridad de MySQL. Utiliza la función de instantáneas de LVM para hacerlo. Para realizar una copia de seguridad, mylvmbackup obtiene un bloqueo de lectura en todas las tablas y vacía todos los cachés del servidor en el disco, crea una instantánea del volumen que contiene el directorio de datos de MySQL y desbloquea las tablas nuevamente. Este artículo muestra cómo usarlo en un servidor Debian Squeeze.

¡No emito ninguna garantía de que esto funcione para usted!

1 nota preliminar

Supongo que MySQL ya está configurado y ejecutándose en su sistema. El sistema debe usar LVM y el directorio de datos de MySQL (/var/lib/mysql) debe tener una partición LVM propia (aunque eso es opcional).

Si ha leído Copia de seguridad (y restauración) de particiones LVM con instantáneas LVM, sabe que las instantáneas LVM requieren alguna partición LVM no utilizada para la instantánea. Mi sistema de prueba tiene un segundo disco duro /dev/sdb actualmente sin usar que mylvmbackup usará para crear un volumen lógico temporal para la copia de seguridad.

Esta es mi situación actual:

[email protected]:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server1-root
                       20G  808M   18G   5% /
tmpfs                 252M     0  252M   0% /lib/init/rw
varrun                252M   56K  251M   1% /var/run
varlock               252M     0  252M   0% /var/lock
udev                  252M  2.6M  249M   2% /dev
tmpfs                 252M     0  252M   0% /dev/shm
/dev/sda1             471M   23M  425M   6% /boot
/dev/mapper/server1-mysql
                      8.9G  170M  8.3G   2% /var/lib/mysql
[email protected]:~#

Como puede ver, tengo dos particiones LVM, / y /var/lib/mysql (más una partición de intercambio LVM que no se muestra aquí). El grupo de volúmenes se denomina server1 y los volúmenes se denominan swap, root y mysql:

[email protected]:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               server1
  PV Size               29.52 GB / not usable 3.66 MB
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              7557
  Free PE               0
  Allocated PE          7557
  PV UUID               0gCmpE-FGel-9ayg-E2yg-kkEu-B72X-kFvaye

[email protected]:~#


[email protected]:~# vgdisplay
  --- Volume group ---
  VG Name               server1
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               29.52 GB
  PE Size               4.00 MB
  Total PE              7557
  Alloc PE / Size       7557 / 29.52 GB
  Free  PE / Size       0 / 0
  VG UUID               PH5Hpc-jqeP-BFYs-wWlA-hu03-qwuQ-0cNIu3

[email protected]:~#


[email protected]:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/server1/swap
  VG Name                server1
  LV UUID                RCeLCK-MO5p-xoMq-SwTT-n2NV-GaP6-GaemDp
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                1.00 GB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

  --- Logical volume ---
  LV Name                /dev/server1/root
  VG Name                server1
  LV UUID                5Wen7n-xYmh-MQz1-fKH5-0XXa-1y2t-V3PYbb
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                19.53 GB
  Current LE             5000
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:1

  --- Logical volume ---
  LV Name                /dev/server1/mysql
  VG Name                server1
  LV UUID                wk8yb6-fDl8-4tg3-tneT-1dDe-wWdy-AfGZ5I
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                8.99 GB
  Current LE             2301
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:2

[email protected]:~#

Aquí hay una descripción general de mis dos discos duros:

[email protected]:~# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0009353f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          62      497983+  83  Linux
/dev/sda2              63        3916    30957255    5  Extended
/dev/sda5              63        3916    30957223+  8e  Linux LVM

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table
[email protected]:~#

2 Preparando /dev/sdb

Antes de que podamos crear instantáneas en /dev/sdb, debemos particionarlo (Linux LVM) y agregarlo a nuestro grupo de volúmenes (servidor1).

Ahora crearé la partición /dev/sdb1 y la agregaré al grupo de volúmenes server1:

fdisk /dev/sdb

server1:~# fdisk /dev/sdb
El dispositivo no contiene una tabla de partición válida de DOS, ni una etiqueta de disco de Sun, SGI u OSF
Creación de una nueva etiqueta de disco de DOS. Los cambios permanecerán solo en la memoria,
hasta que decida escribirlos. Después de eso, por supuesto, el contenido anterior
no será recuperable.


El número de cilindros para este disco está establecido en 1305.
No hay nada mal con eso, pero esto es más grande que 1024,
y podría, en ciertas configuraciones, causar problemas con:
1) software que se ejecuta en el momento del arranque (por ejemplo, versiones antiguas de LILO)
2) software de arranque y partición desde otros sistemas operativos
   (por ejemplo, DOS FDISK, OS/2 FDISK)
Advertencia: indicador no válido 0x0000 de tabla de particiones 4 será corregido por w(rite)

Comando (m para ayuda): <-- n
Comando acción
   e   extendido
   p   partición principal (1-4)
<-- p
Número de partición (1-4): <-- 1
Primer cilindro (1-1305, predeterminado 1):<-- [ENTRAR]
Usar valor predeterminado 1
Último cilindro o tamaño o + tamañoM o +tamañoK (1-1305, predeterminado 1305):<-- [ENTRAR]
Usar valor predeterminado 1305

Comando (m para ayuda): <-- t
Partición seleccionada 1
Código hexadecimal (escriba L para listar códigos): <-- 8e
Ch Tipo de sistema modificado de partición 1 a 8e (Linux LVM)

Comando (m para ayuda):<-- w
¡La tabla de particiones se ha modificado!

Llamar ioctl() para volver a leer la tabla de particiones.
Sincronizar discos.

pvcreate /dev/sdb1
vgextend server1 /dev/sdb1

Eso es todo, no necesitamos crear ningún volumen en él, mylvmbackup lo hará automáticamente.

3 Instalación y uso de mylvmbackup

Debian Squeeze proporciona un paquete para mylvmbackup, por lo que simplemente podemos instalarlo de la siguiente manera:

apt-get install mylvmbackup

Echa un vistazo a

man mylvmbackup

para aprender a usarlo (lea atentamente la parte sobre las tablas de InnoDB si está usando InnoDB).

El archivo de configuración de mylvmbackup es /etc/mylvmbackup.conf, por lo que puede especificar sus opciones en la línea de comandos o en ese archivo (las opciones de la línea de comandos anularán las opciones en /etc/mylvmbackup.conf).

El directorio de copia de seguridad predeterminado es /var/cache/mylvmbackup/backup (a menos que especifique otra ubicación).

Un ejemplo de comando para hacer una copia de seguridad de las tablas de MyISAM sería:

mylvmbackup --user=root --password=yourrootsqlpassword --mycnf=/etc/mysql/my.cnf --vgname=server1 --lvname=mysql --backuptype=tar

Y para InnoDB:

mylvmbackup --user=root --password=yourrootsqlpassword --innodb_recover --skip_flush_tables --mycnf=/etc/mysql/my.cnf --vgname=server1 --lvname=mysql --backuptype=tar

Asegúrese de completar la contraseña correcta, el nombre del grupo de volúmenes (servidor1 aquí) y el nombre del volumen que contiene los datos de MySQL (el volumen es /dev/server1/mysql, por lo tanto, el nombre es mysql).

Si todo va bien, debería ver muchos resultados:

[email protected]:~# mylvmbackup --user=root --password=yourrootsqlpassword --mycnf=/etc/mysql/my.cnf --vgname=server1 --lvname=mysql --backuptype=tar
20120416 19:16:58 Info: Connecting to database...
20120416 19:16:58 Info: Flushing tables with read lock...
20120416 19:16:58 Info: Taking position record...
20120416 19:16:58 Info: Taking snapshot...
File descriptor 3 left open
  Logical volume "mysql_snapshot" created
20120416 19:16:58 Info: Unlocking tables...
20120416 19:16:58 Info: Disconnecting from database...
20120416 19:16:58 Info: Mounting snapshot...
20120416 19:16:59 Info: Copying my.cnf...
20120416 19:16:59 Info: Taking actual backup...
20120416 19:16:59 Info: Creating tar archive /var/cache/mylvmbackup/backup/backup-20120416_191658_mysql.tar.gz
backup/
backup/mydb/
backup/mydb/sys_modules.MYI
backup/mydb/dns_a.frm
backup/mydb/isp_dienste.MYD
backup/mydb/isp_server_ip.frm
backup/mydb/dns_spf.frm
backup/mydb/dns_a.MYI
backup/mydb/isp_fakt_dep.frm
backup/mydb/multidoc_dep.frm
backup/mydb/isp_isp_web_template.MYI
backup/mydb/sys_nodes.MYD
backup/mydb/listtype.MYD
backup/mydb/help_documents.MYD
backup/mydb/help_tickets.MYI
backup/mydb/doctype.frm
backup/mydb/login.MYI
backup/mydb/isp_com.frm
backup/mydb/help_documents.MYI
backup/mydb/isp_dep.MYD
backup/mydb/help_documents.frm
backup/mydb/isp_server.MYD
backup/mydb/isp_fakt_nodes.MYD
backup/mydb/sys_config.MYD
backup/mydb/dns_nodes.MYI
backup/mydb/sys_config.MYI
backup/mydb/isp_monitor.frm
backup/mydb/isp_server_ip.MYI
backup/mydb/isp_isp_datenbank.frm
backup/mydb/dns_secondary.frm
backup/mydb/isp_nodes.MYI
backup/mydb/dns_isp_dns.MYI
backup/mydb/help_nodes.frm
backup/mydb/isp_fakt_nodes.frm
backup/mydb/isp_server.MYI
backup/mydb/isp_isp_domain.frm
backup/mydb/dns_dep.frm
backup/mydb/session.frm
backup/mydb/isp_isp_cron.MYD
backup/mydb/isp_fakt_record.MYI
backup/mydb/isp_monitor.MYI
backup/mydb/isp_fakt_rechnung.MYI
backup/mydb/listtype.MYI
backup/mydb/isp_fakt_rechnung.MYD
backup/mydb/isp_traffic.frm
backup/mydb/isp_fakt_dep.MYI
backup/mydb/user_groups.frm
backup/mydb/isp_fakt_record.frm
backup/mydb/isp_fakt_artikel.MYD
backup/mydb/isp_htaccess.MYD
backup/mydb/sys_nodes.frm
backup/mydb/groups.frm
backup/mydb/login.MYD
backup/mydb/isp_firewall.MYD
backup/mydb/isp_server.frm
backup/mydb/help_tickets.frm
backup/mydb/multidoc_dep.MYD
backup/mydb/dns_nodes.frm
backup/mydb/dns_a.MYD
backup/mydb/sys_config.frm
backup/mydb/dns_isp_dns.frm
backup/mydb/dns_mx.MYI
backup/mydb/isp_isp_web.MYD
backup/mydb/isp_serverstatus.MYI
backup/mydb/isp_serverstatus.MYD
backup/mydb/sys_dep.MYD
backup/mydb/isp_isp_cron.MYI
backup/mydb/session.MYD
backup/mydb/isp_isp_admin.MYD
backup/mydb/dns_ptr.frm
backup/mydb/dns_mx.frm
backup/mydb/isp_isp_domain.MYD
backup/mydb/sys_dep.MYI
backup/mydb/dns_spf.MYD
backup/mydb/user_groups.MYD
backup/mydb/sys_news.frm
backup/mydb/isp_isp_actions.MYI
backup/mydb/doctype.MYD
backup/mydb/multidoc_nodes.frm
backup/mydb/isp_fakt_artikel.frm
backup/mydb/sys_news.MYD
backup/mydb/isp_traffic.MYD
backup/mydb/user_groups.MYI
backup/mydb/sys_news.MYI
backup/mydb/listtype.frm
backup/mydb/del_status.frm
backup/mydb/isp_fakt_nodes.MYI
backup/mydb/isp_isp_kunde.MYD
backup/mydb/isp_dienste.frm
backup/mydb/dns_mx.MYD
backup/mydb/doctype.MYI
backup/mydb/help_tickets.MYD
backup/mydb/dns_secondary.MYI
backup/mydb/dns_ptr.MYD
backup/mydb/isp_isp_reseller.frm
backup/mydb/isp_dienste.MYI
backup/mydb/isp_isp_datenbank.MYD
backup/mydb/isp_isp_actions.MYD
backup/mydb/isp_isp_web.frm
backup/mydb/db.opt
backup/mydb/isp_server_ip.MYD
backup/mydb/multidoc_nodes.MYI
backup/mydb/dns_nodes.MYD
backup/mydb/isp_fakt_rechnung.frm
backup/mydb/isp_isp_reseller.MYI
backup/mydb/isp_nodes.MYD
backup/mydb/isp_htaccess.MYI
backup/mydb/isp_isp_web_template.frm
backup/mydb/isp_isp_domain.MYI
backup/mydb/dns_secondary.MYD
backup/mydb/dns_dep.MYD
backup/mydb/isp_firewall.MYI
backup/mydb/help_nodes.MYI
backup/mydb/isp_isp_admin.frm
backup/mydb/isp_isp_cron.frm
backup/mydb/isp_isp_datenbank.MYI
backup/mydb/isp_traffic_ip.frm
backup/mydb/isp_fakt_dep.MYD
backup/mydb/isp_dep.MYI
backup/mydb/dns_dep.MYI
backup/mydb/isp_isp_reseller.MYD
backup/mydb/dns_isp_dns.MYD
backup/mydb/isp_fakt_artikel.MYI
backup/mydb/multidoc_dep.MYI
backup/mydb/multidoc_nodes.MYD
backup/mydb/del_status.MYD
backup/mydb/groups.MYD
backup/mydb/isp_isp_web_template.MYD
backup/mydb/isp_htaccess.frm
backup/mydb/isp_dep.frm
backup/mydb/isp_isp_web.MYI
backup/mydb/isp_isp_user.frm
backup/mydb/session.MYI
backup/mydb/isp_isp_admin.MYI
backup/mydb/isp_isp_kunde.MYI
backup/mydb/isp_isp_user.MYI
backup/mydb/isp_fakt_record.MYD
backup/mydb/isp_nodes.frm
backup/mydb/groups.MYI
backup/mydb/del_status.MYI
backup/mydb/dns_spf.MYI
backup/mydb/isp_com.MYD
backup/mydb/isp_isp_user.MYD
backup/mydb/dns_cname.frm
backup/mydb/isp_com.MYI
backup/mydb/dns_cname.MYD
backup/mydb/sys_modules.MYD
backup/mydb/isp_traffic_ip.MYI
backup/mydb/help_nodes.MYD
backup/mydb/sys_user.frm
backup/mydb/isp_traffic_ip.MYD
backup/mydb/sys_user.MYD
backup/mydb/sys_modules.frm
backup/mydb/isp_serverstatus.frm
backup/mydb/sys_dep.frm
backup/mydb/isp_firewall.frm
backup/mydb/isp_monitor.MYD
backup/mydb/isp_isp_kunde.frm
backup/mydb/dns_cname.MYI
backup/mydb/isp_isp_actions.frm
backup/mydb/sys_user.MYI
backup/mydb/sys_nodes.MYI
backup/mydb/dns_ptr.MYI
backup/mydb/isp_traffic.MYI
backup/mydb/login.frm
backup/ib_logfile0
backup/mysql_upgrade_info
backup/debian-5.0.flag
backup/mysql/
backup/mysql/host.MYD
backup/mysql/procs_priv.MYD
backup/mysql/time_zone_transition.MYD
backup/mysql/proc.MYI
backup/mysql/time_zone_name.frm
backup/mysql/time_zone_name.MYD
backup/mysql/help_relation.MYI
backup/mysql/user.MYD
backup/mysql/help_category.MYI
backup/mysql/time_zone.frm
backup/mysql/func.MYD
backup/mysql/help_category.MYD
backup/mysql/time_zone_transition.frm
backup/mysql/time_zone_name.MYI
backup/mysql/help_category.frm
backup/mysql/time_zone_leap_second.frm
backup/mysql/time_zone_transition.MYI
backup/mysql/help_relation.MYD
backup/mysql/host.frm
backup/mysql/db.frm
backup/mysql/db.MYI
backup/mysql/columns_priv.frm
backup/mysql/time_zone.MYI
backup/mysql/time_zone_leap_second.MYD
backup/mysql/func.frm
backup/mysql/columns_priv.MYI
backup/mysql/help_topic.MYD
backup/mysql/host.MYI
backup/mysql/proc.frm
backup/mysql/user.MYI
backup/mysql/help_topic.MYI
backup/mysql/help_relation.frm
backup/mysql/tables_priv.frm
backup/mysql/help_keyword.frm
backup/mysql/user.frm
backup/mysql/time_zone_transition_type.MYI
backup/mysql/procs_priv.frm
backup/mysql/help_topic.frm
backup/mysql/procs_priv.MYI
backup/mysql/time_zone_transition_type.MYD
backup/mysql/func.MYI
backup/mysql/proc.MYD
backup/mysql/tables_priv.MYD
backup/mysql/help_keyword.MYI
backup/mysql/help_keyword.MYD
backup/mysql/time_zone_leap_second.MYI
backup/mysql/tables_priv.MYI
backup/mysql/db.MYD
backup/mysql/time_zone_transition_type.frm
backup/mysql/time_zone.MYD
backup/mysql/columns_priv.MYD
backup/lost+found/
backup/ibdata1
backup/ib_logfile1
backup-pos/backup-20120416_191658_mysql.pos
backup-pos/backup-20120416_191658_my.cnf
20120416 19:17:00 Info: DONE
20120416 19:17:00 Info: Cleaning up...
20120416 19:17:00 Info: LVM Usage stats:
20120416 19:17:00 Info:   LV             VG      Attr   LSize Origin Snap%  Move Log Copy%  Convert
20120416 19:17:00 Info:   mysql_snapshot server1 swi-a- 5.00G mysql    0.00
  Logical volume "mysql_snapshot" successfully removed
[email protected]:~#

Luego puede encontrar la copia de seguridad en el directorio /var/cache/mylvmbackup/backup (a menos que haya especificado otra ubicación):

ls -l /var/cache/mylvmbackup/backup
[email protected]:~# ls -l /var/cache/mylvmbackup/backup
total 248
-rw-r--r-- 1 root root 246847 2012-04-16 19:17 backup-20120416_191658_mysql.tar.gz
[email protected]:~#

El archivo tar.gz contiene dos directorios, copia de seguridad (con las bases de datos y tablas de /var/lib/mysql que simplemente puede volver a copiar después de un bloqueo de la base de datos; la base de datos debe detenerse cuando haga esto) y copia de seguridad-pos que contiene su archivo my.cnf (una copia de seguridad de /etc/mysql/my.cnf):

cd /var/cache/mylvmbackup/backup
tar xvfz backup-20120416_191658_mysql.tar.gz
ls -l
[email protected]:/var/cache/mylvmbackup/backup# ls -l
total 256
drwxr-xr-x 5 mysql mysql   4096 2012-04-16 19:10 backup
-rw-r--r-- 1 root  root  246847 2012-04-16 19:17 backup-20120416_191658_mysql.tar.gz
drwxr-xr-x 2 root  root    4096 2012-04-16 19:24 backup-pos
[email protected]:/var/cache/mylvmbackup/backup#

4 Enlaces

  • mylvmbackup:http://www.lenzg.net/mylvmbackup/
  • MySQL:http://www.mysql.com/
  • Debian:http://www.debian.org/

Debian
  1. Cómo cifrar directorios/particiones con eCryptfs en Debian Squeeze

  2. Cómo instalar MySQL 8.0/5.7 en Debian 11/Debian 10

  3. Cómo instalar Mattermost con MySQL en Ubuntu 14.04 y Debian 8

  4. Cómo instalar el servidor MySQL en Debian 9

  5. Cómo instalar MySQL Workbench en Debian 10

Cómo instalar Magento en Debian 11

Alojamiento virtual con vsftpd y MySQL en Debian Squeeze

Cómo proteger directorios con contraseña con mod_authn_dbd y MySQL en Apache (Debian 8)

Cómo instalar Nginx con PHP + MySQL (LEMP) en Debian 9

Cómo instalar MySQL 8 en Debian 10

Cómo instalar MySQL/MariaDB en Debian 11