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

推薦する

LinuxサーバにおけるNginxとApacheの共存の実装方法の分析

この記事では、Linux サーバー上で Nginx と Apache の共存を実装する方法について説...

Linux で FastDFS を使用してイメージ サーバーを構築する

目次サーバー計画1. システムコンポーネントをインストールする2. fastdfsをインストールする...

Faint: 「Web2.0 を使用して標準に準拠したページを作成する」

今日、ある人がウェブサイト開発プロジェクトについて話をしてくれました。具体的な要件について話すと、「...

Centos Docker ブリッジ モードでホスト Redis サービスにアクセスできないというトラブルシューティングの経験

背景:以前、コンテナ内のホストが提供する Redis サービスにアクセスする必要があるプロジェクトを...

MySQL 5.7.23 解凍バージョンのインストールチュートリアル(画像とテキスト付き)

毎回インストールチュートリアルを探すのは面倒なので、後で確認できるように手順をバックアップします。解...

Linux仮想マシンをWiFiに接続する方法

生活の中で、インターネットはどこにでもあります。インターネットを通じてゲームをしたり、テレビ番組を見...

Bツリーの特性の紹介

B ツリーは一般的なデータ構造です。彼と一緒にB+ツリーがあります。ここで、概念を明確にする必要があ...

Linux カーネル デバイス ドライバー Linux カーネル 基本メモの概要

1. Linuxカーネルドライバモジュールの仕組み静的ロードでは、ドライバモジュールをカーネルにコン...

docker で zabbix_agent をデプロイする方法

zabbix_agent のデプロイメント:推奨事項: zabbix_agent は docker-...

sbinディレクトリを生成せずにNginxをインストールするソリューション

エラーの説明: 1. Linux (CentOS 7 64) システムに Nginx (1.18.0...

Webデザインの経験: Webコードを効率的に書く

本来、この第 7 章では、デザインにおけるレイヤーと空間テクニックについて深く議論するはずです。しか...

プレーンな JS オブジェクトの代わりに Map を使用する場合

目次1. マップは任意のタイプのキーを受け入れます2. マップにはキー名に関する制限はありません3....

MySQL 8.0の落とし穴の詳細な説明

本日、MySQL 8.0 をアップデートしました。最初の問題: Navicatがデータベースに接続で...

HTMLの表のtbodyは上下左右にスライドできます

テーブル ヘッダーが固定されている場合は、それを 2 つのテーブルに分割する必要があります。1 つの...

MySQL 文字列分割の例 (区切り文字なしの文字列抽出)

区切り文字なしの文字列抽出質問の要件データベース内のフィールド値:実装効果: 1行のデータを複数行に...