web-dev-qa-db-ja.com

XtraBackupとrsyncの違いは何ですか?

はい、両方でstraceを実行します。しかし、知りたいのですが...

  • XtraBackupはrsync -ac src destに加えて何をしていますか?
  • XtraBbackupの何が特別なのですか?
  • XtraBackupはmysqldとどのように相互作用しますか?
11
randomx

rsync は、ある場所から別の場所へのバイト単位のデータのブルートフォースコピーです。あなたは非常に速い最後のrsyncまで複数のrsyncを実行する必要があります。次に、MySQLを完全にシャットダウンして、もう一度rsyncを実行します。

XtraBackup は、rsyncのように動作する包括的なツールですが、人生の目的を定めています。すべてのInnoDBデータとテーブルスペースのコピーを開始できます。内部にチェックポイントを作成し、InnoDBクラッシュリカバリをインプレースで実行して、完全なポイントインタイムバックアップを取得する機能があります。 XtraBackupには、増分バックアップの作成を可能にする追加機能もあります。もう1つの追加機能は、InnoDBログファイルの作成です。これも、インプレースクラッシュリカバリによって構築されます。 MyISAMテーブルの凍結コピーを提供するラッパーソフトウェアもいくつかあります。

どちらの方法も素晴らしいです。 XtraBackupは、初期コピーのほとんどにInnoDBトランザクション機能を実装するだけです。 Xtrabackupは、確立されたMySQLインフラストラクチャにドロップできるファイルを作成します。言うまでもなく、XtraBackupは、インストルメンタルバックアップと、具体化された非常に使いやすいInnoDBファイルを提供します。

Rsyncを使用すると、コピープロセスを複数回管理し、mysqlシャットダウンでそれを制限して、rsyncを1回介入する必要があります。

どちらを使用するかは個人的な好みです。 XtraBackupは、コピーされたデータよりも少し大きいバックアップを作成します。方法の選択は、この質問の読者にお任せします。

私はrsyncの方が使いやすいので、プロセスが始まる前に特定の時点を決定できるので、mysqldのロックまたはシャットダウン、そのような制御を実行できる場合、および指定した順序で完全に制御できます。 。

両方のバックアップスタイルに共通する点が1つあります:XtraBackupを使用すると、実際のポイントインタイムは、バックアッププロセスが完了してXtraBackupを信頼する(これまでに200,000ダウンロードあります。Facebookはその最大のユーザーの1人です。多くの信頼を得ています)。つまり、午前0時にXtraBackupを開始し、バックアップが午前2時20分まで続く場合、バックアップの実際の時刻は午前2時20分です。複数のrsyncを手動で実行し、最後のrsyncの前に「service mysql stop」を発行するタイミングを決定する必要があるため、rsyncを使用しても同じ移動ターゲットの問題があります。

これらのメソッドは、rsyncメソッドを使用してmysqldをシャットダウンする必要がある点で異なりますが、XtraBackupはmysqldとは独立して動作します。実際、ラッパーソフトウェアを介してMyISAMテーブルを処理する場合を除いて、XtraBackupはmysqldとほとんど対話しません。 XtraBackupは、mysqldとは別のInnoDBストレージエンジン操作を使用して、完全に機能するInnoDBデータおよびログファイルを構築しようとします。

Mysqlのシャットダウンは、非常に大きな理由でrsyncメソッドに非常に必要です。InnoDBバッファープールは、ディスクに書き戻されていないデータページとインデックスページ(1ページ= 16KB)である「ダーティページ」を保持できます。 rsyncを使用しても、InnoDBバッファープールで保留中のデータ変更はキャッチされません。最後のrsyncのためにmysqldのシャットダウンを高速化するには、次のコマンドを実行してください。

SET GLOBAL innodb_max_dirty_pages_pct = 0;

このコマンドは、ダーティページの数を最小限に抑えます。このコマンドは、バックアップのrsyncメソッドを実行する約1時間前に実行する必要があります。これはXtraBackupにも役立ちますが、XtraBackupはmysqlのシャットダウンを必要としません。

16
RolandoMySQLDBA