データベースを削除して逃げる?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 のバイナリコンパイルとインストールに関するチュートリアル

推薦する

Vue はカードフリップカルーセル表示を実装します

Vueカードのフリップカルーセル表示、フリップ時にデータを切り替えながら、参考までに、具体的な内容は...

WeChatアプレットを少なく使う方法(最適な方法)

序文私は less/sass を書くことに慣れていますが、小さなプログラムを開発するときには、まだ ...

HTMLページのネイティブVIDEOタグはダウンロードボタン機能を隠します

Web プロジェクトを作成しているときに、紹介ビデオが別にある紹介ページに遭遇しました。この短いビデ...

js と jQuery での Ajax の使用例の詳細

目次ネイティブJS GETリクエストの送信方法投稿リクエストの送信方法パラメータ付きのGETリクエス...

Linux CRM デプロイメント コードの詳細な説明

Linuxの基本設定 Linux環境でpython3をコンパイルしてインストールする 1. Linu...

TypeScriptのインストールと使用方法と基本的なデータ型

最初のステップはTypeScriptをグローバルにインストールすることですnpmを使用してインストー...

HTML における li タグの水平配置の例

ほとんどのナビゲーション バーは、下の図に示すように水平に配置されていますが、これはどのように実現さ...

Vue でコンポーネントを一括インポート、登録、使用する方法

序文コンポーネントは、非常に頻繁に使用されるものです。多くの人は、コンポーネントを 1 つのファイル...

Linuxオペレーティングシステムは、タスクマネージャーの視覚化機能を実装するためにPythonを使用しています。

1. Pythonのインストール1. フォルダーを作成します。 mkdir python フォルダ...

WebWorkerはJavaScriptサンドボックスの詳細をカプセル化します

目次1. シナリオ2. IJavaScriptShadowboxを実装する2.1 メインスレッドの実...

Node.js を使用して png 画像に透明なピクセルがあるかどうかを判断する方法

背景PNG 画像は jpg 画像よりも多くのストレージスペースを占有しますが、PNG 画像の品質は大...

ウェブページの要素の検査とソースコードの表示の違いについて

Chrome ブラウザで Web ページを開くと、ページを右クリックすると 2 つの非常によく似たオ...

Linuxで$を#に変更する方法

このシステムでは、# 記号は root ユーザーを表し、$ 記号は通常のユーザーを表します。では、ど...

Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する

シナリオ: docker で tomcat を起動すると (Alibaba Cloud からダウンロ...

CentOS7 に MySQL をオフラインでインストールする詳細なチュートリアル

1. 元のmariadbを削除します。削除しないとmysqlをインストールできません。 mariad...