Mysqldump için kaynaklar dışında


21

Bir Windows sunucusunda mysqldump yapmaya çalışıyorum ve aşağıdaki hata mesajını alıyorum :

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

İşte çalıştırdığım komut :

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

MySQL hizmetini yeniden başlatmak, yardımcı olmadı.

Her zaman aynı masanın mesajını alırım.

Table_cache ve max_connections değişkenlerini sırasıyla 64'ten 32'ye ve 30'dan 10'a 10'a düşürmeyi denedim ancak yine de bu sefer farklı bir tablo için hata alıyorum (ve bundan sonra hata mesajı her zaman ikinci tablodan bahsediyor).

Aynı komut dosyası, aynı veritabanına sorunsuzca sahip olan bir düzine Windows sunucusunda çalışıyor .

Tüm veritabanlarında 85 tablo var.


MySQL'in hangi işletim sistemi üzerinde çalışıyor?
Davey

Her yerde pencereler.
Philippe Carriere

DB'de kaç tablo var? Bir tür dosya tanımlayıcı sınırı gibi görünüyor.
Davey

DB içerisinde 85 tablo.
Philippe Carriere,

Açıklamaya eklenen bilgiler.
Philippe Carriere

Yanıtlar:


21

Buraya göre - "İşletim sistemi hata kodu 24: Çok fazla açık dosya", bu da daha genel hata olan 23 "Kaynakların Dışı" ile eşleşir.

Öyleyse, dosya tanıtıcılarınız bitiyormuş gibi görünüyor. Bu, genellikle MySQL'de veya işletim sisteminin kendisinde sunucu sonu ayarı / problemidir.

Belki MySQL'in içindeki --open-files-limitayarı kontrol edin / ayarlayın ve yardım edip etmediğini görün.

Ayrıca, belki de hiç kimse DB'yi kullanırken, bunun yerine --single-transactionayarlarla birlikte, çöplüğü çalıştırmayı deneyebilirsiniz --Lock-File, çünkü birkaç kişi bunun hepsini bir kerede açmak yerine bir seferde bir masa üzerinde çalışacağını (bu nedenle daha az dosya tanıtıcısı kullanarak) önerir.

Bunun ötesinde, bu özel sunucunun neden kaynakların tükenmesine bağlı olarak bir neden bulmanız gerekecek. Muhtemelen, mümkün olduğunca çok sayıda hizmeti / işlemi devre dışı bırakarak sorun gidermeyi içerecek ve çöplüğün geçip geçmediğine bakacaksınız. Sonra, oradaki suçlunun çok fazla kaynak yiyen ve belki de onları doğru şekilde serbest bırakmayan kim olduğunu anlayın.


2
- tek işlem yerine - kilit tabloları çalıştı. Çok teşekkürler.
Philippe Carriere

Garip InnoDB kullanmıyorum ama bu parametre olmadan çalışmaz. Tek işlemin yalnızca innoDB ile ilgili olduğunu düşündüm.
Philippe Carriere

Güzel. :) Yardım ettiğine sevindim.
techie007

4
--lock-all-tablesAyrıca çalışır ve --single-transactionInnoDB olmayan masalarda çalışırken tutarsızlık sorunları yoktur .
freiheit,

Sadece açıklığa kavuşturmak için: --single-transactionkuvvetler --lock-tables=off. Bunu işlem dışı tablolarda kullanmayın.
b2ag

6

Örneğin masaları InnoDB --single-transactionyerine deneyecek bir konumda mısın --lock-tablesve Küme masalarını kullanmıyorsun ve ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE dump sırasında olmaz? En iyisi, eğer varsa, MySQL destek kuruluşunuzda sorun olmadığını onaylayın.

Bunu sadece unix üzerinde denedim ama temelde 2000 tablolu bir DB ile denersem, sizinkine benzer bir hatayla başarısız olur, örneğin tüm açık dosya tanıtıcılarımı kullandım.


+1. Siz de techie007 ile aynı olan çözüm işe yaradı ama önce cevap verdi, ben de cevabını kabul ediyorum. Kayıtlar için innoDB kullanmıyorum.
Philippe Carriere

2

Bu hatayı alabilirsiniz:

MySQL: Errcode: 24 KİLİT TABLOLARI kullanılırken

... diğer hatalarla birlikte MySQL 5.5'e yükselttiğinizde ve yedeklerinizi Plesk veya başka bir işletim sistemi üzerinde çalıştırıyorsanız mysqldump.

Düzeltmek:

  1. Düzenle my.cnf
  2. Eklemek:

    open_files_limit=2048
    
  3. MySQL'i yeniden başlat

Eğer alıyorsanız:

Mysql.proc dosyasından yüklenemiyor. Masa muhtemelen bozuk (1548)

Bu, 5.5'e yükseltmenin bir sonucudur. Yürütme:

mysql_upgrade --force

CentOS 6.7 ve Plesk 12 üzerinde test edildi ve çalıştı.


0

Philipe ile benzer bir problemim vardı. Dökümü başlattığımda şöyle bir hata gördüm:

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

Basit komutu kullandım:

mysqldump -uroot -p c1baznarz > c1baznarz.sql

Böylece, mysqldump'a başka bir komut ekliyorum:

--single-transaction

ve çöplük hazır. Böylece, tüm mysqldump sorgum şöyle görünür:

mysqldump -uroot -p --lock-tables --single-transaction c1baznarz > c1baznarz.sql
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.