/note/social

MySQLのバックアップとか

MySQL :: MySQL 5.6 リファレンスマニュアル :: 7.2 データベースバックアップ方法より

テーブルファイルのコピーによるバックアップの作成

独自のファイルを使用して、各テーブルを表すストレージエンジンの場合、テーブルはそれらのファイルをコピーしてバックアップできます。たとえば、MyISAM テーブルはファイルとして格納されるため、ファイル (.frm、.MYD、および *.MYI ファイル) をコピーして、簡単にバックアップを行うことができます。一貫したバックアップを取得するには、サーバーを停止するか、関連するテーブルをロックしてフラッシュします。

読み取りロックのみが必要です。これにより、データベースディレクトリ内のファイルのコピー中に、ほかのクライアントが引き続きテーブルをクエリーすることができます。バックアップを開始する前に、すべてのアクティブインデックスページがディスクに書き込まれるようにするため、フラッシュが必要です。セクション13.3.5「LOCK TABLES および UNLOCK TABLES 構文」およびセクション13.7.6.3「FLUSH 構文」を参照してください。

サーバーが何も更新していないかぎり、すべてのテーブルファイルをコピーすることによって、バイナリバックアップを簡単に作成することもできます。mysqlhotcopy スクリプトはこの方法を使用します。(ただし、テーブルファイルコピー方法は、データベースに InnoDB テーブルが含まれている場合、機能しません。InnoDB では必ずしもデータベースディレクトリにテーブルの内容を格納しないため、mysqlhotcopy は InnoDB テーブルで機能しません。さらに、サーバーがアクティブにデータを更新していない場合、InnoDB は変更されたデータをまだメモリー内にキャッシュしており、ディスクにフラッシュしていないことがあります。)

やっぱりファイルコピーでバックアップする時は、データのFLASHとテーブルロックorサーバ停止が必要なんじゃないか。

ファイルコピーでもホットバックアップできる説は、単に運良く問題にぶち当たらなかっただけか、これまでリストアするような事態が起きていないだけなのではなかろうか。