Назад | Перейти на главную страницу

сервер mysql не запускается

Сервер mysql работает на недавно установленной ubuntu 8.04. (Я хотел переместить сервер mysql в KVM. Сам KVM работает на ubuntu 10.04.)

/ mysql принадлежит к mysql: mysql и доступен. все подфайлы также доступны

я уже установил /etc/security/limits.conf на следующее значение:

*         soft    nofile          65535
*         hard    nofile          65535

когда я пытаюсь запустить, я получаю следующую ошибку:

110406 10:34:45 [Warning] Could not increase number of max_open_files to more than 1024 (request: 2858)
110406 10:34:45 [Warning] Can't create test file /mysql/datadir/dbslave3.lower-test
110406 10:34:45 [Warning] Can't create test file /mysql/datadir/dbslave3.lower-test
/usr/sbin/mysqld: File '/mysql/logs/mysql-slow.log' not found (Errcode: 13)
110406 10:34:45 [ERROR] Could not use /mysql/logs/mysql-slow.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
/usr/sbin/mysqld: File '/mysql/logs/mysql-bin.index' not found (Errcode: 13)
110406 10:34:45 [ERROR] Aborting

110406 10:34:45 [Note] /usr/sbin/mysqld: Shutdown complete

когда я вхожу ulimit -n 65535 а затем попытайтесь запустить сервер, я получаю следующую ошибку:

  110406 10:41:43 [Warning] Can't create test file /mysql/datadir/dbslave3.lower-test
  110406 10:41:43 [Warning] Can't create test file /mysql/datadir/dbslave3.lower-test
  /usr/sbin/mysqld: File '/mysql/logs/mysql-slow.log' not found (Errcode: 13)
  110406 10:41:43 [ERROR] Could not use /mysql/logs/mysql-slow.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
  /usr/sbin/mysqld: File '/mysql/logs/mysql-bin.index' not found (Errcode: 13)
  110406 10:41:43 [ERROR] Aborting

  110406 10:41:43 [Note] /usr/sbin/mysqld: Shutdown complete

Так что здесь не так? при выполнении su - mysql -s /bin/bash, я могу создавать файлы и открывать их.

Это потому, что я переместил MySQL в KVM?

РЕДАКТИРОВАТЬ: Я также изменил диски с / dev / vda (VirtIO) на / dev / sda (IDE). Но все то же поведение. Может дело не в KVM, просто что-то не так в самом госте.

Увидимся,

Я предполагаю, что это проблема с разрешениями или владением в одном из подкаталогов MySQL, вероятно, в каталоге файлов данных.

В сообщении об ошибке написано «Код ошибки: 13». Ты можешь использовать перрор чтобы проверить сообщение, связанное с этой конкретной ошибкой, и подтвердить, что это действительно где-то ошибка разрешения.

shell> perror 13
error code  13:  Permission denied

Убедитесь, что пользователь MySQL может получить доступ к каталогу файлов данных и писать в нем. Кажется, в этом проблема.

С другой стороны, иногда файлы журналов вводят в заблуждение или не так точны, как должны быть. В таком случае, Strace приходит на помощь. strace - очень мощный системный трассировщик, который отслеживает все системные вызовы, выполняемые процессом.

Его использовать легко:

strace -f -o strace.output /etc/init.d/mysql.server start

Это напечатает все системные вызовы, сделанные при запуске сервера MySQL, в файле с именем strace.output.

Надеюсь это поможет.

Проверьте права чтения / записи в вашей папке, большинство ошибок, по-видимому, являются результатом сбоя записи. Убедитесь, что раздел или диск не находится в режиме только для чтения и что папка mysql доступна для записи. Попробуйте создать тестовый файл с помощью vi, nano / pico, чтобы попытаться воспроизвести проблемы чтения / записи.

Во-первых, в Ubuntu есть 3 вещи, которые могут ограничить доступ к файлам:

  1. права доступа к файловой системе (но вы уже сказали, что это не так)
  2. ulimit nofile (но это сообщение об ошибке: Can't create test file /mysql/datadir/dbslave3.lower-test появляется при запуске, где mysql проверяет вашу файловую систему на чувствительность к регистру. Итак, mysql еще не создал столько дескрипторов!)
  3. apparmor! (это должно быть вашей проблемой. особенно, если вы переместили свой datadir!)

Чтобы решить эту проблему, вам нужно настроить /mysql/** rwk, в /etc/apparmor.d/usr.sbin.mysqld

В Linux ограничения настраиваются PAM (pam_limits) во время входа в систему и применяются для каждого процесса. У вас есть 2 ограничения: один - жесткий, а другой - мягкий. Мягкий может быть изменен процессом и увеличен, пока не достигнет жесткого предела.

Вы можете найти ограничения для запущенного процесса с помощью:

cat /proc/<PID>/limits

Чтобы найти ограничения для текущей оболочки, вы можете использовать:

ulimit -a    #soft limits
ulimit -Ha   #hard limits

Вы также можете strace процесс и посмотрите, почему открывается так много дескрипторов файлов (которые могут быть сокетами, файлами, каналами ...):

strace -f mysql_start_script 2> strace.log
strace -e 'open,socket,pipe,accept' -f mysql_start_script 2> strace.log    # To have only the calls that generates file descriptors

в strace.log поиск файлов для open, socket, pipe.

Для запущенного процесса вы можете увидеть дескрипторы файлов с помощью:

ls -l /proc/<PID>/fd

Убедитесь, что у вас есть /mysql/logs/ папка. Бревна должны быть где-то внутри /var/log/

Надеюсь, поможет.