web-dev-qa-db-ja.com

たくさんのテーブルでエクストラバックアップの最終段階をスピードアップする方法は?

何千ものテーブルと重い書き込みワークロードを持つMySQL5.5データベースがあります。

Xtrabackupを使用してオンラインバックアップを作成する必要があります(ダウンタイムを最小限に抑えて本番サーバーからスレーブを作成します)が、問題は、バックアップの最終段階(読み取りロック付きのフラッシュテーブルを発行する場合)が完了するまでに非常に長い時間がかかることです。これは、何千ものfrmテーブル定義ファイルをコピーするためだと思います。どうしてもこのプロセスをスピードアップできますか?たとえば、テーブル構造が変更されていないことが確実にわかっている場合はどうでしょうか。

また、innobackupexには--rsyncというオプションがあり、おそらく役立つはずですが、innobackupexは現在非推奨であり、xtrabackupには何らかの理由でこのオプションがありません。

読み取りロック付きのフラッシュテーブルが有効である期間を短縮するための支援をいただければ幸いです。

1
Deinlandel

後世のために答える。 --rsyncを使用したInnobackupexがそのトリックを実行しました。ロック時間を数秒に短縮しました。

1
Deinlandel

--rsyncパラメーターを使用します。

驚いたことに、xtrabackupではIS availableどこにも表示されていないにもかかわらずこの記事の執筆時点でPerconaXtraBackup2.4ドキュメントにあります。間違っているドキュメント。 = /

パラメータをxtrabackupコマンドに渡すと、innobackupexの場合と同じように機能します。 innobackupexは現在、単なる「呼び出し元」シンボリックリンクであるため、これは理にかなっています。

私はあなたの自己回答で、あなたがinnobackupexの使用に「フォールバック」したことを見ました。ドキュメントによると、私はそれに対してお勧めします:

Percona XtraBackupバージョン2.3から、innobackupexはCで書き直され、xtrabackupへのシンボリックリンクとして設定されています。 innobackupexは、2.2バージョンと同様にすべての機能と構文をサポートしますが、現在は非推奨であり、次のメジャーリリースで削除される予定です。新機能の構文はinnobackupexに追加されず、xtrabackupにのみ追加されます。

それはisすでにoldatedであり、xtrabackupで利用できる新しい機能が不足しています。
例えば。 "--databases-exclude"

私のシナリオでは、バックアップはLOCKTABLESで6分を浪費していました。

180824 14:52:53 FLUSH NO_WRITE_TO_BINLOGTABLESを実行しています...
18082414:52:53読み取りロックを使用してフラッシュテーブルを実行しています...
(...)
180824 14:58:55 UNLOCKTABLESの実行
18082414:58:55すべてのテーブルのロックが解除されました

そして--rsyncを使用すると、1秒未満になりました。

180824 13:07:28 FLUSH NO_WRITE_TO_BINLOGTABLESを実行しています...
18082413:07:28読み取りロックを使用してFLUSHテーブルを実行しています...
18082413:07:28非InnoDBテーブルとファイルのバックアップを開始しています
180824 13:07:28 rsyncを次のように開始します:rsync-t。 -ファイル-
(...)
180824 13:07:28 UNLOCKTABLESの実行
18082413:07:28すべてのテーブルのロックが解除されました

私はあなたが抱えていたのとまったく同じ問題を抱えていましたが、あなたの質問と回答が見つかりました。一貫したドキュメントがないため、利用できないと思い、innobackupex以来、代替ソリューションを探すのに1日を無駄にしました。は古く、前述の--databases-excludeのように、必要な機能がいくつかありません。

この回答を投稿して、他の誰かがこれとまったく同じ問題を抱えていることに気付いた場合、ドキュメントに記載されていなくてもパラメータを使用できることがわかるようにします。

1
Vinícius M

--no-lockオプション がありますが、書き込み可能な非InnoDBテーブルがない場合にのみ使用でき、がない場合にのみ使用できます。 binlogの位置は気にしないでください。

--no-lockを使用できない場合は、レプリカをセットアップして、そこからバックアップを取ることをお勧めします。

ところで、--rsyncはとにかくここでは役に立ちません。

1
akuzminsky