Inhaltsverzeichnis

Percona xtrabackup

Allgemeines

xtrabackup gibt die "Defaults" aus
root@host01:~# xtrabackup --defaults-file=/etc/mysql/my.cnf --print-defaults | sed 's/[ ][-][-]/\n--/g'
...
--datadir=/var/lib/mysql
--socket=/var/run/mysqld/mysqld.sock
...
xtrabackup legt eine Kopie vom DataDir im PWD an
root@host01:~# xtrabackup --datadir=/var/lib/mysql/ --socket /var/run/mysqld/mysqld.sock --backup --galera-info --parallel 4
1. socat+xbstream auf dem Empfänger starten "host02"
root@host02:~# cd /var/lib/mysql/
root@host02:/var/lib/mysql# rm -fr *
root@host02:/var/lib/mysql# socat - TCP-LISTEN:12345 | xbstream -vx
2. xtrabackup auf dem Sender starten "host01"
root@host01:~# xtrabackup --datadir=/var/lib/mysql/ --socket /var/run/mysqld/mysqld.sock --backup --galera-info --parallel 4 --stream=xbstream | socat - TCP:host02:12345
3. prepare auf "host02"
# prepare the backup on db2
root@host02:~# xtrabackup --prepare --target-dir=/var/lib/mysql/
4. grastate.dat generieren auf "host02"
# recreate the grastate.dat file using the GTID in xtrabackup_galera_info file.
root@host02:/var/lib/mysql# echo "uuid: $(cat xtrabackup_galera_info)" > grastate.dat
root@host02:/var/lib/mysql# echo "safe_to_bootstrap: 0" >> grastate.dat
root@host02:/var/lib/mysql# cat grastate.dat
5. BIN-LOG-Dateien, an den richtigen Ort, verschieben
root@host02:/var/lib/mysql/port_13319/datadir# mv -v mysql-bin.* ../log_bin/
renamed 'mysql-bin.000007' -> '../log_bin/mysql-bin.000007'
renamed 'mysql-bin.index' -> '../log_bin/mysql-bin.index'
6. alte Dateien löschen
root@host02:/var/lib/mysql# rm backup-my.cnf xtrabackup_*
7. Rechte
root@host02:~# chown -R mysql:mysql /var/lib/mysql/
root@host02:~# ls -lha /var/lib/mysql/

xtrabackup installieren

Da xtrabackup kein Bestandteil von Ubuntu ist, muß das Percona-Repository eingebunden werden.
(Muß es sowieso, da eteleon den mySQL-Fork "Percona Server" verwendet.)

Percona GPG-Key

Um die Authentizität der Percona-Pakete zu verifizieren benötig aptitude deren öffentlichen GPG-Schlüssel.
http://www.percona.com/downloads/RPM-GPG-KEY-percona

RPM-GPG-KEY-percona
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.9 (GNU/Linux)
 
mQGiBEsm3aERBACyB1E9ixebIMRGtmD45c6c/wi2IVIa6O3G1f6cyHH4ump6ejOi
AX63hhEs4MUCGO7KnON1hpjuNN7MQZtGTJC0iX97X2Mk+IwB1KmBYN9sS/OqhA5C
itj2RAkug4PFHR9dy21v0flj66KjBS3GpuOadpcrZ/k0g7Zi6t7kDWV0hwCgxCa2
f/ESC2MN3q3j9hfMTBhhDCsD/3+iOxtDAUlPMIH50MdK5yqagdj8V/sxaHJ5u/zw
YQunRlhB9f9QUFfhfnjRn8wjeYasMARDctCde5nbx3Pc+nRIXoB4D1Z1ZxRzR/lb
7S4i8KRr9xhommFnDv/egkx+7X1aFp1f2wN2DQ4ecGF4EAAVHwFz8H4eQgsbLsa6
7DV3BACj1cBwCf8tckWsvFtQfCP4CiBB50Ku49MU2Nfwq7durfIiePF4IIYRDZgg
kHKSfP3oUZBGJx00BujtTobERraaV7lIRIwETZao76MqGt9K1uIqw4NT/jAbi9ce
rFaOmAkaujbcB11HYIyjtkAGq9mXxaVqCC3RPWGr+fqAx/akBLQ2UGVyY29uYSBN
eVNRTCBEZXZlbG9wbWVudCBUZWFtIDxteXNxbC1kZXZAcGVyY29uYS5jb20+iGAE
ExECACAFAksm3aECGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAcTL3NzS79
Kpk/AKCQKSEgwX9r8jR+6tAnCVpzyUFOQwCfX+fw3OAoYeFZB3eu2oT8OBTiVYu5
Ag0ESybdoRAIAKKUV8rbqlB8qwZdWlmrwQqg3o7OpoAJ53/QOIySDmqy5TmNEPLm
lHkwGqEqfbFYoTbOCEEJi2yFLg9UJCSBM/sfPaqb2jGP7fc0nZBgUBnFuA9USX72
O0PzVAF7rCnWaIz76iY+AMI6xKeRy91TxYo/yenF1nRSJ+rExwlPcHgI685GNuFG
chAExMTgbnoPx1ka1Vqbe6iza+FnJq3f4p9luGbZdSParGdlKhGqvVUJ3FLeLTqt
caOn5cN2ZsdakE07GzdSktVtdYPT5BNMKgOAxhXKy11IPLj2Z5C33iVYSXjpTelJ
b2qHvcg9XDMhmYJyE3O4AWFh2no3Jf4ypIcABA0IAJO8ms9ov6bFqFTqA0UW2gWQ
cKFN4Q6NPV6IW0rV61ONLUc0VFXvYDtwsRbUmUYkB/L/R9fHj4lRUDbGEQrLCoE+
/HyYvr2rxP94PT6Bkjk/aiCCPAKZRj5CFUKRpShfDIiow9qxtqv7yVd514Qqmjb4
eEihtcjltGAoS54+6C3lbjrHUQhLwPGqlAh8uZKzfSZq0C06kTxiEqsG6VDDYWy6
L7qaMwOqWdQtdekKiCk8w/FoovsMYED2qlWEt0i52G+0CjoRFx2zNsN3v4dWiIhk
ZSL00Mx+g3NA7pQ1Yo5Vhok034mP8L2fBLhhWaK3LG63jYvd0HLkUFhNG+xjkpeI
SQQYEQIACQUCSybdoQIbDAAKCRAcTL3NzS79KlacAJ0aAkBQapIaHNvmAhtVjLPN
wke4ZgCePe3sPPF49lBal7QaYPdjqapa1SQ=
=qcCk
-----END PGP PUBLIC KEY BLOCK-----
GPG-Key importieren

Schlüssel importieren:

# gpg --import RPM-GPG-KEY-percona
# gpg -a --export CD2EFD2A | apt-key add -

Schlüssel Aptitude bekanntmachen

# aptitude update
Repository einbinden

Und folgendes einfügen:

# echo "deb http://repo.percona.com/apt lucid main" >>  /etc/apt/sources.list.d/percona.list
# echo "deb-src http://repo.percona.com/apt lucid main" >>  /etc/apt/sources.list.d/percona.list

Aptitude mit neuem Repo bekanntmachen

# aptitude update
xtrabackup installieren
# aptitude install xtrabackup

xtrabackup einsetzen

Dump schreiben:

# innobackupex --stream=tar ./ | gzip -1 > db.tar.gz

Dump wieder einspielen:

# /etc/init.d/mysql stop
# cd /var/lib/mysql
# tar xvfzi /root/db.tar.gz
# innobackupex --use-memory=1G --apply-log --ibbackup xtrabackup ./
# chown -R mysql:mysql *
# /etc/init.d/mysql start

/etc/cron.d/xdump

PATH="/usr/sbin:/usr/bin:/sbin:/bin"

# Xtra-Backup
0 1   * * *   root    /root/bin/xdump.sh

/root/bin/xdump.sh

Dieses Skript wird vom Backup-Server aus aufgerufen.

#!/bin/bash

PATH="/usr/sbin:/usr/bin:/sbin:/bin"
BACKUPPFAD="/data/BACKUP"
WOCHENTAG="$(date +%u_%H)"

### Diese Datei muss auf dem DB-Host liegen, sonst funktioniert das Backup nicht
#------------------------------------------------------------------------------#
### cat /root/.my.cnf 
# # Automatically generated for Debian scripts. DO NOT TOUCH!
# [client]
# host     = localhost
# user     = root
# password = 'geheim'
# socket   = /var/run/mysqld/mysqld.sock
#------------------------------------------------------------------------------#


# Xtra-Backup

if [ -d ${BACKUPPFAD} ] ; then
      ssh root@xdb01 'innobackupex --slave-info --stream=tar ./ 2>/var/log/xdump.log | gzip -9' > ${BACKUPPFAD}/xdb01_${WOCHENTAG}.tgz
      scp root@xdb01:/var/log/xdump.log ${BACKUPPFAD}/
fi