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ミニプログラムで検索キーワードを強調表示するサンプルコード

推薦する

Dockerはnginxをデプロイし、フォルダとファイル操作をマウントします

この間、私は docker を勉強していたのですが、nginx をデプロイするときに行き詰まりました...

Windows 環境での MYSQL5.7 設定ファイルの場所のグラフィカル分析

1. MYSQLインストールディレクトリ次のようにコードをコピーします。 select @@bas...

Access_Tokenの統合管理を実現するミニプログラム開発

目次TOKEN タイマーリフレッシュ2. access_tokenの内部設計2.1 access_t...

動的および静的分離を実現する nginx のサンプルコード

1. nginxの動的と静的の分離の簡単な設定web1は静的サーバー、web2は動的サーバー、nod...

Vueプロジェクトでパラメータジャンプ機能を実装する

ページの説明:​ メインページ: 名前 —> shishengzuotanhuichaxun ...

埋め込みJavaScriptと外部リンクの基本的な応用方法

目次埋め込みJavaScriptと外部リンクの基本的な応用JavaScript の記述方法には、イン...

CSS3 タイムラインアニメーション

成果を達成する html <h2>CSS3 タイムライン</h2> <...

CSSフロートの特性についての簡単な説明

この記事では、CSS フロートの特徴を紹介します。皆さんと共有し、自分用のメモとして残したいと思いま...

Ubuntu Linux に Git と GitHub をインストールして使用する

Git 入門Git は、Linux(R) カーネル開発の管理を支援するために 2005 年に Lin...

MySQLデュアルマスター(マスターマスター)アーキテクチャ構成ソリューション

企業では、データベースの高可用性は常に最優先事項です。多くの中小企業は、MySQL マスター スレー...

太陽系の惑星のアニメーション効果を実現するHTML+CSS3コード

太陽系の 8 つの惑星(衛星を除く)のアニメーションを作成します。すべての惑星は太陽の周りを回ってい...

Docker共通コマンドの詳しい解説 Study03

目次1. ヘルプコマンド2. ミラーコマンド3. コンテナコマンド1. ヘルプコマンド1. 現在のD...

カルーセルの制作方法を実現するjs

この記事では、カルーセル画像の表示を実現するためのjsの具体的なコードを参考までに共有します。具体的...

ウェブサイトの画像にグレー効果を加える3つの方法

私はグレースケールの画像の方が芸術的に見えると思うので、いつもグレースケールの画像を好んで使っていま...

WeChatアプレットwebViewにH5を埋め込む方法の例

序文WeChat ミニプログラムは新しいオープン機能を提供します!ついにミニプログラムにHTMLペー...