Не вдається запустити mysql - mysql розмножується занадто швидко, зупинено


33

Сьогодні я зробив нову версію ubuntu 12.04 і пішов про створення мого локального середовища розробки. Я встановив mysql і відредагував /etc/mysql/my.cnfдля оптимізації InnoDB, але коли я намагаюся перезапустити mysql, він не вдається з помилкою:

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

Система виявляє, що існує проблема зі сценарієм 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

Будь-які ідеї?


Я вже спробував:

Я переглянув Google і знайшов помилку Ubuntu з apparmor ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366 ), змінив apparmor з режиму примусового режиму на режим скарги:

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

але це не допомогло. Я досі не можу запустити mysql.

Я також подумав, що проблема може бути тому, що логіни InnoDB були іншого розміру, ніж очікував mysql. Я видалив InnoDB лог - файли перед перезапуском з допомогою: sudo mv /var/lib/mysql/ib_logfile* /tmp. Не пощастило, хоча.

Обхід: Я знову встановив 12.04, переконавшись, що це не торкається /etc/mysql/my.cnf. Mysql працює, тому я можу перейнятися тим, що мені потрібно зробити. Але мені потрібно буде відредагувати його в якийсь момент - сподіваюсь, я розібрався з рішенням, або на це питання відповість цей момент ...

Відповіді:


29

Я нарешті розібрався з проблемою. В основному, визначення деяких параметрів було видалено з попередньої версії mysql і було замінено різними іменами. Щоб виправити, у /etc/mysql/my.cnf замініть:

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

з:

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

Це пов'язаний звіт про помилку запуску: https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/958120 .

Або легко запустити:

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

Але переконайтесь, що не встановлено стару установку версії mysql, якщо вона була видалена:

# Miraz quick mysql package check
dpkg -l *mysql*

У мене не було цієї проблеми, але dpkg-reconfigure mysql-server-5.5виправлено все, що було неправильно в моїй конфігурації.
Девід Пердю

у моєму випадку проблемою виявилося помилкове ім’я властивості у /etc/mysql/my.cnf....З цього блогу: dangtrinh.com/2014/05/… , запустити mysqld -v. Я спробував googling mysql код виходу 7, без успіху. Моя здогадка, що вихідний код 7 пов'язаний з помилками аналізу файлу конфігурації mysql.
MaasSql

У мене був цей самий випуск, але мені було складно відстежити, оскільки моя несправна конфігурація була під /etc/mysql/conf.d/*, а також тому, що існували старі журнали під назвою /var/log/mysql.*, які змусили мене не помітити активні журнали / var / log / mysql / *.
Дейв Берт

1
бічна примітка: utf8_unicode_ciкраще. Тепер навітьutf8mb4_unicode_ci
Акшай

10

У Innodb є налаштування за замовчуванням (innodb_buffer_pool_size), яке встановлено на 128 М - це може бути занадто великим для вашого сервера (особливо якщо ви використовуєте маленький AMI Amazon EC2 AMI - який я був) Виправлення, яке працювало для мене, полягало в тому, щоб додати наступне рядок до /etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

Я писав про це виправлення тут http://www.mlynn.org/2012/07/mysql-5-5-on-ubuntu-12-04-job-failed-to-start


Виявляється, мій VM просто пробіг пам’яті. Установка innodb_buffer_pool_sizeнижче була однією з частин рішення, але будьте обережні, можливо, вам просто не вистачить пам’яті.
thaddeusmt

10

У мене була схожа проблема. Це було неприємно, тому що я не міг побачити журнали помилок, які вказували б на що проблема

У моєму випадку значення, яке я встановив для innodb_buffer_pool_size, було занадто великим для пам’яті сервера.

Я виявив це, запустивши mysqld безпосередньо як користувач mysql.

# su mysql
# mysqld

Таким чином ви фактично бачите вихід помилок.


2
Це чудова порада, я намагався отримати якусь змістовну інформацію про налагодження з mysql. Спасибі!
eageranalyst

3

У мене також була схожа проблема. Елементи нижче кажуть, що їх було видалено із сервера mysql 5.5.
Якщо у вас їх є my.cnf, він не розпочнеться. Прокоментуйте їх #.
(Інформація, отримана з: http://dev.mysql.com/doc/refman/5.5/uk/replication-options-slave.html )

Параметри, на які впливає, відображені в цьому списку:

 --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

Ідеально! Саме те, що мене відкидало. Спасибі.
Джим В.

3

Він, схоже, зводиться до помилок у конфігурації MySQL, розміщених у /etc/mysql/my.cnfфайлах і в /etc/mysql/conf.d/.

У моєму випадку це було неправильне bind-addressзначення, оскільки IP-адреса моєї машини змінилася і MySQL більше не міг прив’язати. Не соромтеся дізнатися більше про це в цій статті блогу .


2

Хороший спосіб налагодження збоїв у процесі після запуску ( /etc/init/mysql.conf) - це перевірка початкових журналів:

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

Це дало мені помилку сокета:

помилка: 'Не вдається підключитися до локального сервера MySQL через сокет

У моєму випадку це було спричинено відсутнім userу [mysqld]групі вmy.cnf


1

Коли у мене була схожа помилка MySQL ("Робота не вдалося запустити") після оновлення з 11.10 до 12.04, коментуйте номер 27 на https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/ 573318? Коментарі = все для мене прекрасно працювало. Цитата:

Проблемою для мене було те, що після оновлення файл /etc/apparmor.d/local/usr.sbin.mysqld не існував. Я вручну скопіював один із одного із порожніх (тобто мав лише коментар до заголовка), і тоді все було добре.


1

Для мене рішенням було зняти рядок ...

set-variable = max_connections=200

... який є синтаксисом MySQL 3.x і його потрібно змінити

max_connections=200

1

У мене було те саме питання. Виявилося, реплікації майстра-раба mysql my.cnf. Перевірте своє/var/log/mysql/error.log .

Я сподіваюся, що це трохи допоможе. Спершу перевірте налаштування mysql, перш ніж витрачати дві години на apparmor, який просто працює.


1

У мене були ті самі проблеми, для мене це bind-addressбуло встановлено неправильно у моєму /etc/mysql/my.cnfфайлі. Тож здається, що все, що не так у моєму файлі my.cnf, може спричинити цю проблему. У журналах я не знайшов нічого, що вказало б на це як проблему.



1

Перевірте /tmpдозволи. У мене виникла ця проблема, після багатого часу гугл і перезавантаження я виявив, що /tmpдозволи 755.

Я змінюю його на 777 і mysqlпочинаю добре.


ця річ у древніх, але це була моя проблема .... не знаю, як це змінилося ...
TheHidden

в деяких випадках шляхом зміни файлової системи або встановлення /tmpнового розділу.
shgnInc

1

Після автоматичного оновлення до mysqld-5.5.53 ubuntu 14.04.1, mysql не запустився. Ці рядки з’явились у моєму системовому журналі:

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

Проблему було вирішено, створивши цей каталог:

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

0

Щойно оновлена ​​версія MySQL та AppArmor, як тут пропонується, щоб виправити цю проблему на Ubuntu 12.04, що працює на екземплярі Amazon ec2. Я все ще отримую помилку кілька разів, але MySQL перезавантажується автоматично.


1
Ласкаво просимо до Ask Ubuntu! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Рінгтейл

0

У мене були однакові повідомлення про помилки, але причина була іншою. Мої таблиці InnoDB були пошкоджені, оскільки вся файлова система перейшла в режим лише для читання. Я усунув корупцію, додавши наступний рядок до /etc/mysql/my.cf

innodb_force_recovery = 1

Я запустив MySQL:

sudo service mysql start

MySQL запустився, і я скинув / експортував усі таблиці. Я змінив innodb_force_recovery на 0 (= за замовчуванням) і перезапустив MySQL:

sudo service mysql restart

Я використовую Ubuntu 12.04 з MySQL 5.5. Минуло багато часу, перш ніж я знайшов проблему, і я сподіваюся, що я можу допомогти комусь у цій відповіді. Дивіться також http://dev.mysql.com/doc/refman/5.5/uk/forcing-innodb-recovery.html


0

У моєму випадку проблема полягала в /etc/mysql/my.cnfдозволі на файл.

Я змінив це для поваги, але це спричинило помилки

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"

The my.cnfДозвіл було 766 , і я змінив його на 744 і два з трьох помилок пішли. Є ще одне подібне повідомлення про помилку, але це не завадило запуску mysql.

Сподіваюся, це допомагає ...


0

У моєму випадку у мене була неправильна bind-addressдекларація. Я побіг ifconfigвідкрити приватну IP-адресу EC2 та оновив її у /etc/mysql/my.cnfфайлі.


0

У моєму випадку я знайшов проблему з дозволом на / tmp. Я щойно встановив дозвіл каталогу tmp на 766 і перезапустив службу mysql. Виправлено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.