o servidor mysql não inicializa

1

O servidor mysql está sendo executado em um ubuntu 8.04 recém-instalado. (Eu queria mover o servidor mysql para o KVM. O próprio KVM está rodando no Ubuntu 10.04.)

/ mysql pertence ao mysql: mysql e é acessível. todos os subarquivos também são acessíveis

Eu já defini o /etc/security/limits.conf com o seguinte valor:

*         soft    nofile          65535
*         hard    nofile          65535

quando tento iniciar, recebo o seguinte erro:

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

quando eu digito ulimit -n 65535 e, em seguida, tento inicializar o servidor, recebo o seguinte erro:

  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

Então, o que há de errado aqui? ao fazer um su - mysql -s /bin/bash , eu posso criar os arquivos e abri-los.

É porque eu mudei o mysql para o KVM?

EDIT: Eu também mudei os discos de / dev / vda (VirtIO) para / dev / sda (IDE). Mas ainda o mesmo comportamento. Talvez não seja o KVM, apenas algo errado no próprio convidado.

Vejo você,

    
por b.f. 06.04.2011 / 10:48

4 respostas

0

primeiro, no ubuntu, existem 3 coisas que podem limitar o acesso a arquivos:

  1. permissões de acesso ao sistema de arquivos (mas você já disse que esse não é o caso)
  2. ulimit nofile (mas esta mensagem de erro: Can't create test file /mysql/datadir/dbslave3.lower-test aparece na inicialização, onde o mysql verifica o seu sistema de arquivos quanto à distinção entre maiúsculas e minúsculas. Então o mysql ainda não criou muitos identificadores! )
  3. apparmor! (este deve ser o seu problema. especialmente, desde que você tenha movido o seu datadir!)

Para resolver isso, você precisa configurar /mysql/** rwk, em /etc/apparmor.d/usr.sbin.mysqld

    
por 29.04.2011 / 17:01
1

Meu palpite é que esse é um problema de permissões ou propriedade em um dos subdiretórios do MySQL, provavelmente no diretório de arquivos de dados.

A mensagem de erro diz "Errcode: 13". Você pode usar o perror para verificar a mensagem relacionada a esse erro específico e confirmar que isso é realmente um erro de permissão em algum lugar.

shell> perror 13
error code  13:  Permission denied

Certifique-se de que o usuário do MySQL pode acessar o diretório de arquivos de dados e escrever dentro dele. Este parece ser o problema.

Por outro lado, às vezes os arquivos de log são enganosos ou não tão precisos quanto deveriam ser. Neste caso, o strace vem para o resgate. strace é um rastreador de sistema muito poderoso que monitora todas as chamadas de sistema feitas por um processo.

Seu uso é fácil:

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

Isto irá imprimir todas as chamadas do sistema feitas ao iniciar o servidor MySQL em um arquivo chamado strace.output.

Espero que isso ajude.

    
por 06.04.2011 / 19:01
0

Verifique as permissões de leitura / gravação na sua pasta, a maioria dos erros parece ser o resultado de uma falha de gravação. Certifique-se de que a partição ou disco não esteja no modo somente leitura e que a pasta mysql seja gravável. Tente criar um arquivo de teste com o vi, nano / pico para tentar replicar os problemas de leitura / gravação.

    
por 06.04.2011 / 12:05
0

No Linux, os limites são configurados pelo PAM (pam_limits) no momento do login e são aplicados por processo. Você tem 2 limites, um é um limite rígido e o outro é o limite suave. O soft pode ser alterado pelo processo e aumentado até atingir o limite máximo.

Você pode encontrar os limites para um processo em execução com:

cat /proc/<PID>/limits

Para encontrar os limites para o shell atual, você pode usar:

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

Você também pode strace do processo e ver porque está abrindo tantos descritores de arquivos (que podem ser sockets, arquivos, pipes ...):

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

Na pesquisa do arquivo strace.log para open , socket , pipe .

Para um processo em execução, você pode ver os descritores de arquivos com:

ls -l /proc/<PID>/fd

Verifique se você tem a pasta /mysql/logs/ . Os logs devem estar em algum lugar dentro de /var/log/

Espero que ajude.

    
por 06.04.2011 / 22:30