GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So sichern Sie MySQL-Datenbanken mit mylvmbackup auf Debian Squeeze

mylvmbackup ist ein Perl-Skript zum schnellen Erstellen von MySQL-Backups. Dazu verwendet es die Snapshot-Funktion von LVM. Um eine Sicherung durchzuführen, erhält mylvmbackup eine Lesesperre für alle Tabellen und leert alle Server-Caches auf die Festplatte, erstellt einen Snapshot des Volumes, das das MySQL-Datenverzeichnis enthält, und entsperrt die Tabellen erneut. Dieser Artikel zeigt, wie man es auf einem Debian Squeeze-Server verwendet.

Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

Ich gehe davon aus, dass MySQL bereits auf Ihrem System eingerichtet ist und ausgeführt wird. Das System muss LVM verwenden, und das MySQL-Datenverzeichnis (/var/lib/mysql) sollte eine eigene LVM-Partition haben (obwohl dies optional ist).

Wenn Sie LVM-Partitionen mit LVM-Snapshots sichern (und wiederherstellen) gelesen haben, wissen Sie, dass LVM-Snapshots einige unbenutzte LVM-Partitionen für den Snapshot benötigen. Mein Testsystem hat eine zweite, derzeit ungenutzte Festplatte /dev/sdb, die von mylvmbackup verwendet wird, um ein temporäres logisches Volume für die Sicherung zu erstellen.

Dies ist meine aktuelle Situation:

[email protected]:~# df -h
Dateisystem            Größe  Verwendet 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,6 m 249 m 2%/dev
tmpfs 252m 0 252m 0%/dev/shm
/dev/sda1 471m 23m 425m 6%/boot
/dev/mapper/server1-mysql
8.9 G  170M  8.3G   2 % /var/lib/mysql
[email protected]:~#

Wie Sie sehen, habe ich zwei LVM-Partitionen, / und /var/lib/mysql (plus eine hier nicht gezeigte LVM-Swap-Partition). Die Volume-Gruppe heißt server1, und die Volumes heißen swap, root und mysql:

[email protected]:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               server1
  PV Size               29.5. Nutzbar 3,66 mb
Allocatable Ja (aber voll)
PE -Größe (KBYTE) 4096
Total PE 7557
Free PE 0
zugewiesene PE 7557
PV UUID 0gCmpE-FGel-9ayg-E2yg-kkEu-B72X-kFvaye

[E-Mail-geschützt]:~#


[E-Mail-geschützt]:~# vgdisplay
  --- Volumengruppe ---
  VG Name               server1
  System-ID
  Format                lvm2
  Metadatenbereiche        1
  Metadatensequenz   4
  VG Zugriff Lesen /Schreiben
VG -Status -Resizable
max LV 0
CUR LV 3
Öffnen Sie LV 3
max PV 0
cur Pv 1
Akt PV                1
  VG Größe             29,52 GB
PE-Größe 4,00 mb
Total PE 7557
Alloc PE /Größe 7557 /29.52 GB
Kostenlose PE /Größe 0/0
VG UUID PH5HPC-JQEP- BFYs-wWlA-hu03-qwuQ-0cNIu3

[E-Mail-geschützt]:~#


[E-Mail-geschützt]:~# lvdisplay
  -- - Logisches Volume ---
  LV Name                /dev/server1/swap
  VG Name                server1
  LV UIID                RCeLCK-MO5p-xoMq-SwTT-n2NV-GaP6-Write /Write /Gap6-D Zugriff auf Read /Schreiben
LV -Status verfügbar
#Öffnen Sie 2
LV -Größe 1,00 GB
aktuelles LE 256
Segmente 1
Allocation Inherit
lesen voraus Sektoren     auto
  - aktuell eingestellt auf     256
  Gerät blockieren           254:0

  --- Logisches Volume ---
  LV Name                /dev/server1/root
  VG Name                server1
  LV UUID     5Wen7N-XYMH-MQZ1-FKH5-0XXA-1Y2T-V3PYBB
LV-Schreibzugriff Read /Schreiben
LV-Status verfügbar
#Öffnen Sie 1
LV-Größe 19.53 GB
Strom LE             5000
  Segmente               1
  Zuordnung             übernehmen
  Read Ahead Sektoren     auto
  - derzeit eingestellt auf     256
  Gerät blockieren        >
  LV Name               /dev/server1/mysql
  VG Name                server1
  LV UID                wk8ybr6-fDl8-4tg3-tneT-dy1d Zugriff auf Read /Schreiben
LV -Status verfügbar
#Öffnen Sie 1
LV -Größe 8.99 GB
aktuelles LE 2301
Segmente 1
Allocation Inherit
lesen Voraus Sektoren     Auto
  - derzeit eingestellt auf     256
  Gerät blockieren           254:2

[email protected]:~#

Hier eine Übersicht meiner beiden Festplatten:

[email protected]:~# fdisk -l

Festplatte /dev/sda: 32,2 GB, 32212254720 Byte
255 Köpfe, 63 Sektoren/Spur, 3916 Zylinder
Einheiten =Zylinder 16065 * 512 =8.225.280 Byte
Plattenkennzeichner:0x0009353f

zu Start Start End Blocks Id-System
/ dev / sda1 * 1 62 83 497983+ Linux
/dev/sda2 63 3916 30957255 5 erweitert
/dev/sda5 63 3916 3095723+ 8E Linux LVM

disk/dev/sdb:10.7 gb, 10737418240 bytes
255 255 Köpfe, 63 Sektoren/Spur, 1305 Zylinder
Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes
Festplattenkennung: 0x00000000

Festplatte /dev/sdb enthält keine gültige Partitionstabelle
[E-Mail-geschützt]:~#

2 Vorbereiten von /dev/sdb

Bevor wir Snapshots auf /dev/sdb erstellen können, müssen wir es partitionieren (Linux LVM) und zu unserer Volumengruppe (server1) hinzufügen.

Ich erstelle jetzt die Partition /dev/sdb1 und füge sie der Volumengruppe server1 hinzu:

fdisk /dev/sdb

server1:~# fdisk /dev/sdb
Gerät enthält weder gültige DOS-Partitionstabelle, noch Sun, SGI oder OSF-Disklabel
Erstellen eines neuen DOS-Disklabels. Änderungen bleiben nur im Speicher,
bis Sie sich entscheiden, sie zu schreiben. Danach ist natürlich der vorherige
Inhalt nicht wiederherstellbar.


Die Anzahl der Zylinder für diese Festplatte ist auf 1305 gesetzt.
Da ist nichts ist falsch, aber das ist größer als 1024
und könnte in bestimmten Setups Probleme verursachen mit:
1) Software, die beim Booten ausgeführt wird (z. B. alte LILO-Versionen)
2) Boot- und Partitionierungssoftware von anderen Betriebssystemen
   (z. B. DOS FDISK, OS/2 FDISK)
Warnung: ungültiges Flag 0x0000 von Partitionstabelle 4 wird von w(rite) korrigiert

Befehl (m für Hilfe): <-- n
Befehl Aktion
   e   erweitert
   p   primäre Partition (1-4)
<-- p
Partitionsnummer (1-4): <-- 1
Erster Zylinder (1-1305, Standard 1):<-- [ENTER]
Unter Verwendung des Standardwerts 1
Letzter Zylinder oder +Größe oder + sizeM oder +sizeK (1-1305, Standard 1305):<-- [ENTER]
Using default value 1305

Command (m for help): <-- t
Ausgewählte Partition 1
Hex-Code (geben Sie L ein, um Codes aufzulisten): <-- 8e
Ch veränderter Systemtyp Partition 1 bis 8e (Linux LVM)

Befehl (m für Hilfe): <-- w
Die Partitionstabelle wurde geändert!

Aufruf von ioctl(), um die Partitionstabelle erneut zu lesen.
Datenträger werden synchronisiert.

pvcreate /dev/sdb1
vgextend server1 /dev/sdb1

Das war's - wir müssen keine Volumes darauf erstellen - das wird von mylvmbackup automatisch erledigt.

3 Installieren und Verwenden von mylvmbackup

Debian Squeeze stellt ein Paket für mylvmbackup bereit, daher können wir es einfach wie folgt installieren:

apt-get install mylvmbackup

Schau mal auf

man mylvmbackup

um zu lernen, wie man es verwendet (lesen Sie den Teil über InnoDB-Tabellen sorgfältig, wenn Sie InnoDB verwenden).

Die mylvmbackup-Konfigurationsdatei ist /etc/mylvmbackup.conf, sodass Sie Ihre Optionen entweder auf der Befehlszeile oder in dieser Datei angeben können (Befehlszeilenoptionen überschreiben die Optionen in /etc/mylvmbackup.conf).

Das Standardsicherungsverzeichnis ist /var/cache/mylvmbackup/backup (es sei denn, Sie geben einen anderen Speicherort an).

Ein Beispielbefehl zum Sichern von MyISAM-Tabellen wäre:

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

Und für InnoDB:

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

Stellen Sie sicher, dass Sie das richtige Passwort, den Volume-Gruppennamen (hier server1) und den Volume-Namen des Volumes eingeben, das die MySQL-Daten enthält (das Volume ist /dev/server1/mysql, daher lautet der Name mysql).

Wenn alles gut geht, sollten Sie viele Ausgaben sehen:

[email protected]:~# mylvmbackup --user=root --password=yourrootsqlpassword --mycnf=/etc/mysql/my.cnf --vgname=server1 --lvname=mysql --backuptype=tar
20120416 19:16:58 Info: Verbinde mit Datenbank...
20120416 19:16:58 Info: Leeren von Tabellen mit Lesesperre...
20120416 19:16:58 Info: Position einnehmen record...
20120416 19:16:58 Info:Snapshot wird erstellt...
Dateideskriptor 3 offen gelassen
  Logisches Volume "mysql_snapshot" erstellt
20120416 19:16:58 Info: Tabellen entsperren...
20120416 19:16:58 Info: Verbindung von Datenbank trennen...
20120416 19:16:58 Info: Schnappschuss bereitstellen...
20120416 19:16 :59 Info: Meine.cnf wird kopiert...
20120416 19:16:59 Info: Tatsächliche Sicherung erstellen...
20120416 19:16:59 Info: Tar-Archiv /var/cache/mylvmbackup erstellen /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
zurück up/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
Sicherung /mydb/sys_dep.frm
backup/mydb/isp_firewall.frm
backup/mydb/isp_monitor.MYD
backup/mydb/isp_is p_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.fr m
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: FERTIG
20120416 19:17:00 Info: Aufräumen ...
20120416 19:17:00 Info: LVM-Nutzungsstatistik:
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
  Logisches Volume "mysql_snapshot" erfolgreich entfernt
[email protected]:~#

Anschließend finden Sie die Sicherung im Verzeichnis /var/cache/mylvmbackup/backup (sofern Sie keinen anderen Speicherort angegeben haben):

ls -l /var/cache/mylvmbackup/backup
[E-Mail geschützt]:~# ls -l /var/cache/mylvmbackup/backup
insgesamt 248
-rw-r--r-- 1 root root 246847 2012-04-16 19 :17 backup-20120416_191658_mysql.tar.gz
[E-Mail-geschützt]:~#

Die tar.gz-Datei enthält zwei Verzeichnisse, backup (mit den Datenbanken und Tabellen aus /var/lib/mysql, die Sie nach einem Datenbankabsturz einfach zurückkopieren können - die Datenbank sollte dabei gestoppt werden) und backup-pos, das enthält Ihre my.cnf-Datei (ein Backup von /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
insgesamt 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#

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

Debian
  1. So verschlüsseln Sie Verzeichnisse/Partitionen mit eCryptfs auf Debian Squeeze

  2. So installieren Sie MySQL Server unter Debian 9

  3. So installieren Sie MySQL Workbench unter Debian 11

  4. So installieren Sie PHP-Fusion 9 auf Debian 8

  5. So installieren Sie LAMP unter Debian 8

So installieren Sie Magento unter Debian 11

Virtuelles Hosting mit vsftpd und MySQL auf Debian Squeeze

Wie man Verzeichnisse mit mod_authn_dbd und MySQL auf Apache (Debian 8) mit einem Passwort schützt

So installieren Sie Nginx mit PHP + MySQL (LEMP) unter Debian 9

So installieren Sie MySQL 8 auf Debian 10

So installieren Sie MySQL/MariaDB unter Debian 11