xtrabackup による MySQL データベースのバックアップと復元

xtrabackup による MySQL データベースのバックアップと復元

mysqldump バックアップは、その独自の特性 (テーブルのロック、基本的に挿入スクリプトまたはテキストのバックアップ、差分バックアップのサポートなし) により、リアルタイム要件が高い状況には適していません。
Xtrabackup は、mysqldump の上記の問題のいくつかを解決できるため、実稼働環境でより多く使用されるようになります。
この記事では、MySQL データベースでの Xtrabackup のバックアップおよび復元操作を簡単にテストします。

まずは機能を整えてから細かい部分に取り組むという方針のもと、細かい部分に立ち入ることなく、ざっくりとしたバックアップとリストアを実施しました。

インターネット上には xtrabackup に関する記事が多数あります。環境が異なるため、その一部では xtrabackup 構成ファイルの構成が必要です。
しかし、xtrabackup 2.4.7 バージョンでテストする場合は、構成ファイルが必要です。バージョンごとに詳細が異なる場合がございますので、資料を参照する際はバージョンや環境にご注意ください。

innobackupex バックアップ

xtrabackupとMySQLのバージョンは次のとおりです

完全バックアップ

次のようにコードをコピーします
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock /data/backup

例:

1.--defaults-file=/etc/my.cnf ファイルが先頭にある必要があります
2. --user=root、--password=root、--use=***、--password=*** の間にはスペースが必要です。

スクリーンショットに示すように、完全バックアップが完了しました

スクリーンショットに示されているように、完全バックアップでは日付 (年-月-日-時-分-秒、yyyy-MM-dd_hh-mm-ss) で名前が付けられたファイルが作成されます。完全バックアップによって生成されるメモリは、実際にはバックアップされたデータベースのデータ ファイルのコピーと、バックアップ中に生成された情報です。たとえば、xtrabackup_checkpoints は現在の完全バックアップに関する情報です。この情報は差分バックアップにとって非常に重要です。

差分バックアップ

差分バックアップが差分を実現できる理由は、フルバックアップに依存しているからです。フルバックアップをベースに、フルバックアップ後の差分バックアップを行います。
完全バックアップ後にバックアップする場所を決定する方法は、完全バックアップ後の xtrabackup_checkpoints ファイルによって異なります。
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/ 2017-06-22_13-40-29

スクリーンショットに示すように、差分バックアップが完了しました

指定された完全バックアップ ファイルが正しくない場合、または差分バックアップ中に完全バックアップ ファイルが指定されていない場合、xtrabackup は xtrabackup_checkpoints ファイルが見つからないというメッセージを表示します。

innobackupex 復元

準備

1. フルバックアップ、つまりフルバックアップアプリケーション (--apply-log) ログを復元します。nobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --socket=/var/lib/mysql/mysql.sock /data/backup/2017-06-22_13-40-29

2. 増分バックアップを完全バックアップに個別に適用します innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --socket=/var/lib/mysql/mysql.sock --incremental /data/backup/2017-06-22_13-40-29 --incremental-basedir=/data/backup/2017-06-22_13-41-48

差分バックアップが複数ある場合は、差分バックアップを完全バックアップに個別に適用します。

回復期

1. すべての差分バックアップが完全バックアップに適用された後、復元された差分バックアップを元のデータ ディレクトリにコピーします。デフォルトでは、データ パスにファイルがある場合、コピーは失敗し、データ ファイル パス内のファイルをクリアする必要があります。
innobackupex --コピーバック /data/backup/2017-06-22_13-40-29
スクリーンショットに示すように、コピーバックを完了します

2. MySQLサービスを開始する

mysqlサービスを起動すると起動に失敗する

エラーログ(起動エラー情報)を確認します。mysql5.7yum によってインストールされるデフォルトのエラーログは /var/log/mysqld.log にあり、デフォルトではスクロールしません。つまり、すべてのエラーメッセージがこのファイルに記録されます。

データファイルが復元されたら、データファイルパスに読み取りおよび書き込み権限を付与する必要があります。ここでは、データファイルパス777を直接承認します。chmod -R 777 /var/lib/mysql
次に、mysql サービスを開始すると、正常に起動します。

xtrabackupex はまだ作業を始めたばかりなので、疑問点がまだたくさん残っています。時間があるときに一つずつ検証していきます。

1. 単一データベース(テーブル)のバックアップとリストアをどのように実装しますか? 結局のところ、実際の環境では、各データベースのバックアップの頻度と方法(バックアップ計画)は異なりますか?

2. フルバックアップ + 差分バックアップを使用し、バイナリログを組み合わせてタイムポイントベースの復元を実行するにはどうすればよいでしょうか?

3. バックアップ ファイルの有効性を確認するにはどうすればよいでしょうか?

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Percona XtraBackup のインストールと使用方法のチュートリアル: MySQL のバックアップと復元
  • Xtrabackup ツール(MySQL DBA に必須のツール)を使用してバックアップと復元を行う
  • mysql xtrabackup バックアップとリカバリの実装の共有
  • Xtrabackup を使用した MySQL バックアップ プロセスの詳細な説明
  • MySQLはバックアップと復元操作にxtrabackupを使用します
  • xtrabackup を使用して MySQL バックアップを実装する
  • Xtrabackup を使用して MySQL データをバックアップするためのスクリプトの作成に関するチュートリアル
  • innobackupex と xtrabackup を使用して MySQL のビッグデータをバックアップおよび復元するチュートリアル
  • Xtrabackup を使用して MySQL をバックアップおよび復元する方法

<<:  Gitlab実践チュートリアルでは、関連する設定操作にgit configを使用します。

>>:  WeChatミニプログラムで検索キーワードを強調表示するサンプルコード

推薦する

2012年のベストWebデザイン作品レビュー[パート1]

新年の初めに、友人の健康と2013年が素晴らしい年となることを心からお祈りいたします。この記事では、...

MySQL で SQL 文の実行時間を表示する方法

目次1. 初期SQLの準備2.MysqlはSQL文の実行時間をチェックします3. さまざまなクエリの...

Ubuntu 20.04 aptの国内ソースを変更する方法

UPD 2020.2.26 現在、Ubuntu 20.04 LTSはまだリリースされていないため、チ...

初心者でもjsのtypeofとinstanceofの違いを理解できます

目次1. 型2. インスタンス3. 違い1. 型typeof 演算子は、評価されていないオペランドの...

ポータルサイトのフォーカス画像のデザインに関するいくつかの結論

フォーカス画像は、画像、テキスト、動的なインタラクティブ効果を統合したコンテンツを表示する方法です。...

JavaScriptの記事では、Webフォームの操作方法を説明します。

1. はじめに先ほど、ウェブページの急速な発展について紹介しました。今回は、より深い内容についてお...

効率化に役立つ 20 の CSS コーディングのヒント (並べ替え)

この記事では、主要な CSS ウェブサイトで推奨されている 20 個の便利なルールとベスト プラクテ...

MySQL 8.0.19 インストール詳細チュートリアル (Windows 64 ビット)

目次MySQLを初期化するMySQL サービスをインストール + MySQL サービスを開始MySQ...

jQueryのチェーンプログラミングスタイルの詳細な例

チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...

MySQL における一般的な高度な SQL ステートメント

MySQL 高度な SQL ステートメント kgc を使用します。 テーブルlocation(Reg...

子コンポーネントで vue activated を使用する詳細

ページ: ベース: <テンプレート> <div class="タブコンテ...

Mysql マスタースレーブ同期 Last_IO_Errno:1236 エラー解決

Mysql マスタースレーブ同期の Last_IO_Errno:1236 エラーの原因は何ですか? ...

CentOS8 システムをベースにした Gitlab を構築するために Docker を使用する詳細なチュートリアル

目次1. Dockerをインストールする2. GitLabをインストールする3. GitLabを初期...

HTMLを圧縮しない理由はいくつかある

理由は簡単です。 HTML ドキュメントでは、複数の空白文字は 1 つの空白文字と同等です。つまり、...

エンタープライズプロダクション MySQL 最適化入門

Oracle、DB2、SQL Server などの他の大規模データベースと比較すると、MySQL に...