私はmysqldumpを実行しようとしていますウィンドウズサーバーで次のメッセージを受け取りますエラーメッセージ:
mysqldump: Got error: 23: Out of resources when opening file '.\db\sometable.MYD' (Errcode: 24) when using LOCK TABLES
これが指示実行中:
mysqldump -u user -p"pass" --lock-tables --default-character-set=latin1 -e --quick databasename > "query.sql"
mysql サービスを再起動しても効果はありませんでした。
いつも同じテーブルに関するメッセージが表示されます。
私は減らしてみましたテーブルキャッシュそして最大接続数変数をそれぞれ 64 から 32 と 30 から 10 に変更しましたが、今度は別のテーブルに対してのみエラーが発生します (今後は、エラー メッセージには常に 2 番目のテーブルが記載されます)。
同じスクリプトが他の12のウィンドウズ問題なく同じデータベースを持つサーバー。
すべてのデータベースには 85 個のテーブルがあります。
答え1
によるとここ- 「OS エラー コード 24: 開いているファイルが多すぎます」これは、より一般的なエラー 23「リソース不足」と一致します。
ファイル ハンドルが不足しているようです。これは通常、MySQL または OS 自体のサーバー側の設定/問題です。
確認/調整してください--open-files-limit
設定MySQL 自体でそれが役立つかどうかを確認してください。
また、他の誰もDBを使用していないときに、--single-transaction
設定の代わりに--Lock-File
、何人かの人が提案しているように、これにより、一度にすべてのテーブルを開くのではなく、一度に 1 つのテーブルが処理されます (したがって、ファイル ハンドルの使用が少なくなります)。
それ以上に、この特定のサーバーでリソースが不足している根本的な原因を見つける必要があるでしょう。それには、できるだけ多くのサービス/プロセスを無効にして、ダンプが成功するかどうか確認するトラブルシューティングが必要になるでしょう。そして、そこから、リソースを大量に消費し、おそらくリソースを適切に解放していない犯人が誰なのかを突き止めます。
答え2
--single-transaction
たとえば、テーブルが InnoDB で、クラスタ テーブルを使用しておらず、ダンプ中に ALTER TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE が実行されないなどの状況で、これを試すことができますか--lock-tables
? MySQL サポート組織がある場合は、これが問題ないことを確認するのが最善です。
私はこれを UNIX でのみ試しましたが、基本的に 2000 個のテーブルを持つ DB で試すと、開いているファイル ハンドルをすべて使用したなどの、あなたと同様のエラーで失敗します。
答え3
次のエラーが表示される場合があります:
MySQL: LOCK TABLES 使用時のエラーコード: 24
MySQL 5.5 にアップグレードし、Plesk または他の OS でバックアップを実行している場合、他のエラーも発生しますmysqldump
。
修正するには:
- 編集
my.cnf
追加:
open_files_limit=2048
MySQLを再起動する
受け取っている場合:
mysql.proc からロードできません。テーブルが破損している可能性があります (1548)
これは 5.5 へのアップグレードの結果です。以下を実行します。
mysql_upgrade --force
CentOS 6.7 および Plesk 12 でテストされ、動作しました。
答え4
私も Philipe と同様の問題を抱えていました。ダンプを開始すると、次のようなエラーが表示されました。
mysqldump: Got error: 23: Out of resources when opening file './c1baznarz/timecard.MYD' (Errcode: 24) when using LOCK TABLES
簡単なコマンドを使用しました:
mysqldump -uroot -p c1baznarz > c1baznarz.sql
そこで、mysqldump に別のコマンドを追加します。
--single-transaction
ダンプの準備ができました。したがって、すべての mysqldump クエリは次のようになります。
mysqldump -uroot -p --lock-tables --single-transaction c1baznarz > c1baznarz.sql