Tidak dapat memulai mysql - mysql respawn terlalu cepat, berhenti

33

Hari ini saya melakukan instalasi baru ubuntu 12.04 dan mulai mengatur lingkungan pengembangan lokal saya. Saya menginstal mysql dan diedit /etc/mysql/my.cnfuntuk mengoptimalkan InnoDB tetapi ketika saya mencoba me-restart mysql, gagal dengan kesalahan:

[20:53][tom@Pochama:/var/www/website] (master) $ sudo service mysql restart
start: Job failed to start

Syslog mengungkapkan ada masalah dengan skrip init:

> tail -f /var/log/syslog

Apr 28 21:17:46 Pochama kernel: [11840.884524] type=1400 audit(1335644266.033:184): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=760 comm="apparmor_parser"
Apr 28 21:17:47 Pochama kernel: [11842.603773] init: mysql main process (764) terminated with status 7
Apr 28 21:17:47 Pochama kernel: [11842.603841] init: mysql main process ended, respawning
Apr 28 21:17:48 Pochama kernel: [11842.932462] init: mysql post-start process (765) terminated with status 1
Apr 28 21:17:48 Pochama kernel: [11842.950393] type=1400 audit(1335644268.101:185): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=811 comm="apparmor_parser"
Apr 28 21:17:49 Pochama kernel: [11844.656598] init: mysql main process (815) terminated with status 7
Apr 28 21:17:49 Pochama kernel: [11844.656665] init: mysql main process ended, respawning
Apr 28 21:17:50 Pochama kernel: [11845.004435] init: mysql post-start process (816) terminated with status 1
Apr 28 21:17:50 Pochama kernel: [11845.021777] type=1400 audit(1335644270.173:186): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=865 comm="apparmor_parser"
Apr 28 21:17:51 Pochama kernel: [11846.721982] init: mysql main process (871) terminated with status 7
Apr 28 21:17:51 Pochama kernel: [11846.722001] init: mysql respawning too fast, stopped

Ada ide?


Hal yang sudah saya coba:

Saya mencari di Google dan menemukan bug Ubuntu dengan apparmor ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366 ), saya mengubah apparmor dari mode penegakan ke mode komplain:

sudo apt-get install apparmor-utils
sudo aa-complain /usr/sbin/mysqld
sudo /etc/init.d/apparmor reload

tapi itu tidak membantu. Saya masih tidak dapat memulai mysql.

Saya juga berpikir masalahnya mungkin karena file log InnoDB memiliki ukuran yang berbeda dari yang diharapkan oleh mysql. Aku dihapus file log InnoDB sebelum restart menggunakan: sudo mv /var/lib/mysql/ib_logfile* /tmp. Tapi tidak berhasil.

Penanganan masalah: Saya menginstal ulang 12,04, memastikan tidak menyentuh /etc/mysql/my.cnfdengan cara apa pun. Mysql bekerja sehingga saya bisa melanjutkan apa yang harus saya lakukan. Tapi saya perlu mengeditnya di beberapa titik - Mudah-mudahan saya akan menemukan solusi, atau pertanyaan ini akan dijawab pada saat itu ...

Tom
sumber

Jawaban:

29

Saya akhirnya menemukan masalahnya. Pada dasarnya, definisi beberapa parameter telah dihapus dari versi mysql sebelumnya dan telah diganti dengan nama yang berbeda. Untuk memperbaikinya, di /etc/mysql/my.cnf, ganti:

# Tom Added to ensure the server character set is set to utf8
default-character-set = utf8
default-collation     = utf8_general_ci

dengan:

# Tom Added to ensure the server character set is set to utf8
character_set_server  = utf8
collation_server      = utf8_general_ci

Ini adalah laporan bug launchpad terkait: https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/958120 .

Atau mudah dijalankan:

# Miraz added dpkg-reconfigure
dpkg-reconfigure mysql-server-5.5

Tetapi pastikan tidak ada instalasi versi mysql lama yang diinstal, jika ada silakan hapus:

# Miraz quick mysql package check
dpkg -l *mysql*
Tom
sumber
Saya tidak memiliki masalah ini, tetapi dpkg-reconfigure mysql-server-5.5perbaikan apa pun yang salah dalam konfigurasi saya.
David Purdue
dalam kasus saya, masalahnya ternyata adalah nama properti yang salah ketik di /etc/mysql/my.cnf .... Dari blog ini: dangtrinh.com/2014/05/… , jalankan mysqld -v. Saya mencoba googling kode keluar mysql 7, tetapi tidak berhasil. Dugaan saya adalah kode keluar 7 berkaitan dengan kegagalan untuk mengurai file konfigurasi mysql.
MaasSql
Saya memiliki masalah yang sama tetapi sulit dilacak karena konfigurasi saya yang salah berada di bawah /etc/mysql/conf.d/* dan juga karena ada log lama yang disebut /var/log/mysql.* yang menyebabkan saya tidak memperhatikan log aktif / var / log / mysql / *.
Dave Burt
1
catatan: utf8_unicode_cilebih baik. Bahkan sekarangutf8mb4_unicode_ci
Akshay
10

Innodb memiliki pengaturan default (innodb_buffer_pool_size) yang diatur ke 128M - ini mungkin terlalu besar untuk server Anda (terutama jika Anda menggunakan Amazon EC2 AMI kecil - yang saya) Perbaikan yang bekerja untuk saya adalah dengan menambahkan yang berikut ini baris ke /etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

Saya menulis tentang perbaikan ini di sini http://www.mlynn.org/2012/07/mysql-5-5-on-ubuntu-12-04-job-failed-to-start

Michael Lynn
sumber
Ternyata VM saya hanya kehabisan memori. Pengaturan yang innodb_buffer_pool_sizelebih rendah adalah salah satu bagian dari solusi, tetapi waspadalah Anda mungkin kehabisan memori.
thaddeusmt
10

Saya punya masalah serupa. Itu membuat frustrasi karena saya tidak bisa melihat log kesalahan yang menunjukkan apa masalahnya.

Dalam kasus saya, nilai yang saya tetapkan untuk innodb_buffer_pool_size terlalu besar untuk memori server.

Saya menemukan ini dengan menjalankan mysqld secara langsung sebagai pengguna mysql.

# su mysql
# mysqld

Dengan cara ini Anda benar-benar melihat output kesalahan.

Joel
sumber
2
Ini adalah tip yang bagus, saya telah berjuang untuk mendapatkan beberapa informasi debug yang bermakna dari mysql. Terima kasih!
eageranalyst
3

Saya juga punya masalah serupa. Item di bawah mengatakan mereka telah dihapus dari server mysql 5.5.
Jika Anda memilikinya my.cnf, itu tidak akan mulai. Berkomentarlah dengan mereka #.
(Info berasal dari: http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html )

Opsi yang terpengaruh ditampilkan dalam daftar ini:

 --master-host
 --master-user
 --master-password
 --master-port
 --master-connect-retry
 --master-ssl
 --master-ssl-ca
 --master-ssl-capath
 --master-ssl-cert
 --master-ssl-cipher
 --master-ssl-key
Michael Salamon
sumber
Sempurna! Persis apa yang membuatku marah. Terima kasih.
Jim W.
3

Tampaknya memunculkan kesalahan dalam konfigurasi MySQL, terletak di /etc/mysql/my.cnfdan file dalam /etc/mysql/conf.d/.

Dalam kasus saya itu adalah bind-addressnilai yang salah , karena alamat IP mesin saya telah berubah dan MySQL tidak dapat mengikat lagi. Jangan ragu untuk membaca lebih lanjut tentang ini di artikel blog ini .

boteeka
sumber
2

Cara yang baik untuk men-debug kegagalan dalam proses pasca-mulai ( /etc/init/mysql.conf) adalah dengan memeriksa log pemula:

sudo tail -f /var/log/upstart/mysql.log 

Itu memberi saya kesalahan soket:

kesalahan: 'Tidak dapat terhubung ke server MySQL lokal melalui soket

Dalam kasus saya itu disebabkan oleh userpengaturan yang hilang di bawah [mysqld]grup dimy.cnf

Prusswan
sumber
1

Ketika saya memiliki kesalahan MySQL yang serupa ("Pekerjaan gagal dimulai") setelah memutakhirkan dari 11,10 menjadi 12,04, komentar # 27 di https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/ 573318? Komentar = semua bekerja dengan baik untuk saya. Mengutip:

Masalahnya bagi saya adalah bahwa file /etc/apparmor.d/local/usr.sbin.mysqld tidak ada setelah peningkatan. Saya secara manual menyalin satu dari salah satu yang kosong (yaitu hanya memiliki komentar header) dan kemudian semuanya baik-baik saja.

marcvangend
sumber
1

Bagi saya solusinya adalah menghapus garis ...

set-variable = max_connections=200

... yang merupakan sintaks MySQL 3.x dan perlu diubah ke

max_connections=200
Ken West
sumber
1

Saya memiliki masalah yang sama. Ternyata replikasi slave master mysql my.cnf. Periksa /var/log/mysql/error.log.

Saya harap itu sedikit membantu. Periksa pengaturan mysql terlebih dahulu sebelum Anda menghabiskan dua jam dengan apparmor yang berfungsi dengan baik.

shadowdroid
sumber
1

Saya memiliki masalah yang sama, bagi saya file bind-addressitu tidak diatur dengan benar /etc/mysql/my.cnf. Jadi sepertinya apa pun yang tidak benar di my.cnf dapat menyebabkan masalah ini. Saya belum menemukan apa pun di log yang menunjukkan ini sebagai masalah.

Chris
sumber
1

Masalah saya adalah 0% ruang kosong! Periksa ulang :-)

moamahi
sumber
1

Periksalah /tmp izinnya. Saya mengalami masalah ini, setelah berkali-kali google dan restart, saya menemukan bahwa /tmpizin adalah 755.

Saya mengubahnya ke 777 dan mysqlmulai dengan baik.

shgnInc
sumber
benda ini pada zaman dahulu tetapi ini adalah masalah saya .... tidak tahu bagaimana itu berubah ...
TheHidden
dalam beberapa kasus, dengan mengubah sistem file atau memasang /tmppartisi baru.
shgnInc
1

Setelah pembaruan otomatis ke mysqld-5.5.53 ubuntu 14.04.1, mysql tidak akan mulai. Baris-baris ini muncul di syslog saya:

Oct 27 06:05:51 hostname kernel: [  593.168925] init: mysql post-start process (4997) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.178241] type=1400 audit(1477562751.231:31): apparmor="STATUS" operation="profile_replace" profile="unconfined" name
Oct 27 06:05:51 hostname kernel: [  593.204392] init: mysql main process (5032) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.204404] init: mysql respawning too fast, stopped

Masalahnya dipecahkan dengan membuat direktori ini:

sudo mkdir /var/lib/mysql-files
sudo chmod 700 /var/lib/mysql-files
sudo chown mysql:mysql /var/lib/mysql-files
sudo /etc/init.d/mysql start
Yapsr
sumber
0

Baru saja memperbarui versi MySQL dan AppArmor seperti yang disarankan di sini untuk memperbaiki masalah ini pada Ubuntu 12.04 yang berjalan di Amazon ec2 misalnya. Saya masih mendapatkan kesalahan beberapa kali tetapi MySQL me-restart sendiri secara otomatis.

Jay Prakash
sumber
1
Selamat Datang di Tanya Ubuntu! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Ringtail
0

Saya memiliki pesan kesalahan yang sama, tetapi penyebabnya berbeda. Tabel InnoDB saya rusak, karena seluruh sistem file beralih ke mode read-only. Saya memperbaiki korupsi dengan menambahkan baris berikut ke /etc/mysql/my.cf

innodb_force_recovery = 1

Saya memulai MySQL:

sudo service mysql start

MySQL memang memulai dan saya membuang / mengekspor semua tabel. Saya mengubah innodb_force_recovery ke 0 (= default) dan memulai kembali MySQL:

sudo service mysql restart

Saya menggunakan Ubuntu 12.04 dengan MySQL 5.5. Butuh waktu lama sebelum saya menemukan masalah dan saya harap saya dapat membantu seseorang dengan jawaban ini. Lihat juga http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

Coanda
sumber
0

Dalam kasus saya masalahnya adalah /etc/mysql/my.cnf izin file.

Saya mengubahnya untuk kenyamanan tapi itu menyebabkan erro suka

kernel: [604528.290448] type=1400 audit(1424350956.727:193): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/mysqld" pid=15008 comm="apparmor_parser"

Itu my.cnf izin adalah 766 dan saya berubah ke 744 dan dua dari tiga kesalahan pergi. Masih ada satu pesan kesalahan serupa tetapi tidak mencegah mysql dari memulai.

Semoga ini membantu...

Marcelo_nnn
sumber
0

Dalam kasus saya, saya salah bind-addressdeklarasi. Saya berlari ifconfiguntuk menemukan alamat IP pribadi EC2 dan memperbaruinya dalam /etc/mysql/my.cnffile.

Muntah
sumber
0

Dalam kasus saya, saya menemukan masalah izin pada / tmp. Saya baru saja mengatur izin direktori tmp ke 766 dan memulai kembali layanan mysql. Diperbaiki.

Fernando Luis Barbosa
sumber