A execução de 'sudo / sbin / service mysqld start' faz com que o sistema trave

1

OS: CentOS 5.10
Serviço: Amazon Web Services
Tentativa de remover o MySQL 5.0 e instalar o MySQL 5.6

Eu tinha um servidor configurado e ia usar o MySQL, mas ele estava configurado com o MySQL 5.0. Como há melhorias de desempenho e outros recursos adicionados, e ainda não havia dados nem nada, eu queria instalar o MySQL 5.6.

Eu estava seguindo o guia postado pela Oracle para obter um RPM instalado para uso no RHEL 5:

link

Tudo foi ótimo, e eu pude começar o serviço imediatamente após a instalação - mas ...

Quando cheguei a este passo:

Always run the program mysql_secure_installation to secure your MySQL installation:

shell> mysql_secure_installation

mysql_secure_installation allows you to perform important operations like setting root password, removing anonymous users, and so on. The program is safe and easy to use. It is important to remember the root password you set though. See mysql_secure_installation — Improve MySQL Installation Security for details.

Eu executei mysql_secure_installation, e quando ele pediu uma senha, tentei pressionar enter, pois ainda não tinha definido um para root @ localhost.

Fui informado de que a senha estava incorreta.

Então, tentei a senha anterior e recebi um erro que perdi porque estou conectando por putty e a janela foi fechada quando perdi a conexão.

Em qualquer caso - eu pedi a senha novamente, então eu tentei apenas pressionar enter, e a senha antiga novamente, mais funcionou.

Então, cancelei o processo, executei sudo /sbin/service mysqld stop e, em seguida, sudo /sbin/service mysqld start . O shell parou, ficou pendurado por um segundo e, em seguida, a janela se fechou e, assim, minha conexão.

Eu tentei abrir a conexão ssh novamente, mas acabou. Depois de esperar alguns minutos, eu pude voltar ao servidor.

Toda vez que eu tento iniciar o serviço mysqld, minha sessão ssh é fechada. Isso pode significar que o sshd está travando também?

O arquivo de log /var/log/mysql.log contém apenas o seguinte:

131204 23:49:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131204 23:50:53 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131205 00:05:12 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131205 00:06:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131205 00:08:09 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131205 00:09:14 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131205 00:13:54 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131205 00:15:04 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
131205 00:25:12 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131205 00:26:45 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

Eu tentei executar o mysql manualmente, e acontece a mesma coisa.

O que eu faço daqui?

Editar:

Acabei de executar o mysqld_safe para ver qual é a saída e chegou até aqui:

[user@machine mysql]$ sudo /usr/bin/mysqld_safe
131205 01:13:33 mysqld_safe Logging to '/var/log/mysqld.log'.
131205 01:13:33 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Killed

Antes de desligar em mim.

O que acontece se eu mover os bancos de dados que o InnoDB usa?

De acordo com Patrick, verifiquei dmesg e procurei mysqld .

Eu encontrei o seguinte:

type=1400 audit(1386200078.706:1929): avc:  denied  { read } for  pid=20563 comm="nohup" path="/usr/sbin/mysqld" dev=xvda1 ino=375035 scontext=user_u:system_r:netutils_t:s0 tcontext=system_u:object_r:mysqld_exec_t:s0 tclass=file
sudo invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0

Call Trace:
 [<ffffffff802c1b64>] out_of_memory+0x8b/0x203
 [<ffffffff8020fa5d>] __alloc_pages+0x27f/0x308
 [<ffffffff802139dd>] __do_page_cache_readahead+0xc8/0x1af
 [<ffffffff8021424e>] filemap_nopage+0x14c/0x360
 [<ffffffff80208e9d>] __handle_mm_fault+0x444/0x144f
 [<ffffffff8026ea01>] monotonic_clock+0x35/0x7b
 [<ffffffff8029b54a>] attach_pid+0x7c/0xa9
 [<ffffffff80266d94>] do_page_fault+0xf72/0x131b
 [<ffffffff8024901b>] skb_dequeue+0x48/0x50
 [<ffffffff80254146>] unix_release_sock+0x19e/0x1fa
 [<ffffffff80261df5>] thread_return+0x6c/0x113
 [<ffffffff80207116>] kmem_cache_free+0x84/0xd7
 [<ffffffff80207116>] kmem_cache_free+0x84/0xd7
 [<ffffffff8025f82b>] error_exit+0x0/0x6e

E:

mysqld invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0

Call Trace:
 [<ffffffff802c1b64>] out_of_memory+0x8b/0x203
 [<ffffffff8020fa5d>] __alloc_pages+0x27f/0x308
 [<ffffffff802139dd>] __do_page_cache_readahead+0xc8/0x1af
 [<ffffffff8021424e>] filemap_nopage+0x14c/0x360
 [<ffffffff80208e9d>] __handle_mm_fault+0x444/0x144f
 [<ffffffff8020622a>] hypercall_page+0x22a/0x1000
 [<ffffffff8020622a>] hypercall_page+0x22a/0x1000
 [<ffffffff80266d94>] do_page_fault+0xf72/0x131b
 [<ffffffff80236fd3>] __vm_enough_memory+0xee/0xfc
 [<ffffffff8020e472>] do_mmap_pgoff+0x35e/0x74a
 [<ffffffff80236fd3>] __vm_enough_memory+0xee/0xfc
 [<ffffffff80263929>] _spin_lock_irqsave+0x9/0x14
 [<ffffffff802313f1>] __up_write+0x27/0xf2
 [<ffffffff8025f82b>] error_exit+0x0/0x6e

Mem-info:
DMA per-cpu:
cpu 0 hot: high 0, batch 1 used:0
cpu 0 cold: high 0, batch 1 used:0
DMA32 per-cpu:
cpu 0 hot: high 186, batch 31 used:79
cpu 0 cold: high 62, batch 15 used:58
Normal per-cpu: empty
HighMem per-cpu: empty
Free pages:        4780kB (0kB HighMem)
Active:114881 inactive:1 dirty:1 writeback:0 unstable:0 free:1195 slab:5226 mapped-file:541 mapped-anon:114329 pagetables:1094
DMA free:2004kB min:48kB low:60kB high:72kB active:540kB inactive:0kB present:9076kB pages_scanned:1381592 all_unreclaimable? yes
lowmem_reserve[]: 0 489 489 489
DMA32 free:2776kB min:2804kB low:3504kB high:4204kB active:458984kB inactive:4kB present:500960kB pages_scanned:10643850 all_unreclaimable? yes
lowmem_reserve[]: 0 0 0 0
Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA: 1*4kB 0*8kB 1*16kB 0*32kB 1*64kB 1*128kB 1*256kB 1*512kB 1*1024kB 0*2048kB 0*4096kB = 2004kB
DMA32: 28*4kB 1*8kB 0*16kB 1*32kB 1*64kB 0*128kB 0*256kB 1*512kB 0*1024kB 1*2048kB 0*4096kB = 2776kB
Normal: empty
HighMem: empty
585 pagecache pages
Swap cache: add 0, delete 0, find 0/0, race 0+0
Free swap  = 0kB
Total swap = 0kB
Free swap:            0kB
131072 pages of RAM
5993 reserved pages
4445 pages shared
0 pages swap cached
Out of memory: Killed process 20563, UID 0, (mysqld).

O que eu faço daqui?

    
por Nathan Lutterman 05.12.2013 / 02:10

2 respostas

5

Da saída dmesg que você forneceu, na verdade é o killer da OOM que está causando o seu problema.
Basicamente, o que acontece é que, ao lançar o mysql, o sistema esgota toda a memória disponível. Quando isso acontece, o kernel tem que matar alguma coisa para recuperar. Ele tem um algoritmo complexo usado para tentar encontrar algo para matar que não cause instabilidade no sistema. O algoritmo acontece para escolher o seu shell. Então, depois que seu shell é morto, descobre que não foi suficiente e começa a matar outras coisas. Eventualmente, ele chega ao processo mysql e o mata.

A saída dmesg também mostra que você tem apenas cerca de 500MB de memória no sistema. Eu normalmente acho que isso é suficiente para executar o mysql se for pequeno, e se você não se importa com o desempenho. Mas obviamente isso indica o contrário.
Há mais alguma coisa correndo na caixa usando muita memória? A saída dmesg deveria incluir também uma lista de processos e quanta memória eles estavam consumindo.

Se não houver mais nada usando uma quantidade anormal de memória, existem duas opções:

  1. Ativar troca
  2. Adicione mais memória (use um tamanho de instância maior).
por 05.12.2013 / 02:59
-1

Parece que seus arquivos de banco de dados antigos da instalação existente do mysql ainda estão por aí. Se houver dados que você precisa reter, execute o comando mysql_upgrade. Se você não precisa dos dados existentes, limpe o / var / lib / mysql e execute novamente o script mysql_secure_installation.

    
por 05.12.2013 / 02:38