XtraBackup ユーティリティを使用した MySQL バックアップの作成

Percona XtraBackup ホットデータベースバックアップ用のユーティリティです MySQL.

データのバックアップを作成するとき、テーブルはロックされず、システムは制限なく動作し続けます。

エクストラバックアップ 2.4 テーブルのバックアップコピーを作成できる InnoDBXtraDB и MyISAM サーバー上で MySQL 5.11、5.5、5.6、および 5.7、サーバー上でも ペルコナ のために MySQL с XtraDB.

一緒に働くには MySQL 8.x バージョンを使用する必要があります エクストラバックアップ 8.x。 この記事では以下についてのみ説明します エクストラバックアップ 2.4。

主な利点 エクストラバックアップ このユーティリティは、高負荷のバックアップコピーを作成するのに適しているということです。 サーバー、またトランザクション数が少ないシステムにも適しています。

MySQL データベースの合計サイズが大きい場合 (数十ギガバイト)、標準ユーティリティ mysqldump バックアップ コピーをすぐに作成することはできず、ダンプの復元には時間がかかります。

インストール

インストール エクストラバックアップ リポジトリから apt ペルコナ。

次のコマンドを順番に実行します。

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

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

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2。 インストール後、コマンドを実行します xtrabackup -v。 したがって、ユーティリティがサーバー上で正しく動作することを確認することが重要です。 その結果、次のようなものが画面に表示されます。

xtrabackup: 認識されたサーバー引数: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect - innodbflushlogattrxcommit=0xtrabackup バージョン 2.4.20 (MySQL サーバー 5.7.26 に基づく) Linux (x8664) (リビジョンID: c8b4056)

XtraBackup ユーティリティを使用した MySQL バックアップの作成

アクセス権、許可、特権 

XtraBackup は次のことができる必要があります。

  • MySQL サーバーに接続します。

  • ディレクトリへのアクセス権がある データディレクトリ

  • バックアップ コピーを作成する場合、指定されたパラメータへの書き込み権限が必要です ターゲットディレクトリ カタログ。

データディレクトリとは何ですか?

データディレクトリ データベースサーバーが置かれているディレクトリです MySQL データはここに保存されます。すべてのデータベース、すべてのテーブルはここにあります。ほとんどのディストリビューションでは Linux デフォルトでは、このディレクトリは / var / lib / mysql.

target-dir ディレクトリとは何ですか?

ターゲットディレクトリ - これはバックアップが保存されるディレクトリです。

データベース ユーザーには、バックアップするテーブルとデータベースに対する次のアクセス権が必要です。

  • テーブルのリロードとロック

  • レプリケーションクライアント

  • テーブルスペースの作成

  • プロセス

  • スーパー

  • CREATE

  • INSERT

  • SELECT

設定 

設定 エクストラバックアップ 標準の MySQL オプションと同じように動作するオプションを使用して実行されます。

これはどういう意味ですか?

構成パラメータは、コマンドラインまたは DBMS 構成ファイルで指定できます。たとえば、 / etc / my.cnfの.

XtraBackup ユーティリティが起動後にパーティションを読み取る [mysqldを] и [エクストラバックアップ] MySQL 設定ファイルから。 これは、バックアップのたびにパラメータを手動で指定することなく、ユーティリティが DBMS の設定を使用できるようにするために行われます。

たとえば、値は データディレクトリ およびいくつかのパラメータ InnoDB DBMS の構成から XtraBackup を取得します。

XtraBackup が機能するようにするには、セクションにあるパラメータをオーバーライドする必要があります。 [mysqldを]、セクションの構成ファイルでそれらを指定するだけです。 [エクストラバックアップ]。 後で読み込まれるため、優先度が高くなります。

パラメータを追加する必要はありません my.cnf。 必要なパラメータはすべてコマンド ラインで指定できます。 通常、セクションに便利に配置できるのはこれだけです [エクストラバックアップ] あなたの my.cnf パラメータです ターゲットディレクトリ、デフォルトでは、バックアップが配置されるディレクトリを指定します。 ただし、これはオプションです。

バックアップコピーのあるディレクトリへのパスを指定する例 my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

バックアップスクリプト

次のスクリプトを使用してバックアップを作成できます。

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

スクリプトの実行中に何が起こるのでしょうか?

まず最初に、バックアップ コピーを保存するディレクトリをクリア (削除) します。

rm -rf /mysql/backup.

次に、ユーティリティを使用して、 エクストラバックアップ バックアップコピーを作成して保存します /mysql/バックアップ/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

以前は、MySQL でユーザーを作成しました xtrabackup 必要な権限を備えています。 パラメータの使用 target-dir バックアップを保存するディレクトリを指定します。

重要なポイント!

次のスクリプト行に注目してください。

xtrabackup --prepare --target-dir=/mysql/backup

カタログデータ /mysql/バックアップ 調理するまで一貫性がありません。 

実際、ファイルのコピー中に変更が発生する可能性があります。 手術 xtrabackup --prepare --target-dir=/mysql/backup バックアップ データを長期間にわたって完全に一貫性のあるものにします。

データ準備操作はどのマシンでも実行できます。 ソース DBMS が配置されているサーバー上でこれを行う必要はありません。 バックアップをターゲット サーバーにコピーし、そこで準備することができます。

最後に、バックアップを配置するアーカイブを作成します。

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

バックアップの復元 

バックアップをターゲット サーバーに復元する前に、データは準備フェーズを通過する必要があります。 これを行う方法については上記を参照してください。

データ復旧プロセスは非常に簡単です。 アーカイブからバックアップを抽出し、次のデータを置き換える必要があります。 データディレクトリ.

datadir内のデータを置き換えるにはどうすればよいですか?

XNUMX つのオプションを考えてみましょう。

オプション1

ユーティリティを使用する エクストラバックアップ。 オプションを指定する必要があります --コピーバック

以下のコマンドはバックアップを転送します データディレクトリ ターゲットサーバー:

xtrabackup --copy-back --target-dir=/mysql/backup

オプション2

ユーティリティを使用せずに別の方法で実行することもできます エクストラバックアップ.

バックアップをコピーするだけです。 データディレクトリ。 これを行うことができます cp または rsync.

バックアップを復元する手順は、結局はディレクトリの内容を置き換えるだけであることを理解することが重要です。 データディレクトリ.

ターゲット サーバーでバックアップの復元を開始する前に、次のことを行う必要があります。

  • MySQLサーバーを停止します。

  • 空のフォルダ データディレクトリ または、その内容を別の場所に移動します。 カタログ データディレクトリ 空でなければなりません。

データ移行完了後、 データディレクトリ MySQLサーバーが起動できるようになりました。

使用材料

公式ドキュメント ペルコナ エクストラバックアップ.

出所: habr.com

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster