L'unica cosa che mi viene in mente è ispezionare cosa sta facendo mysqld usando strace, come utente root:
strace -p 2959
Normalmente, strace dovrebbe bloccarsi immediatamente e mostrarti una chiamata a select(), perché mysqld dovrebbe essere in attesa di connessioni.
La chiamata dovrebbe essere qualcosa del tipo:
select(SOCKETNO, [OTHER_FDs], NULL, NULL, NULL)
particolarmente importante è il quarto parametro, che è un timeout di timeout. Se NULL, significa che mysqld dormirà fino a quando qualcuno non si connetterà. Se non NULL, significa che mysqld attenderà il tempo specificato e quindi eseguirà alcuni lavori di manutenzione. Un timeval molto piccolo potrebbe spiegare il consumo della CPU.
Credo che MySQL utilizzi sempre un timeout NULL (infinito). Ha senso ed è così che si stanno comportando i mysqld che sono in grado di raggiungere ora.
Tuttavia, potrebbero esserci alcuni problemi di gestione della connessione che impediscono a select di dormire di nuovo. Controlla se questo comportamento viene visualizzato non appena mysqld viene avviato o dopo che qualcuno si è connesso.