データベースを削除して逃げる?xtraback を使用して MySQL データベースをバックアップする方法

データベースを削除して逃げる?xtraback を使用して MySQL データベースをバックアップする方法

1. mysqldump バックアップ方法では論理バックアップが使用されます。最大の欠点は、バックアップとリカバリの速度が遅いことです。50G のデータベースの場合、この速度は許容範囲ですが、データベースが非常に大きい場合は、バックアップに mysqdump を使用することはあまり適していません。 。

現時点では、非常に便利で効率的なツールが必要です。xtrabackはその1つで、innodb hotbackupの無料バージョンとして知られています。

xtraback の機能は次のとおりです。

  • バックアッププロセスは高速かつ信頼性が高い
  • バックアッププロセスは進行中のトランザクションを中断しません
  • 圧縮などの機能によりディスク容量とトラフィックを節約する機能
  • 自動バックアップ検証
  • 高速な復元速度

2. xtrabackをインストールする 1) xtrabackをダウンロードする

https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz をダウンロードしてください

2) 解凍

[root@master ~]# tar zxf percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz

3) 解凍ディレクトリに入り、bin以下のすべてのプログラムを/usr/binにコピーします。

[root@master ~]# cd percona-xtrabackup-2.4.4-Linux-x86_64/ [root@master percona-xtrabackup-2.4.4-Linux-x86_64]# cp bin/* /usr/bin/

Xtraback は、innodb および xtradb テーブルのホット バックアップ用のツールです。オンライン ホット バックアップをサポートし、innodb テーブルをロックせずにバックアップできます。ただし、このツールは myisam エンジン テーブルを操作することはできません。

4) 関連プラグインをインストールする

yum インストール perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64 perl-Digest-MD5 –y

5) percona-toolkitをダウンロードしてインストールする

https://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm で実行します。 
[root@master ~]# rpm -ivh percona-toolkit-2.2.19-1.noarch.rpm 警告: percona-toolkit-2.2.19-1.noarch.rpm: ヘッダー V4 DSA/SHA1 署名、キー ID cd2efd2a: NOKEY 準備中... ###################################### [100%] 更新/インストール中...  
1:percona-toolkit-2.2.19-1 ###################################### [100%] 

3. バックアップ

解決策 1: xtrabackup フルバックアップ + binlog 増分バックアップ (bin-log を有効にする必要があります)

バックアップディレクトリを作成する

[root@master ~]# mkdir -p /opt/mysqlbackup/{full,inc}

まず、テスト データベースを作成し、テスト データベースに tb1 という名前のテーブルを作成し、次のように tb1 テーブルに 3 行のデータを挿入します。

データを挿入した後、次のように完全バックアップを実行します。

[ルート@マスター ~]# 
innobackupex --user=root --password=pwd123 /opt/mysqlbackup/full/

上記の完全バックアップ パスは、先ほど作成した mysqlbackup ディレクトリ内にあります。

バックアップが成功したことを証明する次のプロンプトが表示されます

バックアップファイルは次のとおりです。

これまでのところ、完全バックアップは完全に成功しており、その後、いくつかのデータがMySQLデータベースに挿入され、増分バックアップが実行されます。

完全バックアップ後のデータベースの変更のバイナリ ログ増分バックアップを作成するには:

完全バックアップ中の binlog ログの位置を表示します。

上記は、完全バックアップが完了した後の位置です。ここでデータを挿入すると、この位置から開始されます。これをこの位置からの増分バックアップと呼びます。ここで、次のように tb1 テーブルにデータを挿入します。

増分バックアップバイナリファイル:

[ルート@マスター ~]
# mysqlbinlog --start-position=1279 /usr/local/mysql/data/mysql-bin.000001 > /opt/mysqlbackup/inc/`date +%F`.sql

バックアップが完了したら、次のようにデータベースの損傷と誤った削除をシミュレートします。

[root@master ~]# rm -rf /usr/local/mysql/data/*

データベースの回復

まず、完全バックアップを復元します。つまり、tom1/2/3 のデータは次のようになります。

[root@master ~]#innobackupex --copy-back /opt/mysqlbackup/full/2017-11-21_11-47-42/

復元が成功したことを証明する次のプロンプトが表示されます

データが DATADIR ディレクトリに復元された後、すべてのデータ ファイルの所有者とグループが mysql などの正しいユーザーであることを確認する必要があります。そうでない場合は、mysqld を起動する前にデータ ファイルの所有者とグループを変更する必要があります。のように:

# chown -R mysql:mysql /usr/local/mysql/data/

復元が成功したかどうかを確認するためにMySQLサービスを再起動します。

上記から、フルバックアップが正常に復元されたことがわかります。フルバックアップ中に 3 行のデータを挿入したので、次のように増分バックアップを復元します。

復元中に大量のバイナリ ログが生成されないようにするには、復元前にバイナリ ログを一時的に閉じます。

次に、復元が成功したかどうかを確認します。

この時点で、すべてのデータが正常に回復されました。binlog+xtrabackup ツールによって実装された上記のバックアップは少し面倒なようです。面倒だと感じる場合は、次の解決策2を参照してください。

2. xtrabackup フルバックアップ + xtrabacup 増分バックアップ

テスト環境の準備

テストデータベースを作成し、数行のデータを入力するテーブルを作成します。

上記の操作の説明:

テストライブラリが作成され、テストライブラリ内にxxテーブルが作成され、tom1とtom2のデータがxxテーブルに挿入されました。

次に、次のように完全バックアップを実行します。

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --user=root --password='pwd123' --popt=3306 --backup --target-dir=/opt/mysqlbackup/full/full_incre_$(日付 +%Y%m%d_%H%M%S)

上の黒い部分が保管場所です。以下はバックアップが成功したことを示しています

この時点で、再度データを挿入し、増分バックアップを実行します

最初の増分バックアップは次のとおりです。

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --user=root --password='pwd123' --popt=3306 --backup --target-dir=/opt/mysqlbackup/inc/inc_incre_$(date +%Y%m%d_%H%M%S) --incremental-basedir=/opt/mysqlbackup/full/full_incre_20171121_123051/ 

バックアップが成功したことを示す次のメッセージが表示されます。

上記のバックアップパスは/opt/mysqlbackup/inc/です。バックアップされたファイルを表示できます。

次に、xxテーブルに再度データを挿入し、2回目の増分バックアップを実行します。

2 回目の増分バックアップは次のとおりです。

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --user=root --password='pwd123' --popt=3306 --backup --target-dir=/opt/mysqlbackup/inc/inc_incre_$(date +%Y%m%d_%H%M%S) --incremental-basedir=/opt/mysqlbackup/inc/inc_incre_20171121_124604/

バックアップが成功したことを証明する次のプロンプトが表示されます

段階的回復のためのエクストラバカップ

効果を得るためにxxテーブルを削除しました

次のようにして完全バックアップの復元を開始します。

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --prepare --user=root --password="pwd123" --apply-log-only --target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051 

2. 最初の増分を復元する(tom3)

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --prepare --user=root --password="pwd123" --apply-log-only --target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051 --incremental-dir=/opt/mysqlbackup/inc/inc_incre_20171121_124604/ 

3. 2番目の増分を復元する

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --prepare --user=root --password="pwd123" --apply-log-only --target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051 --incremental-dir=/opt/mysqlbackup/inc/inc_incre_20171121_125202 

ライブラリ全体を復元する

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --prepare --user=root --password="pwd123" --target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051 

mysqlデータベースを停止 - rsyncデータファイルを開始

[root@master ~]# systemctl stop mysqld [root@master ~]# cd /opt/mysqlbackup/full/full_incre_20171121_123051/ [root@master full_incre_20171121_123051]# rsync -rvt --exclude 'xtrabackup_checkpoints' --exclude 'xtrabackup_logfile' ./ /usr/local/mysql/data/ 

MySQLのアクセス権限を付与する

[root@master ~]# chown -R mysql:mysql /usr/local/mysql/data/

復元が成功したかどうかを確認するために、mysql サービスを起動します。

要約する

上記は、xtraback を使用して MySQL データベースをバックアップする方法です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

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

<<:  ページング効果を実装するミニプログラム

>>:  Linux での MySql centos7 のバイナリコンパイルとインストールに関するチュートリアル

推薦する

最も完全なpackage.json分析

目次1. 概要2. 名前フィールド3. バージョンフィールド4. 説明フィールド5. キーワードフィ...

ES6 の Set および WeakSet コレクションの詳細な説明

目次セットは値が重複しない特別なコレクションです。セットコレクション基本API独自の価値判断セットを...

ウェブページ作成のヒントのまとめ

序文この記事は主に、日常の Web ページ制作で遭遇する問題解決スキルの一部をまとめ、皆さんの参考と...

Vue.js スロットにおけるスコープ付きスロットの使用法の詳細な説明

目次スロットなしVue2.x スロットスロット付き名前付きスロットスロット属性なしスロットの簡単なサ...

MySQLは遅いSQLを開始し、原因を分析します

ステップ1. MySQLスロークエリを有効にする方法1: 設定ファイルを変更するWindows: W...

JavaScript と CSS を最適化してウェブサイトのパフォーマンスを向上させる

<br /> 第 1 部と第 2 部では、Web サイトのパフォーマンス、ページ コンテ...

シェルで文字列内のスペースや指定された文字を削除する方法

インターネット上には、正しい方法であっても、使用しても正しい結果が得られない方法が数多くあります。正...

MySQL 8.0.17 のインストールと設定のグラフィックチュートリアル

この記事は、参考のためにMySQL 8.0.17のインストールと設定のグラフィックチュートリアルを記...

MySQLのファジークエリの要約

1. 一般的な使用法: (1)%で使用する% は 1 つ以上の文字のワイルドカードを表します。たとえ...

Linux の一般的なコマンド chmod を使用して、ファイルの権限 777 と 754 を変更します。

よく使用されるコマンドは次のとおりです。 chmod 777 文件或目錄例: chmod 777 /...

静的ページと動的ページの実行メカニズムの説明

1. 静的ページとは、Web ページ内に HTML タグのみが含まれるページです。WEB 開発者がこ...

myBatis で条件を削除する際のスプライシング問題を解決する

私は今日、mybatis を学び、データベースに対していくつかの簡単な追加、削除、変更、クエリを実行...

CSSを使用して特別なロゴやグラフィックを実装する

1. はじめに画像は多くのスペースを占め、画像の数が増えるほど管理が難しくなるため、シンプルなラベル...

Ubuntu 18.04 で apt ソースを Alibaba Cloud ソースに変更する詳細なプロセス

目次序文: Ubuntu 18.04 は apt ソースを Alibaba Cloud ソースに変更...

JavaScript で Priority Queue を実装する

目次1. 優先キューの紹介2. 優先キューのカプセル化1. 優先キューの紹介通常のキューに要素が挿入...