== 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 === * 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 >/tmp/db.dump # Datenbank auf Zielserver aus dem Dump neu erzeugen mysql < /tmp/db.dump }}}