2

innodb エンジンを使用した mysql db があります。mysqldump を実行すると、テーブルがロックされ、書き込みが失敗します。したがって、mysqldump を実行しているデータベースに書き込みを送信したくありません。

ダンプが発生し、データベースがロックされていることを示す変数はありますか?

4

1 に答える 1

0

mysqldump が進行中であることを示す特定の変数はありません。結局のところ、mysqldump とは何ですか? これは、すべてのテーブルのSHOW CREATE TABLE <Table>andです。SELECT * FROM <Table>これらは SHOW PROCESSLIST で確認できます。

InnoDB テーブルのみをバックアップしている限り、何もロックする必要はありません。ロックの代わりにトランザクションを使用mysqldump --single-transactionして、バックアップ プロセスの読み取りの一貫性を確保します。

http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_single-transactionも参照してください。

しかし、あなたの質問にもっと直接的に答えるために、いくつかの場所を照会して現在のロックを見つけることができます:


あなたのコメントについて:

Percona XtraDB Cluster を使用している場合のデータベースからの読み取りは、ローカル読み取りのままです。使用しても問題ないはずmysqldump --single-transactionです。Percona XtraDB クラスターを使用している場合でも、違いはありません (ちなみに、私は Percona で働いています)。

PXC の影響を受ける可能性がある唯一のことはwsrep_causal_reads、コミットされていない書き込みセットが着信した場合に読み取りをブロックする を使用する場合です。

Percona 製品が好きで、すべてのテーブルが InnoDB である場合は、Percona XtraBackupを使用する必要があります。これもロックなしでバックアップを実行します。

于 2013-06-12T20:31:12.667 に答える