このセクションでは,MySQL企业备份製品によるバックアップ操作のパフォーマンスの考慮事項について説明します。バックアップ手順を最適化し,チューニングする場合,原始パフォーマンス(バックアップの完了にかかる時間)とデータベースサーバー上のオーバーヘッドの量の両方を測定します。バックアップパフォマンスを測定する場合,次を考慮します。
バックアップ手順によって課せられる制限。たとえば,バックアップを 8 時間おきに取得する場合、バックアップが終了するまで 8 時間かからないようにする必要があります。
ネットワクおよびストレジンフラストラクチャによって課せられる制限。たとえば,特定のストレージデバイスに多くのバックアップを収納する必要がある場合、バックアッププロセスが遅くなっても、圧縮バックアップを使用する方がよいと考えられます。
バックアップ時間とリストア時間のトレドオフ。一連のオプションによって,バックアップがやや遅くなるが,リストアを大幅に速くすることができる場合,それらのオプションを選択してもよいと考えられます。リストアプロセスのパフォマンス情報にいては,セクション7.2 "リストアパフォマンスの最適化"を参照してください。
フルまたは増分バックアップ
フルバックアップの取得後,変更されたデータのみがバックアップされる増分バックアップを実行することによって,後続のバックアップを迅速に実行できます。増分バックアップの場合,mysqlbackupに,——增量
または——incremental-with-redo-log-only
オプションを指定します。これらのオプションにいては,セクション5.1.8 "増分バックアップオプション"を参照してください。増分バックアップのバックアップおよび適用段階の使用方法の指示にいては,セクション3.3.2 "増分バックアップの作成"および例4.3 "完全バックアップへの増分バックアップの適用"を参照してください。
圧縮バックアップ
バックアップデータを別のサーバーに転送する前に圧縮することは,バックアップが行われるデータベースサーバーへの追加のCPUオーバーヘッドを伴いますが,バックアップデータの最終の宛先となるサーバー上のネットワークトラフィックが減少し,ディスクI / Oも減少します。圧縮を使用するかどうかを決定する場合,データベースサーバーの負荷,ネットワークの帯域幅,およびデータベースと宛先サーバーの相対容量を考慮します。圧縮バックアップの作成にいては,セクション3.3.3 "圧縮バックアップの作成"およびセクション5.1.7 "圧縮オプション"を参照してください。
圧縮には,バックアップパフォマンスとリストアパフォマンスのトレドオフがあります。緊急時に,バックアップデータをリストアする前に圧縮解除するために必要な時間が許容できないことがあります。また,データベースサーバーに圧縮されたバックアップと圧縮解除後のデータの両方を保持するための十分な空き領域がない場合に,ストレージの問題が発生することもあります。そのため,データが重要であるほど,圧縮を使用しないことを選択して,リストアプロセスが可能な限り高速で信頼性が高くなるように,低速で大規模なバックアップを許容することも考えられます。
単一ファ邮箱ルバックアップ
単一ファイルバックアップ自体は,出力ファイルのディレクトリツリーを生成する従来のバックアップの種類より,必ずしも高速ではありません。そのパフォーマンス上の利点は,それを実行しない場合に,バックアップデータを単一の出力ファイルに組み合わせて,それを別のサーバーに転送するなど,連続して実行する必要がありそうなさまざまなステップを組み合わせることにあります。単一ファルバックアップに関するオプションにセクション5.1.1.5 "単一ファ邮箱邮箱ルバックアップの操作"および,使用方法の指示にいてはセクション3.3.5 "単一ファereplicationルバックアップの作成"を参照してください。
InnoDB構成オプション設定
MySQL 5.5以前ではMySQLサーバーが正常にシャットダウンせずに強制終了した場合に,起動時間が長くなるのを避けるため,重做ログをかなり小さく維持することが一般的な方法でした。MySQL 5.5以降では,"InnoDB構成変数の最適化に説明するように,クラッシュリカバリのパフォマンスが大幅に向上しています。それらのリリースでは,重做ログファイルを大きくすることが,バックアップ戦略やデータベースワークロードに役立つ場合に,そうすることができます。
後述するように,設定innodb_file_per_table = 1
で実行することが望ましいと考えられる理由は多数あります。
並列バックアップ
mysqlbackupコマンドは最新のマルチコアCPUおよびオペレーティングシステムスレッドを利用して,バックアップ操作を並列で実行できます。バックアッププロセスのさまざまな側面に使用されるスレッド数を制御するオプションにいては,セクション5.1.11 "パフォマンス/スケラビリティ/容量オプション"を参照してください。バックアップ時に未使用のシステム容量があることがわかっている場合,これらのオプションの値を増加し,そうすることによって,バックアップのパフォーマンスが向上するかどうかをテストすることを考慮してください。
RAIDストレージ構成を使用して,バックアップパフォーマンスをチューニングし,テストする場合,オプション設定
——read-threads=3——process-threads=6——write-threads=3
の組み合わせを考慮してください。組み合わせ——read-threads=1——process-threads=6——write-threads=1
と比較します。非RAIDストレージ構成を使用して,バックアップパフォーマンスをチューニングし,テストする場合,オプション設定
——read-threads=1——process-threads=6——write-threads=1
の組み合わせを考慮してください。3の「スレッド」オプションのいずれかの値を増やす場合は,
——limit-memory
オプションの値も増やして,追加のスレッドに,作業の実行に十分なメモリ,を与えます。CPUがあまりビジでない(80%未満のCPU利用率)場合は,
——流程线程
オプションの値を増やします。バックアップ元のストレージデバイス(ソースドライブ)でもっと多くのI / Oリクエストを処理できる場合は,
——read-threads
オプションの値を増やします。バックアップ先のストレージデバイス(宛先ドライブ)でもっと多くのI / Oリクエストを処理できる場合は,
——帖子的
オプションの値を増やします。
オペレティングシステムに応じて,前、iostat、特别行政区、dtraceなどのコマンド,またはグラフィカルパフォマンスモニタを使用して,リソス利用率を測定できます。システムiowait
値が約20%に達したら,読み取りまたは書き込みスレッドiowait
の数を増やさないでください。
MyISAMの考慮事項
mysqlbackupコマンドはデータベースの使用を妨げることなく,InnoDBテーブルをバックアップしますが,InnoDB以外のファイル(MyISAMテーブルや
.frm
ファ)をコピ,ステ用读锁刷新表
を使用して,一時的にデタベスを読み取り専用状態にします。バックアップパフォマンスを最高にし,デス処理への影響を最小にするために:バックアップの実行時に長い
选择
クエリやその他のSQLステトメントを実行しないでください。MyISAMテーブルを比較的小さく維持し,おもに読み取り専用または読み取りが大半の作業用にします。
これにより,mysqlbackup実行の最後のロックフェズが短くなる(おそらく数秒)ため,mysqldの通常の処理をあまり妨げません。デタベスアプリケションで先述の条件が満たされない場合は,
——only-innodb
または——only-innodb-with-frm
オプションを使用して,InnoDBテブルのみをバックアップするか,または——无固定
オプションを使用して,InnoDB以外のファereplicationルをバックアップします。——无固定
設定でコピされるMyISAM.frm
,およびその他のファイルがバックアップの最終フェーズで更新されない場合,それらの整合性を保証できないことに注意してください。大きなデタベスの場合,バックアップの実行に長時間かかることがあります。mysqlbackupコマンドが終了コド0を返していることを確認するか,またはmysqlbackupがテキスト「mysqlbackup completed OK!」を出力していることを観察して,常にmysqlbackupが正常に完了していることをチェックしてください。
mysqlbackupコマンドは,以前のMySQL 6.0ソスリの「MySQL备份」オプンソスプロジェクトとは異なります。MySQL企业Backup プロジェクトは MySQL Backup イニシアチブに代わりました。
テブルに関するDDL操作が実行中でない期間に,バックアップをスケジュルしてください。DDL操作と同時のバックアップに対する制約にいては,セクションa。1「MySQL企业Backup の制限」を参照してください。
ネットワクパフォマンス
データ処理操作で,データベースとの通信にUnixソケットの方がTCP / IPより高速であるという伝統的なアドバイスをご存知かもしれません。mysqlbackupコマンドはオプション——= tcp协议
、——协议=套接字
,および——协议=管
をサポートしていますが,これらのオプションはバックアップやリストアのパフォーマンスに重大な影響を与えません。これらのプロセスには,クライアント/サーバーネットワークトラフィックよりも,ファイルコピー操作がかかわります。——协议
オプションによって制御されるデタベス通信は少量です。たとえば,mysqlbackupはデータベース接続経由でデータベースパラメータに関する情報を取得しますが,テーブルまたはインデックスデータは取得しません。
デタサ
特定のテーブルやデータベースに重要度の低い情報が格納されているか,めったに更新されない場合,それらをもっとも頻繁なバックアップから除外し,もっと少ない頻度のスケジュールでバックアップするようにできます。関連オプションにいては,セクション5.1.9 "部分バックアップとリストアオプション",および特定のテーブル,データベース,またはストレージエンジンからデータを除外することに関する手順については,セクション3.3.4 "部分バックアップの作成"を参照してください。部分バックアップは,少量のデ,タをコピ,圧縮,転送するため,高速になります。
InnoDB
デタファズを最小にするには,MySQL構成オプションinnodb_file_per_table
を有効にすることを考慮してください。このオプションは,いくかの点で,InnoDB
テブルのデタサズを最小にすることができます。
これは,
InnoDB
システムのテーブルスペースのサイズの拡大を防ぎ,後でMySQLによってのみ使用可能なディスク領域を割り当てます。たとえば,大量のデータが一時的にのみ必要になったり,誤ってまたは試験中にロードされたりすることがあります。innodb_file_per_table
オプションを使用しないと,システムテーブルスペースがこのすべてのデータを保持するために拡張し,その後縮小することはありません。これは,テ,ブルが削除されるか,切り捨てられると,
InnoDB
テブルとその。各テーブルとその関連付けられたインデックスは,これらのDDL操作によって削除されるか,空にされる.ibdファルによって表されます。これにより,大量のデ,タが削除されるか,ンデックスが削除された場合に,
.ibd
ファ邮箱ル内の未使用の領域が优化表
ステトメントによって回収されます。これにより,セクション3.3.4 "部分バックアップの作成"に説明するように,一部の
InnoDB
テブルをバックアップし,その他をバックアップしない部分バックアップが可能になります。
クエリで使用されていない。インデックスはバックアップデータの領域を占めるため,不要なインデックスによってバックアッププロセスが遅くなります。(mysqlbackupによって使用されるコピーおよびスキャンメカニズムでは,それらの作業の実行にインデックスに依存しません)たとえば,クエリーによって使用されるインデックスは1つだけであるため,テーブルのカラムごとにインデックスを作成しても一般に役立ちません。プラ邮箱マリキ邮箱カラムは各InnoDB
セカンダリインデックスに含まれるため,多数または著しく長いカラムや,同じカラムのさまざまな配列の複数のセカンダリインデックスから構成されるプライマリキーを定義する領域を無駄にします。
app - logフェズ
別個のマシンにバックアップデータを格納し,そのマシンがデータベースサーバーをホストするマシンほどビジーでない場合,一部の後処理の作業(运用原木フェズ)をその別個のマシンにオフロドできます。セクション5.1.1.2 "既存のバックアップデタのapply-log操作"
初期バックアップ後すぐに运用原木フェーズを実行する(リストアを高速にする)か,またはリストア直前まで延期する(バックアップを高速にする)かには,常にパフォーマンスのトレードオフがあります。緊急時に,リストアパフォマンスはもっとも重要な考慮事項です。そのため,データが重要であるほど,运用原木フェーズをバックアップ直後に実行することが重要になります。backup-and-apply-log
オプションを指定して,同じサーバーでバックアップフェーズと运用原木フェーズを組み合わせるか,または高速の初期バックアップを実行し,バックアップデータを別のサーバーに転送してから,セクション5.1.1.2 "既存のバックアップデタのapply-log操作"のいずれかのオプションを使用して,apply-logフェズを実行します。