web-dev-qa-db-ja.com

skip-lock-tablesとmysqldump

毎日約50の個別のデータベースでmysqlダンプを実行し、それらをパッケージ化して、オフサイトに格納します。これらのデータベースのいくつかはかなり大きく、myisamテーブルが含まれています(変更できないため、無意味であることを示唆しています)。あります。私が見るのは、基本的に、「ダンプ中にテーブルにデータが挿入されると悪影響を与える可能性がある」という異なる反復です。

これらの悪影響は何ですか?それは、復元時にこれらのクエリを見逃すことを意味するだけですか、それともダンプファイルが壊れて役に立たなくなることを意味しますか?時間内にスナップショットを探しているだけなので、ダンプの開始後に投稿された新しいデータを失うと正直に気になりません。

これらのデータベースダンプを使用して、ダンプを発行する前に保存されたすべてのデータを含めることはできますか?.

16
Jafo

-skip-lock-tablesパラメータは、すべてのテーブルでREADロックを取得するダンプを取得する前に、mysqldumpユーティリティにLOCK TABLESコマンドを発行しないように指示します。バックアップ手順の場合の一貫性を向上させるために、データベース内のすべてのテーブルをロックする必要があります。テーブルがダンプされる間、skip-lock-tablesを使用しても、SELECTがテーブルからすべてのレコードを取得するためにロックされるため、INSERTまたはUPDATEはまったく受信されません。こんな感じ

SELECT SQL_NO_CACHE * FROM my_large_table

SHOW PROCESSLISTコマンドを使用すると、プロセスリストで確認できます。非トランザクションのMyISAMエンジンを使用している場合、テーブルをロックしても参照整合性とデータの一貫性は保証されません。私は個人的にはほとんど常に-skip-lock-tablesパラメータを使用しています。 InnoDBでは、期待される効果を得るために-single-transactionパラメータを使用します。お役に立てれば。

29
georgepsarakis