3728
Comment:
|
← Revision 7 as of 2017-05-23 11:21:59 ⇥
3808
|
Deletions are marked like this. | Additions are marked like this. |
Line 84: | Line 84: |
=== Weitere Informationen === https://dvinfo.zeuthen.desy.de/Procedures/MySQL |
MySQL
MySQL Backup
-> feature mysql
Script /var/lib/mysql/mysql_backups verwendet für
- MyISAM Tabellen: hotcopy
- Innodb Tabellen: innobackupex (script, ruft xtrabackup)
wird als rpm installiert, zu finden unter http://ideenschmiede.lotum.de/2010/09/mysql-backups-mit-xtrabackup/
mysql_backups kennt die Optionen -n (Anzeige der Kommandos) -m (nur MyISAM DB backup) -i (nur InnoDB backup)
- schreibt die Dumps ins Verzeichnis /var/lib/mysql/dumps
- Logfile in /var/log/mysqlbackup
ist eine innodb Tabelle vorhanden, wird diese Datenbank mit innobackupex gesichert
noaction Modus: /var/lib/mysql/mysql_backups -n
/var/lib/mysql/mysql_backups -i sichert nur innodb DBs
Restore von MyISAM Datenbanken
- erfolgt auf dem mysql Server durch einfaches Umkopieren der Dumpfiles in das Datenbankverzeichnis
- die Dumpfiles müssen vom Backup geholt werden, wenn die aktuellen (nächtlichen) Dumps zu neu sind
- danach sollten fehlende Transaktionslogs appliziert werden, um die DB zu einem exakten Zeitpunkt zu restaurieren
- der mysql Server ist dazu zu stoppen
- die aktuelle Datenbank wird überschrieben und kann nicht wieder hergestellt werden
# entweder im Backup vorhandene Dumps anzeigen, <datenbankname> ist durch DB name zu ersetzen dsmc q b -inactive -sub=yes /var/lib/mysql/dumps/<datenbankname> # und restore der Dumps nach /tmp (statt <mm/dd/yy> gewünschtes Datum einsetzen) cd /tmp dsmc rest -inactive -pitdate=<mm/dd/yy> "/var/lib/mysql/dumps/<datenbankname>/*" -sub=yes /tmp/ # oder alternativ letzten Dump zum restaurieren benutzen cd ~mysql/dumps # Rückkopieren der Dumps service mysql stop cp -a <datenbankname> ~mysql/mysqldb service mysql start # Anwenden zusätzlicher Transaktionslogs mit mysqlbinlog, falls exakter Zeitpunkt gewünscht
Restore von InnoDB Datenbanken
- sollte auf test mysql server erfolgen
- man kann nicht eine innodb Datenbank zurückspeichern
- deshalb
- Backup /var/lib/mysql/dumps/innodb/innodb.tar.gz vom gewünschten Datum aus Backup holen und auspacken
- Transaktionslog applizieren
- Testserver stoppen,
- Umkopieren, Rechte und SELinux Attribute anpassen
- Testerver starten
- evtl. Änderungen vom binlog des Zielservers anwenden
- Datenbank dumpen
- File im Ziel MySQL Server anwenden
tar -tizvf /var/lib/mysql/dumps/innodb/innodb.tar.gz mkdir /tmp/innodb cd /tmp/innodb tar -xizvf /var/lib/mysql/dumps/innodb/innodb.tar.gz # bzw. vom TSM recoverten File # Abfrage mit dsmc q b -inactive -su=yes /var/lib/mysql/dumps/innodb/innodb.tar.gz innobackupex --defaults-file=/root/.myxtrabackup.conf --apply-log /tmp/innodb # auf Test-server: service mysqld stop # ibdata und DB Files nach ~mysql/mysqldb kopieren: drwxr-xr-x 2 root root 4096 Jun 24 15:55 cecdb drwxr-xr-x 2 root root 4096 Jun 24 15:55 cecdb2 -rw-r--r-- 1 root root 5242880 Jun 24 15:57 ib_logfile0 -rw-r--r-- 1 root root 5242880 Jun 24 15:56 ib_logfile1 -rw-rw---- 1 mysql mysql 10485760 Jun 24 15:57 ibdata1 # auf Test-Server: service mysqld start # auf dem Ziel-Server für gewünschte Binlogs (evtl. auch aus Backup holen) mysqlbinlog ~mysql/binlogs/binlog.000008 >/tmp/statements.sql mysqlbinlog ~mysql/binlogs/binlog.000009 >>/tmp/statements.sql ... # /tmp/statements auf Test-Server kopieren und anwenden mysql -e "source /tmp/statements.sql" # Dump auf Test-server erstellen mysqldump --opt <database> >/tmp/db.dump # Datenbank auf Zielserver aus dem Dump neu erzeugen mysql < /tmp/db.dump