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 ...
root@host01:~# xtrabackup --datadir=/var/lib/mysql/ --socket /var/run/mysqld/mysqld.sock --backup --galera-info --parallel 4
root@host02:~# cd /var/lib/mysql/ root@host02:/var/lib/mysql# rm -fr * root@host02:/var/lib/mysql# socat - TCP-LISTEN:12345 | xbstream -vx
root@host01:~# xtrabackup --datadir=/var/lib/mysql/ --socket /var/run/mysqld/mysqld.sock --backup --galera-info --parallel 4 --stream=xbstream | socat - TCP:host02:12345
# prepare the backup on db2 root@host02:~# xtrabackup --prepare --target-dir=/var/lib/mysql/
# 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
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'
root@host02:/var/lib/mysql# rm backup-my.cnf xtrabackup_*
root@host02:~# chown -R mysql:mysql /var/lib/mysql/ root@host02:~# ls -lha /var/lib/mysql/
Da xtrabackup kein Bestandteil von Ubuntu ist, muß das Percona-Repository eingebunden werden.
(Muß es sowieso, da eteleon den mySQL-Fork "Percona Server" verwendet.)
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
-----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-----
Schlüssel importieren:
# gpg --import RPM-GPG-KEY-percona # gpg -a --export CD2EFD2A | apt-key add -
Schlüssel Aptitude bekanntmachen
# aptitude update
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
# aptitude install xtrabackup
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
PATH="/usr/sbin:/usr/bin:/sbin:/bin" # Xtra-Backup 0 1 * * * root /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