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.


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.


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.


+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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.