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

推薦する

Zabbix は MySQL インスタンス メソッドを監視します

1. 監視計画監視項目を作成する前に、何を監視するのか、どのように監視するのか、監視データをどのよう...

Vueはechart円グラフの凡例のパーセンテージを表示するメソッドを実装します

この記事では主に、echart を使用してパーセンテージを表示する Vue の円グラフデータ部分を紹...

WeChatアプレットは固定ヘッダーとリストテーブルコンポーネントを実装します

目次必要:機能ポイントレンダリング実装のアイデア具体的なコード(react\taro3.0)特定のコ...

ウェブページ作成時に標準 HTML コードを使用する際のポイント

多くの Web サイト デザイナーが犯す最も一般的な間違いは、Web ページが IE で正常に表示さ...

Vuexの補助関数の使い方

目次マップ状態マップゲッターマップミューテーションマップアクション複数のモジュールマップ状態 ...

WeChatアプレットでvantフレームワークを使用するための具体的な手順

目次1. アプレットのプロジェクト ディレクトリを開き、ファイルの場所を開きます。 2. プロジェク...

autoconfを使用してMakefileを生成し、プロジェクトをコンパイルする手順

序文Linux では、コンパイルとリンクには Makefile を使用する必要がありますが、適切な ...

Linux CentOS 6.5 のアンインストール、tar、および MySQL のインストールチュートリアル

システム提供のMySQLをアンインストールする1. MySQLがシステムにインストールされているかど...

mysql バックアップ スクリプト mysqldump の使い方の詳細な説明

この記事では、参考までにMySQLバックアップスクリプトを紹介します。具体的な内容は次のとおりです。...

jsのイベントループ機構の解析

序文ご存知のとおり、JavaScript は本質的にシングルスレッドですが、ブラウザは非同期リクエス...

MySQL可視化ツールNavicatへの接続方法

Navicatをインストールした後次のエラーが発生する場合があります: Client does no...

JavaScript でアルゴリズムの複雑さを学ぶ方法

目次概要Big O 表記法とは何ですか?オー(1)の上) (n^2) O(logn) ですの上!)結...

WeChatアプレットはシンプルな計算機を実装する

参考までにWeChatアプレットで書かれた簡単な計算機です。具体的な内容は次のとおりです。 jisa...

英語の単語の出現頻度を数えるtrコマンドの魔法

置換を削除したり文字列を削除したりできる tr コマンドは、誰もがよく知っています。 英語では、英語...

CentOS8 ネットワークカード設定ファイル

1. はじめにCentOS8 システムの更新、新しいバージョンは人々に非常に快適に感じさせます。 こ...