mysqldumpを使用して500GBデータベースの高速バックアップと復元を増やす方法は?


10

500GBのデータベースAサイズがあります。データベースAのテーブルには、MyISAMテーブルとINNODBテーブルの両方が含まれています。MyISAMテーブルはマスターテーブルで、Innodbテーブルはメイントランザクションテーブルです。

mysqlダンプを使用してバックアップと復元を行うと、長時間または数日で終了します。

  • max_allowed_pa​​cket = 1G
  • foreign_key_checks = 0
  • auto_commit =オフ

1
mysqldumpユーティリティで--optを使用していることを確認したいだけです。これはリロード時の時間を大幅に節約できます。これがないと、mysqldumpはsqlファイルを行ごとに作成します。--optは、ロックを追加し、すべての作成オプションを有効にしてドロップおよび再作成し、一時的にキーを無効にして迅速な再読み込みを行い、最後にキーをオンに戻して、書き込みが完了した後にインデックスを再構築します。挿入で複数の行を連結して各ステートメントのファイルサイズと解析時間を削減し(最大70%)、-quickを有効にして、実行中のダンプDBに対する負荷を軽減します。ロード時間を80%短縮します
ppostma1 2015

回答:


5

ただし、このリンクでは、PerconaのXtraBackupも推奨されています。これは、より高速で、すでに使用されているテーブルをロックせず、復元の時間もありません。500 GBのデータの場合、既存のDBサーバーからのものではない場合にinnodb_file_per_tableモデルに変換したくない限り、Percona XtraBackupが迅速かつ効率的であることを好みます。以下のリンクは、続行する方法について説明します。

http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html


1
Percona Xtrabackupの問題は、データベースを復元するためにmysqldを停止する必要があることです。
dr_

2

mydumperをチェックしてください。mysqldumpよりもはるかに高速です。新しいmydumper 0.6.1リリースは、パフォーマンスと使いやすさの機能を提供します

こちらからダウンロードできます:https : //github.com/maxbube/mydumper

mydumperとは何ですか?どうして?

  • 並列処理(したがって、速度)とパフォーマンス(高価な文字セット変換ルーチン、効率的なコード全体を回避)
  • 出力の管理がより簡単に(テーブル用の個別ファイル、ダンプメタデータなど、データの表示/解析が容易)
  • 一貫性-すべてのスレッドにわたってスナップショットを維持し、正確なマスターおよびスレーブログの位置などを提供します。
  • 管理性-データベースとテーブルの包含と除外を指定するPCREをサポートします

1

問題は、mysqldumpの停止されたダンプファイルからより速く復元する方法に関するものであり、別のバックアップソリューションに関するものではないと思います。

これを行う方法の1つは、スキーマにテーブルのグループを作成し、グループごとに個別のDBユーザーを作成し、MySQL権限を使用して、1人を除くすべてのDBユーザーを使用してテーブルを挿入できないようにすることです。

これは、実証済みの高速でほぼ並行した手法ですが、500Gからの復元にかか​​る時間は100%確実ではありません。しかし、私見、あなたは何か平行するものが必要です。例については、以下のリンクを参照してください。

MySQLのSQLダンプ(mysqldump)からの高速な並列復元


1

innobackupexで次のことを試してください。

innobackupex --parallel=7 --rsync  /var/mysql/backup

並列処理番号は自由に変更できます。あなたがmyisamテーブルを持っていると述べたので、「rsync」パラメータはそれらのバックアップを高速化するのに役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.