Kehabisan sumber daya untuk mysqldump

21

Saya mencoba melakukan mysqldump di server Windows dan saya mendapatkan pesan kesalahan berikut :

mysqldump: Got error: 23: Out of resources when opening file '.\db\sometable.MYD' (Errcode: 24) when using LOCK TABLES

Inilah perintah yang saya jalankan:

mysqldump -u user -p"pass" --lock-tables --default-character-set=latin1 -e --quick databasename > "query.sql"

Memulai ulang layanan mysql tidak membantu.

Saya selalu mendapatkan pesan untuk tabel yang sama.

Saya sudah mencoba mengurangi variabel table_cache dan max_connections dari 64 menjadi 32 dan 30 menjadi 10 masing-masing tetapi saya masih mendapatkan kesalahan hanya kali ini untuk tabel yang berbeda (dan mulai sekarang pesan kesalahan selalu menyebutkan tabel kedua).

Skrip yang sama dijalankan pada selusin server Windows lainnya yang memiliki database yang sama tanpa masalah.

Semua database memiliki 85 tabel.

Philippe Carriere
sumber
Sistem operasi apa yang Anda gunakan untuk menjalankan MySQL?
Davey
Windows di mana-mana.
Philippe Carriere
Berapa banyak tabel dalam DB? Sepertinya semacam batasan deskriptor file.
Davey
85 tabel dalam DB.
Philippe Carriere
Informasi ditambahkan ke deskripsi.
Philippe Carriere

Jawaban:

21

Menurut sini - "kode kesalahan OS 24: Terlalu banyak membuka file" yang sejalan dengan kesalahan yang lebih umum 23 "Kehabisan sumber daya".

Jadi sepertinya Anda kehabisan file menangani. Ini biasanya pengaturan / masalah di akhir server, baik di MySQL, atau di OS itu sendiri.

Mungkin periksa / sesuaikan --open-files-limitpengaturan di MySQL itu sendiri dan lihat apakah itu membantu.

Juga, mungkin mencoba menjalankan dump, sementara tidak ada orang lain yang menggunakan DB, dengan --single-transactionpengaturan alih-alih --Lock-File, karena beberapa orang menyarankan ini akan bekerja satu tabel pada satu waktu alih-alih membuka semuanya sekaligus (oleh karena itu menggunakan lebih sedikit file menangani).

Selain itu, Anda mungkin harus menemukan akar penyebab mengapa server khusus ini kehabisan sumber daya. Yang mungkin akan melibatkan pemecahan masalah dengan menonaktifkan layanan / proses sebanyak mungkin dan melihat apakah dump melewati. Kemudian cari tahu dari sana siapa pelakunya yang memakan terlalu banyak sumber daya dan mungkin tidak membebaskan mereka dengan benar.

techie007
sumber
2
--single-transaction bukannya --lock-tables berfungsi. Terima kasih banyak.
Philippe Carriere
Anehnya saya tidak menggunakan InnoDB tetapi tidak bekerja tanpa parameter ini. Saya pikir - transaksi tunggal hanya relevan dengan innoDB.
Philippe Carriere
Bagus. :) Senang itu membantu.
techie007
4
--lock-all-tablesjuga berfungsi, dan tidak memiliki masalah inkonsistensi --single-transactionsaat bekerja pada tabel non-InnoDB.
freiheit
Hanya untuk memperjelas: --single-transactionkekuatan --lock-tables=off. Jangan gunakan ini pada tabel non-transaksional.
b2ag
6

Apakah Anda berada dalam posisi untuk mencobanya --single-transactionalih - alih --lock-tablesmisalnya tabelnya adalah InnoDB dan Anda tidak menggunakan tabel Cluster dan bahwa ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE tidak akan terjadi selama dump? Konfirmasikan yang terbaik, tidak apa-apa dengan org dukungan MySQL Anda jika ada.

Saya hanya mencoba ini di unix tetapi pada dasarnya jika saya mencoba dengan DB dengan 2000 tabel gagal dengan kesalahan yang mirip dengan Anda misalnya saya telah menggunakan semua pegangan file terbuka saya.

davey
sumber
+1. Solusi Anda sama dengan techie007 bekerja juga tetapi dia menjawab lebih dulu jadi saya menerima jawabannya. Sebagai catatan, saya tidak menggunakan innoDB.
Philippe Carriere
2

Anda mungkin mendapatkan kesalahan ini:

MySQL: Errcode: 24 saat menggunakan LOCK TABLES

... bersama dengan kesalahan lain ketika Anda meningkatkan ke MySQL 5.5 dan Anda menjalankan cadangan Anda di Plesk atau menjalankan OS lainnya mysqldump.

Memperbaiki:

  1. Edit my.cnf
  2. Menambahkan:

    open_files_limit=2048
    
  3. Mulai ulang MySQL

Jika Anda menerima:

Tidak dapat memuat dari mysql.proc. Tabel mungkin rusak (1548)

Ini adalah hasil peningkatan ke 5.5. Menjalankan:

mysql_upgrade --force

Diuji dan bekerja pada CentOS 6.7 dan Plesk 12.

Marcos Paulino Chahin
sumber
0

Saya memiliki masalah yang sama dengan Philipe. Ketika saya mulai dump, saya melihat kesalahan seperti ini:

mysqldump: Got error: 23: Out of resources when opening file './c1baznarz/timecard.MYD' (Errcode: 24) when using LOCK TABLES

Saya menggunakan perintah sederhana:

mysqldump -uroot -p c1baznarz > c1baznarz.sql

Jadi, saya menambahkan perintah lain ke mysqldump saya:

--single-transaction

dan dump siap. Jadi, semua permintaan mysqldump saya terlihat seperti ini:

mysqldump -uroot -p --lock-tables --single-transaction c1baznarz > c1baznarz.sql
Grzegorz Brzęczyszczykiewicz
sumber