1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Percona XtraBackupを使用したバックアップの方法について

Last updated at Posted at 2023-10-28

概要

MySQLのバックアップには、一般的には、mysqldumpが使用されていると思います。
mysqldumpは論理バックアップですが、XtraBackupは物理バックアップを採用しているので、高速にバックアップ・リストアが行なえます。
今回は、XtraBackupを導入する手順を紹介します。

XtraBackupの注意点として、バックアップファイルのサイズがmysqldumpと比べて大きくなってしまうというデメリットがあります。

precona-xtrabackup公式ドキュメント

環境情報

  • Ubuntu 22.04.3
  • MySQL 8.0.34
  • XtraBackup 8.0.34-29

XtraBackupのインストール方法

まずは、XtraBackupのインストール手順です。今回ubuntu使用しているので、APTを使用した手順です。

1. リポジトリのインストール

$ wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

2. ダウンロードしたパッケージをdpkgでインストール

$ dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

3. リポジトリを有効化

$ percona-release enable-only tools release

4. パッケージ情報の更新

$ apt update

5. XtraBackupのインストール

$ apt install percona-xtrabackup-80

6. インストール後のバージョン確認

$ xtrabackup --version
xtrabackup version 8.0.34-29 based on MySQL server 8.0.34 Linux (x86_64) (revision id: 5ba706ee)

7. その他必要なものをインストール

$ apt install zstd qpress

バックアップ・リストア方法

以下主に使用するXtraBackupコマンドのオプションです。

オプション 内容
--backup ターゲットディレクトリにバックアップを作成するモード
--prepare バックアップからデータを復元するモード
--user MySQLユーザ名
--password MySQLパスワード
--socket ソケットファイルパス
--datadir データディレクトリのパス
--compress 出力データを圧縮するようにする
--compress-threads 圧縮に使用するワーカースレッドの数
--target-dir バックアップファイルの出力先
--stream バックアップファイルを指定された形式で標準出力にストリーミングする

バックアップ

1. 今回は、圧縮バックアップを取得してみます。圧縮には、複数スレッドを指定できます。

$ mkdir -p /data/compressed
$ xtrabackup --backup --stream=xbstream --compress --compress-threads=4 --target-dir=/data/compressed/ > /data/compressed/backup.xbstream

※別途ユーザー名、パスワード、ソケットファイルなどは、適宜指定してください。

2. 以下のようなログが出ていればバックアップは成功です!

2023-10-25T15:03:23.202581-00:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!

3. バックアップファイル出力先を確認してみます。

$ ls -lah /data/compressed/
total 1.6M
drwxr-xr-x 2 root root 4.0K Oct 25 15:04 .
drwxr-xr-x 3 root root 4.0K Oct 25 15:01 ..
-rw-r--r-- 1 root root 1.6M Oct 25 15:03 backup.xbstream

リストア

1. 事前準備(MySQLの停止)

$ systemctl status mysql
$ systemctl stop mysql
$ systemctl status mysql

2. 既存のデータディレクトリの移動と新規作成

$ mv /var/lib/mysql /tmp/
$ mkdir -p /var/lib/mysql

3. 以下コマンドで、リストア実行

$ xbstream -x < /data/compressed/backup.xbstream -C /var/lib/mysql -v
$ xtrabackup --decompress --target-dir=/var/lib/mysql --parallel=4
$ xtrabackup --prepare --target-dir=/var/lib/mysql

completedでOK!

2023-10-28T10:56:50.201398-00:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!

4. dataディレクトリのファイル権限変更

$ chown -R mysql: /var/lib/mysql
$ ls -lhart /var/lib/mysql

5. ステータス変更と変なログ出てないか確認

$ systemctl status mysql
$ systemctl restart mysql
$ systemctl status mysql
$ tail /var/log/mysql/error.log

問題なさそうです

$ systemctl status mysql
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-10-28 11:20:26 UTC; 1min 48s ago
    Process: 16346 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 16354 (mysqld)
     Status: "Server is operational"
      Tasks: 37 (limit: 2221)
     Memory: 356.9M
        CPU: 41.759s
     CGroup: /system.slice/mysql.service
             └─16354 /usr/sbin/mysqld

Oct 28 11:19:44 isoda systemd[1]: Starting MySQL Community Server...
Oct 28 11:20:26 isoda systemd[1]: Started MySQL Community Server.

さいごに

今回、XtraBackupを使用した具体的なバックアップ及びリストア方法について解説しました。パフォーマンスについては触れませんでしたが、後日記事にしようと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?