Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Doc - How to use XtraBackup

MySQL - XtraBackupを使ったバックアップ&リストアについて

■ 前提環境

  • ScientificLinux 6.3 (x86_64)

  • MySQL 5.5.x (InnoDBデータベース)

  • Database

    • MYCONF: /etc/my.cnf
    • DATADIR: /var/lib/mysql
    • DBNAME: sample_db
  • XtraBackup実行ユーザー権限:

    • RELOAD
    • LOCK TABLES
    • REPLICATION CLIENT

■ XtraBackupのインストール

以下のgistからPerconaリポジトリの追加スクリプトを取得して実行
percona.repo.sh

以下のコマンドでXtraBackupをインストールする

sudo su -
yum --enablerepo=percona install percona-xtrabackup

■ XtraBackupでバックアップ (フルバックアップ on master)

which innobackupex

# first, prepare backup base.
sudo su -
/usr/bin/innobackupex \
--defaults-file=/etc/my.cnf \
--user=USER \
--password=PASSWORD \
--use-memory=${use_memory} \
/path/to/BACKUP-DIR

# secondary, run with --apply-log option for full backup.
/usr/bin/innobackupex \
--defaults-file=/etc/my.cnf \
--user=USER \
--password=PASSWORD \
--apply-log \
--use-memory=${use_memory} \
/path/to/BACKUP-DIR

■ XtraBackupでバックアップ (フルバックアップ on slave)

公式ドキュメント

  • 実行コマンド

which innobackupex

sudo su -
/usr/bin/innobackupex \
--defaults-file=/etc/my.cnf \
--user=USER \
--password=PASSWORD \
--apply-log \
--use-memory=${use_memory} \
--slave-info \
--safe-slave-backup \
/path/to/BACKUP-DIR

■ XtraBackupでバックアップ (インクリメンタル)

※初回はフルバックアップしておく必要あり
※初回のフルバックアップ後は、差分のみインクリメンタルバックアップが可能

公式ドキュメント

  • 実行コマンド

sudo su -
/usr/bin/innobackupex --incremental /data/backups --incremental-basedir=BASEDIR

■ XtraBackupでバックアップ (パーシャル)

※Database、またはテーブル単位でのバックアップが可能

公式ドキュメント

  • 実行コマンド

sudo su -
/usr/bin/innobackupex --databases="mydatabase.mytable mysql" /path/to/BACKUP-DIR

sudo su -
echo "mydatabase.mytable" > /tmp/tables.txt
/usr/bin/innobackupex --tables-file=/tmp/tables.txt /path/to/BACKUP-DIR

■ XtraBackupでバックアップ (ストリーム)

※バックアップをストリーム(STDOUT)に流すことが可能

公式ドキュメント

  • 実行コマンド

# xbstream
sudo su -
/usr/bin/innobackupex \
--compress \
--stream=xbstream \
/root/backup/ | ssh user@otherhost "xbstream -x -C /root/backup/"

# tar
sudo su -
/usr/bin/innobackupex --stream=tar ./ | ssh user@destination \ "cat - > /data/backups/backup.tar"

■ XtraBackupでリモートバックアップ

※リモートサーバーに直接バックアップすることが可能 (内部でscpを実行)

公式ドキュメント

  • 実行コマンド

sudo su -
/usr/bin/innobackupex \
--remote-host=REMOTEUSER@REMOTEHOST \
/path/IN/REMOTE/HOST/to/backup/ \
--tmpdir=/tmp --scpopt="-Cp -c arcfour"

■ XtraBackupで取ったバックアップからリストア

※既にdatadir(例: /var/lib/mysql)が存在している場合エラーになるので、その場合は退避しておくこと

  • 実行コマンド

which innobackupex

sudo su -
/usr/bin/innobackupex --copy-backup /path/to/BACKUP-DIR
chown -R mysql:mysql /var/lib/mysql

■ ■ XtraBackupオプション一覧


Have fun.

-- Masayuki IINO <msyk.iino@gmail.com>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment