2016-03-28 10 views
5

スレーブサーバまたはMySQLインスタンスからMySQLデータベースの毎日のバックアップを設定しようとしています。私のデータベースは、InnoDbテーブルとMyISAMテーブルが混在しています。 AutoMySQLBackupを別のマシンにインストールしました。私は、AutoMySQLBackupの助けを借りて、そのマシンからフルバックアップとMySQLデータベースの毎日増分バックアップを取ろうとしています。スレーブからリモートマシンへのAutoMySQLBackupを使用したMySQLバックアップ

+0

とは何ですかあなたはうなずきますか? –

+2

これはmyisamのインクリメンタルバックアップがないことをあなたの情報のためだけです...どんなツールも、いつでもmyisamテーブルの増分バックアップを行いますが、myisamテーブルの完全バックアップを取るでしょう.....そうすれば、myisamの大きなテーブルがあれば問題になる可能性があります。 –

+2

これまでに何を試しましたか?プロセスのどの部分に問題がありますか?特にエラーはありますか? –

答えて

-1

Mysqlのフル・バックアップ: - コマンドラインまたは構成で

https://dev.mysql.com/doc/mysql-enterprise-backup/3.12/en/mysqlbackup.full.html

オプション・ファイル?

このマニュアルの例では、わかりやすくするために、多くの場合、mysqlbackupコマンドで使用されるコマンドラインオプション を示しています。 の利便性と一貫性については、 のままのオプションを、ほとんどのバックアップジョブで変更しないで、mysqlbackupに提供する MySQL設定ファイルの[mysqlbackup]セクションに含めることができます。 mysqlbackup は、[mysqld]セクションのオプションがある場合は、 が存在します。オプションファイルを設定ファイルに入れると、 という情報を構成ファイルに入れておくなど、データベースインスタンスが 異なるポートに切り替わるたびに、バックアップスクリプト を編集する必要性を避けることができます。 はバックアップ管理を簡素化できます。設定ファイルの使用方法の詳細については、第14章設定ファイルとパラメータを参照してください。

単一ディレクトリまたはタイムスタンプ付きサブディレクトリの出力?

便宜上、--with-timestampオプションは、バックアップディレクトリの下に一意の名前の サブディレクトリを作成し、各 バックアップジョブからの出力を保持します。タイムスタンプの付いたサブディレクトリにより、 の保存期間が簡単になり、特定の経過時間を経過したバックアップデータを簡単に削除してアーカイブすることができます。

単一のバックアップディレクトリを使用する場合(つまり、 --with-timestampオプションを省略した場合)、各バックアップジョブに新しい一意のディレクトリ名を指定するか、--forceオプションを指定して上書きします 既存のバックアップファイル。以前のバックアップを含むディレクトリを指定 に--incrementalベースのオプションを使用して、増分バックアップの場合

、予測可能な ディレクトリ名を作るために、あなたは --with-タイムスタンプオプションを使用しないことを好むかもしれません代わりにバックアップスクリプトを使用して一連のディレクトリ名を生成します。

常にフルバックアップ、または完全バックアップと増分バックアップ?

InnoDBデータボリュームが小さい場合、またはデータベースがビジー状態の場合は、 バックアップ間でデータのパーセンテージが変更されるため、毎回 にフルバックアップを実行することをお勧めします。ただし、定期的なフルバックアップを実行してから の記憶領域を節約し、その間に複数の 増分バックアップを保存することができます。詳細は、4.3.3項「差分バックアップまたは増分バックアップの作成」を参照してください。

圧縮を使用するかどうかを指定します。

圧縮されたバックアップを作成すると、かなりのストレージスペースを節約できます。 とI/O使用量を大幅に削減します。また、LZ4圧縮 メソッド(リリース3.10以降で導入された)では、処理するためのオーバーヘッドは、 とかなり低くなっています。アクティブなデータベースファイルが になる可能性があるより高速のディスクシステムからデータベースバックアップが移動する場合、圧縮は全体的なバックアップ時間を大幅に短縮します( )。修復時間を短縮すると、 となります。一般に、LZ4ベースのバックアップはしばしば、より短い時間で終了するので、ユーザは の圧縮ではなく、LZ4圧縮を推奨します。 期間。ただし、 環境内のMySQL Enterprise Backupをテストして、最も効率的なアプローチが何であるかを判断してください。

インクリメンタルバックアップ機能は、主に、InnoDBテーブル、または読み込み専用であるかほとんど更新されていないInnoDB以外のテーブルを対象としています。 InnoDB以外のファイルの場合、前のバックアップ以降にファイルが変更された場合、ファイル全体がインクリメンタルバックアップに含まれます。

--compressオプションを使用して増分バックアップを実行することはできません。

インクリメンタルバックアップは、テーブル行ではなく、InnoDBデータファイル内のページレベルで変更を検出します。変更された各ページがバックアップされます。したがって、スペースと時間の節約は、変更されたInnoDBの行または列の割合に正確に比例しません。

InnoDBテーブルが削除され、その後の増分バックアップを実行すると、apply-logステップでは対応する.ibdファイルが完全バックアップディレクトリから削除されます。バックアッププログラムは、InnoDB以外のファイルの目的について同じ洞察を持つことができないため、完全バックアップとそれに続く増分バックアップの間にInnoDB以外のファイルが削除されても、apply-logステップでは、完全バックアップディレクトリ。したがって、バックアップを復元すると、削除されたファイルが再度表示される可能性があります。

:--incremental-と-redoログのみの増分バックアップを作成するための--incrementalオプション 比べていくつかの利点を提供するかもしれない唯一のREDOログ・

を使用して増分バックアップを作成する

InnoDBテーブルへの変更は、 InnoDB REDOログの内容に基づいて決定されます。 REDOログ・ファイルのサイズは固定されているので、事前に知っている固定サイズの があります。 から変更を読み取るために必要なI/Oは、InnoDB表スペース・ファイルをスキャンして変更した ページデータベース、DMLアクティビティの量、 およびREDOログ・ファイルのサイズ。 REDOログ・ファイルが新しいDML操作として上書きされ 古い変更記録と、循環バッファとして動作するので

は場所を取る、あなた は、予測可能なスケジュールで新しい増分バックアップを取る必要があり、ログファイルのサイズによって を口述あなたのワークロードのために生成されたREDOデータの量と 。それ以外の場合は、 のように、前回の増分バックアップ以降の変更をすべて記録することはできません。 mysqlbackupはすぐに処理できないと判断してエラーを返します。あなたのバックアップスクリプトは、そのエラーを で捕らえることができ、 --incrementalオプションでインクリメンタルバックアップを実行できるはずです。例えば

、REDOログのサイズを計算するために発行し、コマンドSHOW「をinnodb_log_fileの%」LIKE 変数と、出力に基づいて、 innodb_log_files_in_groupの値によって にinnodb_log_file_size設定を掛けます。 物理レベルでREDOログ・サイズを計算するには、MySQLインスタンス のdatadirディレクトリを調べ、パターンib_logfile *に一致するファイルのサイズを合計します。

InnoDB LSN値は、 REDOログに書き込まれたバイト数に対応します。ある時点でLSNをチェックするには、 SHOW ENGINE INNODB STATUSコマンドを発行し、LOG見出しの下を見ます。 バックアップ計画を計画している間は、定期的にLSN値を記録し、 は現在の値から前の値を減算して、毎時、毎日など、 REDOデータがどれくらい生成されるかを計算します。

MySQL 5.5より前のバージョンでは、通常のシャットダウンではなく、 のMySQLサーバが終了したときに、起動時間が長くなることを避けるため、REDOログをかなり小さくしておくことが一般的でした。 MySQL 5.5以降では、 のクラッシュリカバリのパフォーマンスが大幅に改善されています( のInnoDB構成変数の最適化を参照)。 は、バックアップ戦略と のデータベースワークロードに役立つ場合には、再実行ログファイルを大きくできます。

このタイプの増分バックアップでは、標準インクリメンタルオプションとして---start-lsnの値が低すぎることはありません。たとえば、フルバックアップを作成してから、同じ--start-lsn値を使用して一連のインクリメンタルバックアップをすべて実行することはできません。直前のバックアップの正確な終了LSNを次の増分バックアップの開始LSNとして指定してください。 は任意の値を使用しないでください。 LSN値が正確に連続 増分バックアップの間で一致し、あなたが--incremental-と-redoログのみのオプションを使用するときは、必ず --incrementalベースのオプションを使用することをお勧めされていることを確認するには

注意。

増分バックアップのこのタイプは、実用的かつ特定のMySQLインスタンスの 効率的であるかどうかを判断するには、次のInnoDB内のデータの変更は、REDOログ・ファイルをどのように高速

測定。 LSNを定期的にチェックして、数時間または数日の間に、どのくらいのREDOデータが に蓄積するかを決定します。

REDOログの蓄積率とREDO ログファイルのサイズを比較します。 履歴データをREDOログで使用できないため、バックアップに失敗する可能性を避けるために、この比率を使用してインクリメンタルな バックアップを取る頻度を確認します。たとえば、 1日当たり1GBのREDOログ・データを作成し、REDOログ・ファイルの合計サイズが の場合、増分バックアップは1週間に1回よりも頻繁にスケジュールされます。突然 突発的な更新が通常よりも多く発生した場合、潜在的な問題を避けるために、増分 バックアップを毎日実行することがあります。 REDOログ・バックアップ技術はより速く実行し 従来の増分バックアップ方式よりも少ないオーバーヘッドであれば確認するために、--incrementalと --incremental-WITH-やり直しログのみのオプションの両方を使用して

ベンチマーク増分バックアップ時間。結果は、データのサイズ 、DMLアクティビティの量、および REDOログ・ファイルのサイズによって異なります。現実的なデータの ボリュームと現実的なワークロードを備えたサーバーでテストを行います。たとえば、巨大なredo ログファイルがある場合、インクリメンタルバックアップ中にそれらを読み取ると、従来の インクリメンタル手法を使用してInnoDBデータファイルを読み取る限り、 を取得できます。逆に、データボリュームが大きい場合は、変更されたページを見つけるためにすべてのデータファイルを読み取る は、はるかに小さなREDOログファイルを処理するよりも効率が低い になる可能性があります。増分バックアップ

ため

その他の考慮事項増分バックアップ機能は、主にはInnoDB テーブル、またはあるいはめったに更新読み取り専用で非InnoDBのテーブルを対象としています。 インクリメンタルバックアップは、テーブル行ではなく、InnoDB データファイルのページレベルで変更を検出します。変更された各ページは、バックアップされた です。したがって、スペースと時間の節約は、変更されたInnoDBの行または列の割合に比例して正確に ではありません。そのファイルは、InnoDBテーブルとケースとの を比較する場合、バックアップリソースの 節約はあまり重要であることを意味しており、前回のバックアップ以降に変更された場合、非InnoDBのファイルの場合

は、ファイル全体が増分 バックアップに含まれています。

--compressオプションを使用して増分バックアップを実行することはできません。

(完全または増分 )バックアップ--noロックオプションを使用して作成に基づいて増分バックアップを行う場合、バイナリログのバッキングアップをスキップする --skip - バイナリログオプションを使用し、バイナリログ情報はmysqlbackupには利用できませんので、 状況です。増分バックアップ

例としては、この例では、すべてのデータベースとテーブルを含むMySQLサーバの増分バックアップを作成するmysqlbackupを使用しています。 --incremental-baseオプションを使用する方法と--start-lsnオプションを使用する方法の2つの選択肢を示します。

--incremental-baseオプションを使用すると、1つのバックアップと次のバックアップの間のLSN値を追跡する必要はありません。代わりに、以前のバックアップのディレクトリ(フルまたはインクリメンタル)を指定するだけで、mysqlbackupは以前のバックアップのメタデータに基づいてこのバックアップの開始点を見つけ出します。既知のディレクトリ名が必要なので、--with-timestampオプションを使用するのではなく、ハードコードされた名前を使用するか、独自のバックアップスクリプトで一連の名前を生成することができます。

$ mysqlbackup --defaults-file=/home/pekka/.my.cnf --incremental \ 
    --incremental-base=dir:/incr-backup/wednesday \ 
    --incremental-backup-dir=/incr-backup/thursday \ 
    backup 

...多くの出力行... mysqlbackup:ディレクトリ内に作成されたバックアップ '/ INCR-バックアップ/木曜日' mysqlbackup:start_lsn:2654255717 mysqlbackup:incremental_base_lsn:2666733462 mysqlbackup:end_lsn:2666736714z

101208午前17時14分58秒mysqlbackup:OK完成mysqlbackup! 最後のバックアップがディレクトリバックアップではなく単一ファイルであった場合でも、dirを指定することによって--incremental-baseを使用できます。directory_path --backup-dirオプションで指定した一時ディレクトリの場所完全バックアップ。

--incremental-base = dir:directory_pathを指定する代わりに、--incremental-base = historyを使用して、サーバ上のbackup_historyテーブルに記録されている最後の正常なバックアップからend_lsn値をクエリするようmysqlbackupに指示できます。 :last_backup(これは、最後のバックアップがmysqlbackupをサーバに接続して行われている必要があります)。

--start-lsnオプションを使用して、増分バックアップの開始場所を指定することもできます。

mysqlbackup:あなたは、バックアップの終了時にmysqlbackupによって報告された以前のバックアップのLSNを記録しなければならない数もメタ/ backup_variables.txtファイルに記録された2654255716 をLSNまでのログ解析することができましたバックアップ中に--backup-dirで指定されたフォルダに保存します。その番号をmysqlbackupに--start-lsnオプションを使って指定します。増分バックアップには、指定されたLSNの後に来たすべての変更が含まれます。以前のバックアップの場所はそれほど重要ではないので、--with-timestampを使って名前付きサブディレクトリを自動的に作成することができます。

$ mysqlbackup --defaults-file=/home/pekka/.my.cnf --incremental \ 
    --start-lsn=2654255716 \ 
    --with-timestamp \ 
    --incremental-backup-dir=/incr-backup \ 
    backup 

...出力の何行... mysqlbackup:ディレクトリ内に作成されたバックアップ '/ INCR-バックアップ/ 2010-12-08_17-14-48' mysqlbackup:start_lsn:2654255717 mysqlbackup:incremental_base_lsn :2666733462 mysqlbackup:end_lsn:2666736714

101208 17:14:58 mysqlbackup:mysqlbackupが正常に完了しました!

$ mysqlbackup --defaults-file=/home/pekka/.my.cnf --incremental \ 
    --start-lsn=2654255716 \ 
    --with-timestamp \ 
    --incremental-backup-dir=/incr-tmp \ 
--backup-image=/incr-backup/incremental_image.bi 
    backup-to-image 

次の例でいえ:--incremental-バックアップディレクトリとバックアップのためのメタデータと、いくつかの一時ファイルを格納するための一時ディレクトリを指定して、次のコマンドを使用し、代わりに増分バックアップ・イメージを作成するには

$ mysqlbackup --defaults-file=/home/pekka/.my.cnf --incremental \ 
    --start-lsn=2654255716 \ 
    --with-timestamp \ 
    --incremental-backup-dir=/incr-images \ 
--backup-image=incremental_image1.bi 
    backup-to-image 

https://dev.mysql.com/doc/mysql-enterprise-backup/3.7/en/mysqlbackup.incremental.html

:--backup-画像を作成する画像ファイルへの完全なパスを提供しないため、増分バックアップ・イメージは--incrementalバックアップ-dirので指定したフォルダの下に作成されます
+3

私は全体の文書をstackoverflowに貼り付けるのは良い考えだとは思わない。 – Harry

関連する問題