MySQL не может открыть файлы после обновления сервера: errno: 24

Можно попробовать TestDisk для восстановления потерянных разделов. Это не поможет вообще, это Вы имеете, уже переписал раздел..., если Вы просто изменили таблицу разделов, это поможет.

Резервное копирование важно

, просто необходимо создать резервную копию (скопируйте во внешнее местоположение), Ваш /home/YOUR_USERNAME каталог, затем восстановите его назад. Можно использовать простую карту с интерфейсом USB (но не думайте, что это - навсегда длительность одной). Очень важные данные должны регулярно сохраняться и т.д. Я использую Облако, например ( Google Drive , Dropbox ...)

, Если Вы нуждаетесь в дальнейшей помощи, обратитесь к этой документации: HomeFolder или BackupYourSystem.

16
задан 14.03.2020, 08:21

4 ответа

ОС: Ubuntu (Debian) развертывания

MySQL Server Option: open-files-limit

Похоже, что Debian [113 ] upstart не использует параметры, определенные в /etc/security/limits.conf , поэтому при запуске mysql с помощью команды service (и так, в разделе upstart) он переопределяет эти определенные ограничения и использует значение по умолчанию 1024.

Решение состоит в том, чтобы изменить файл mysql.conf , который определяет службу upstart, он находится в /etc/init/mysql.conf и добавить следующие строки [114 ] до блока перед запуском :

# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000

Ссылки:

19
ответ дан 14.03.2020, 08:22

Поскольку ни один из вышеперечисленных вопросов не устранил проблему для меня (только приводил к тому, что системе не хватало памяти), вот решение, которое я нашел:

В /etc/mysql/my.conf вам нужно увеличить внутреннюю open_files_limit в MySQL. Поэтому временно добавьте это в конфигурацию и перезапустите MySQL.

[mysqld]
open_files_limit = 100000

sudo /etc/init.d/mysql restart

После запуска операции, которая выдает ошибку «слишком много открытых файлов », вы можете изменить свою конфигурацию на исходную и снова перезапустить MySQL. [ 117]

1
ответ дан 14.03.2020, 08:22

Спасибо за обходной путь. Но для меня эта проблема была омрачена двумя другими фактами.

  1. Мой каталог данных отличается от установки по умолчанию. По нескольким причинам, как историческим, так и техническим.
  2. Я обновлялся с очень старой установки, которая прошла через несколько обратных и прямых портов. При первом запуске недавно установленного MySQL 5.5 механизм InnoDB не был активирован (внутренняя реализация была отключена в файле конфигурации, но плагин, который был доступен в предыдущих версиях, отсутствует в 5.5), и отметка обновления была создана без фактического обновления любые таблицы.

После исправления проблемы InnoDB он все еще выплевывал

mysql> SHOW DATABASES;
ERROR 1018 (HY000): Can't read dir of '.' (errno: 24)

Мне пришлось запустить mysqld в корневой консоли и вручную перезапустить

/usr/bin/mysql_upgrade --defaults-extra-file=/etc/mysql/debian.cnf --force

Затем сервер начал показывать базы данных, но не может получить доступ к некоторым таблицам. Ваш обходной путь с увеличенными лимитами устранил остальные проблемы, спасибо!

0
ответ дан 14.03.2020, 08:23

Была такая же проблема в Ubuntu 15.10.

https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758 - принесли решение:

  1. проверьте, если / lib /systemd/system/mysql.service или /lib/systemd/system/mysqld.service существует
  2. (в моем случае), если нет, создайте /lib/systemd/system/mysql.service и скопировать содержимое этого файла https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758/comments/11 и добавить две строки где-нибудь в файле [1112 ]

    LimitNOFILE=infinity
    LimitMEMLOCK=infinity
    
  3. , если один или оба файла существуют, проверьте, включены ли эти две строки:

    LimitNOFILE=infinity
    LimitMEMLOCK=infinity
    
  4. execute systemctl daemon-reload

... и все должно быть хорошо.

4
ответ дан 14.03.2020, 08:24

Теги

Похожие вопросы