Rsyncを使用してオンザフライでバックアップデータベースを作成することが可能であると言う人もいます。一部のログ、バッファ...がフラッシュされないため、それは可能ではあるが安全ではないと思います。バックアップからデータベースをリカバリしていますが、一貫性がありません。
実際、rsyncを使用したバックアップが安全でない理由はわかりません。誰かが理由でmysqlの基礎を説明できますか?
InnoDBに関しては、心配する必要があります。
これはInnoDBの図解です(Percona CTO Vadim Tkachenko作)。
図の左側全体は、メモリ内のInnoDBの可動部分を表しています。ここで重要なのはInnoDBバッファープールです。
InnoDBバッファープールは3つのものを保持します
.ibd
ファイルに書き込まれます.ibd
ファイルに書き込まれます更新されたページも、ibdata1内の二重書き込みバッファーに事前に書き込まれます。
Datadirのすべてをrsyncすると、移動するファイルが多すぎます
.ibd
ファイルバックアップするためにdatadirをrsyncする必要があり、それをセットアップしてmysqlを開始しようとした場合、最良のシナリオは、クラッシュリカバリー、二重書き込みバッファーと挿入バッファーを使用したデータおよびインデックスページの初期修復、およびいくつかの再生です。 REDOログから。これにより、クラッシュリカバリで保存できるすべてのデータがロールフォワードされます。
Rsyncがすでにそれを渡した場合、rsyncが二重書き込みバッファーと挿入バッファーに書き込まれていないダーティページを失う可能性があると言っても過言ではありません。
バックアップのためのrsyncの実行に関する投稿を書いています
Aug 19, 2012
: mysqldumpを使用せずにMySqlサーバーのデータを複製するにはどうすればよいですか?Jun 17, 2011
: XtraBackupとrsyncの違いは何ですか?May 23, 2011
: データベースをあるサーバーから別のサーバーに移動するにはどうすればよいですか?Rsyncを実行したい場合は、次のスクリプトを使用できます mysqldumpを使用せずにMySqlサーバーのデータを複製するにはどうすればよいですか ただし、すべての可動部分を適切にフラッシュする必要があります
バックアップの約10分前に、ダーティーページが集合的にフラッシュするようにバッファープールを設定します。
SET GLOBAL innodb_max_dirty_pages_pct = 0;
次に、rsyncを開始する直前に、次のコマンドを実行します
FLUSH LOGS;
FLUSH TABLES WITH READ LOCK;
SELECT CONNECTION_ID() ID_With_Lock;
SELECT SLEEP(86400);
この時点でrsyncを実行することもできますが、新しいトランザクションはバッファープールに保持され、別のセッションでMySQLにログインしてプロセスID(ID_With_Lock)を強制終了するまでディスクにコミットされません。
細心の注意を払って取り扱うと、適切なrsyncバックアップが可能です。 Percona XtraDBクラスターには、Galeraクラスターに新しいノードを追加する3つのモード(xtrabackup、mysqldump、rsync)
Rsyncバックアップの実行に自信がない場合は、mysqldump --single-transacton
を実行し、binlogイベントを取得してデータをコピーし、必要な時点にロールフォワードすることをお勧めします。また、Percona XtraBackupを使用して、手間のかかる作業を行うこともできます。
同様の質問に対する私の回答を見てみましょう ここ 、 ここ および ここ 。基本的に、それは非常に単純です。データベースは、RAMとCPUに同時にディスク上にあるコンポーネントを持つ動的エンティティです。あらゆる種類のバッファとキャッシュが満たされ、空にされ、ディスク、RAMとCPUの間で切り替えます。
InnoDBはMVCCエンジンであり、バックアップソフトウェアが特定の瞬間に「スナップショット」を取得できるようにします(バックアップの実行中もdbが機能し続けることができます)。 MyISAMでは、バックアップの取得中はデータベースをアクティブにできません。
ここで、データベースファイル、バッファ、およびキャッシュを単にコピーして、[〜#〜]一貫性を保つためにディスクに配置する必要がある場合は、[〜#〜]作成されるデータベースコピー(つまり、特定の時点でコヒーレントなもの)は[〜#〜]ではありません[〜#〜](必要に応じて)ディスク上。これが、バックアップの一貫性と破損のないことを保証するさまざまなユーティリティ( PerconaのXtraBackup および Amanda Network Backup )が開発された理由です。再起動の作業(およびPITR-ポイントインタイムリカバリ-シナリオで使用)。
他に何もない場合は、なぜ非常にインテリジェントな人々が単にrsyncに依存するのではなく、これらのプログラムを作成するのに苦労したのか、自分自身に質問してください。単純なcpを実行しないのはなぜですか?