このページの翻訳:
- 日本語 (ja)
- English (en)
最近の更新
- 02 Apache2で自己認証ssl [中間証明書の整合性確認]
最近の更新
XtraBackupとは Percona が開発しているオープンソースのMySQLのバックアップツール
リストアが非常に早い
# rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
curl -L -O https://www.percona.com/downloads/XtraBackup/XtraBackup-2.0.8/RPM/rhel6/x86_64/percona-xtrabackup-20-2.0.8-587.rhel6.x86_64.rpm
# vi /etc/yum.repos.d/Percona.repo enabled = 1 ↓ enabled = 0
# yum --enablerepo=percona install xtrabackup
xtrabackupでバックアップ取得できるように変更する必要があります。
# vi /etc/mysql/conf.d/wsrep.cnf wsrep_sst_method=xtrabackup
# vi /etc/my.cnf [xtrabackup] user= root password= k3fFuGQUm
4.の設定を反映させる為に、一度再起動しておく必要があります。
# /etc/init.d/mysql stop # /etc/init.d/mysql start
※galera情報までバックアップする場合は、–galera–infoを付ける。
11 Galera同期(複数台構成)
# innobackupex --no-timestamp /backup/xtrabackup/base/
[node1]# innobackupex --user [root] --password [password] --no-timestamp /backup/xtrabackup/base/
フォルダへバックアップする場合
innobackupex --no-timestamp --incremental --incremental-basedir=/backup/xtrabackup/base/ /backup/xtrabackup/incremental_1/ innobackupex --no-timestamp --incremental --incremental-basedir=/backup/xtrabackup/base/ /backup/xtrabackup/incremental_2/
xbstreamでストリームして、gzip
innobackupex --stream=xbstream --incremental --incremental-basedir=/backup/xtrabackup/base/ /backup/xtrabackup/ | gzip - > incremental_1.xbstream.gz innobackupex --stream=xbstream --incremental --incremental-basedir=/backup/xtrabackup/base/ /backup/xtrabackup/ | gzip - > incremental_2.xbstream.gz
※5G超えの大きいファイルの場合「–multipart-chunk-size-mb=xx(MB)」を入れないとエラーになります。
# s3cmd put --multipart-chunk-size-mb=5120 /backup/xtrabackup/base_20140129.tar.gz s3://matsui-backup
増分をコピー
–redo-only
ログファイルを適応
–apply-log
innobackupex --apply-log --redo-only /backup/xtrabackup/base/
innobackupex --apply-log --redo-only /backup/xtrabackup/base/ --incremental-dir=/backup/xtrabackup/incremental_1/ innobackupex --apply-log --redo-only /backup/xtrabackup/base/ --incremental-dir=/backup/xtrabackup/incremental_2/
xbstreamを戻す場合
gzip -dc incremental_1.xbstream.gz |xbstream -x -C /backup/xtrabackup/incremental_1/
mysqlのディレクトリにデータが残っていると、エラーになるので移動するか、削除する。
# rm -rvf /var/lib/mysql/*
元に戻す
# innobackupex --copy-back /backup/xtrabackup/base/ # chown -R mysql:mysql /var/lib/mysql/
※一度片方で起動・停止後、rsyncしないとGaleraがコケます
mysql起動・停止
# /etc/init.d/mysql start # /etc/init.d/mysql stop
rsyncでコピー
# rsync -av -e ssh 192.168.20.248:/var/lib/mysql/ /var/lib/mysql/
両方のDBを起動後、同期
mysql> SET GLOBAL wsrep_cluster_address='gcomm://192.168.20.247:4567';
# innobackupex --galera-info --no-timestamp /backup/xtrabackup/base/ # cd /backup/xtrabackup/base/ # tar zcvf /backup/xtrabackup/base_`date +%Y%m%d`.tar.gz ./* # s3cmd put /backup/xtrabackup/base_`date +%Y%m%d`.tar.gz s3://matsui-backup # rm /backup/xtrabackup/base_`date +%Y%m%d`.tar.gz # innobackupex --galera-info --stream=xbstream --incremental --incremental-basedir=/backup/xtrabackup/base/ /backup/xtrabackup/ | gzip - > /backup/xtrabackup/incremental_`date +%Y%m%d`.xbstream.gz # s3cmd put /backup/xtrabackup/incremental_20140124.xbstream.gz s3://matsui-backup # rm /backup/xtrabackup/incremental_20140124.xbstream.gz
# cd /backup/xtrabackup # s3cmd ls s3://matsui-backup 2014-01-24 06:22 1994068 s3://matsui-backup/base_20140124.tar.gz 2014-01-24 06:26 318978 s3://matsui-backup/incremental_20140124.xbstream.gz cd /backup/xtrabackup s3cmd get s3://matsui-backup/base_20140124.tar.gz s3cmd get s3://matsui-backup/incremental_20140124.xbstream.gz mkdir base incremental tar zxvfC base_20140124.tar.gz ./base/ gzip -dc incremental_20140124.xbstream.gz | xbstream -x -C incremental/ innobackupex --apply-log --redo-only /backup/xtrabackup/base/ innobackupex --apply-log --redo-only /backup/xtrabackup/base/ --incremental-dir=/backup/xtrabackup/incremental xtrabackup --prepare --target-dir=/backup/xtrabackup/base/ rm -rvf /var/lib/mysql/* ; innobackupex --copy-back /backup/xtrabackup/base/ ; chown -R mysql:mysql /var/lib/mysql
mysqldump | xtrabackup | |
---|---|---|
バックアップ | 396分(6時間36分) | 248分(4時間8分) |
差分バックアップ | 無し | 65分(1時間5分) |
リストア | 1053分(17時間33分) | 196分(3時間16分) |
仮想 | KVM |
---|---|
Mem | 2GB |
CPU | 4 |
DB(92G)でテスト
# du -hs /var/lib/mysql/ 92G /var/lib/mysql/
# time mysqldump -u root -p`cat /root/.mysql` hogehoge | gzip >hogehoge.sql real 396m42.154s user 78m37.069s sys 14m19.542s
# gzip -d hogehoge.gz real 46m41.813s user 8m6.167s sys 3m49.137s
# time mysql hogehoge < hogehoge.sql real 1007m47.036s user 29m17.664s sys 2m41.508s
# time rsync -av -e ssh 192.168.20.117:/var/lib/mysql/ /var/lib/mysql/ real 387m21.156s user 42m45.663s sys 26m56.563s
# time innobackupex --no-timestamp /backup/xtrabackup/base/ real 92m31.669s user 4m29.978s sys 9m52.849s
# time tar zcvf /backup/xtrabackup/base_`date +%Y%m%d`.tar.gz ./* real 162m9.854s user 125m27.215s sys 16m42.856s # time tar zc ./base | ssh 192.168.31.145 "cat > /backup/xtrabackup/base.tar.gz" real 156m7.395s user 140m38.824s sys 32m38.748s
# time innobackupex --galera-info --stream=xbstream --incremental --incremental-basedir=/backup/xtrabackup/base/ /backup/xtrabackup/ | gzip - > /backup/xtrabackup/incremental_`date +%Y%m%d`.xbstream.gz real 67m0.590s user 4m40.698s sys 3m3.635s # time innobackupex --galera-info --stream=xbstream --incremental --incremental-basedir=/backup/xtrabackup/base/ /backup/xtrabackup/ | gzip | ssh 192.168.31.145 "cat > /backup/xtrabackup/incremental_`date +%Y%m%d`.xbstream.gz" real 65m55.382s user 4m33.291s sys 2m17.686s
# time tar zxvfC base_20140129.tar.gz ./base/ real 61m30.825s user 14m33.834s sys 7m48.791s
# time gzip -dc incremental_20140129.xbstream.gz | xbstream -x -C incremental/ real 0m1.563s user 0m0.052s sys 0m0.060s # time innobackupex --apply-log --redo-only /backup/xtrabackup/base/ real 0m3.919s user 0m0.175s sys 0m0.151s # time xtrabackup --prepare --target-dir=/backup/xtrabackup/base/ real 0m42.569s user 0m0.063s sys 0m10.285s # time rm -rvf /var/lib/mysql/* real 1m50.781s user 0m0.011s sys 0m4.002s # time innobackupex --copy-back /backup/xtrabackup/base/ real 196m55.366s user 0m2.264s sys 5m11.335s
xtrabackupがインストールされてなかったり、wsrep_sst_method=が間違ってる。
180828 10:18:22 [Note] WSREP: Running: 'wsrep_sst_xtrabackup-v2 --role 'joiner' --address '192.168.100.64' --auth 'root:mcaxP3bq' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --parent '9730'' sh: wsrep_sst_xtrabackup-v2: command not found
xtrabackupが入ってない場合
# yum -y install percona-xtrabackup-20
wsrep_sst_method=が間違っている
wsrep_sst_method=xtrabackup-v2
# find / -name wsrep_sst_xtrabackup*
/usr/bin/wsrep_sst_xtrabackup
# ln -s /usr/bin/wsrep_sst_xtrabackup /usr/bin/wsrep_sst_xtrabackup-v2
エラー
180827 15:57:48 [ERROR] WSREP: Failed to read 'ready <addr>' from: wsrep_sst_xtrabackup --role 'joiner' --address '10.100.0.43' --aut h 'root:gmocl-mysql' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --parent '32226' Read: 'Can't find nc in the path'
# yum -y install nc
エラー
nc: Protocol not available tar: これは tar アーカイブではないようです tar: 前のエラーにより失敗ステータスで終了します # nc -l 12345 nc: Protocol not available
# yum erase nc # wget http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm # rpm -ivh nc-1.84-22.el6.x86_64.rpm
which: no socat in
# yum install socat
innobackupex: got a fatal error with the following stacktrace: at /usr/bin/innobackupex line 4545. main::get_option('datadir') called at /usr/bin/innobackupex line 2450 main::copy_back(0) called at /usr/bin/innobackupex line 1578 innobackupex: Error: no 'datadir' option in group 'mysqld' in server configuration file '/etc/my.cnf' at /usr/bin/innobackupex line 4545.
/etc/my.cnfにdatadirが無いとこのエラーなる。
下記を入れてやればOK
/etc/my.cnf
[mysqld] datadir=/var/lib/mysql