3

次のコマンドを実行すると、出力は「mytable」の作成構文のみで構成され、データは含まれません。

mysqldump --single-transaction -umylogin -p mydatabase mytable > dump.sql

--single-transaction をドロップすると、テーブルをロックできないため、エラーが発生します。

'mytable' を削除 (および DB を実行) すると、INSERT ステートメントを作成しているように見えますが、DB 全体が巨大です。

テーブルをロックせずにテーブル (スキーマとデータ) をダンプする方法はありますか?

( INTO OUTFILE も試しましたが、それにもアクセスできませんでした。)

4

1 に答える 1

2

答えは、テーブルに使用しているデータベースエンジンによって異なる場合があります。InnoDBは、非ロックバックアップをある程度サポートしています。権限についてのコメントを考えると、それに必要な権限が不足している可能性があります。

頭に浮かぶ最良のオプションは、インデックスなしで複製テーブルを作成することです。バックアップするテーブルのすべてのデータを新しいテーブルにコピーします。データを簡単にページングできる方法でクエリを作成する場合は、ロックの期間を調整できます。私は、反復ごとに10,000行が通常、かなり速いことを発見しました。このクエリを取得したら、すべての行がコピーされるまで実行を続けることができます。

複製ができたので、それを削除するか、切り捨てるか、またはそのままにして、最新のデータで更新し、バックアップソースとして活用することができます。

ジェイコブ

于 2010-02-24T22:41:31.607 に答える