Изменение тайм-аута запуска MySQL (сообщается [ошибка], хотя mysql запущен правильно)

Я создал сценарий для очистки InnoDB механизма хранения . Все работает нормально, за исключением того, что создание файлов ib_logfile0 и ib_logfile1 , когда для innodb_log_file_size установлено значение 1 ГБ , требуется время, что приводит к etc / init.d / mysql для тайм-аута и сообщения об ошибке, хотя в фоновом режиме MySQL запускается нормально.

Запуск mysql

$ /etc/init.d/mysql start
* Starting MariaDB database server mysqld  [fail] 

Тем временем в журналах

$ tail -f /var/log/mysql.err
120426 11:19:55  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 1024 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500 600 700 800 900 1000
120426 11:20:07  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 1024 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500 600 700 800 900 1000
[...]
120426 11:20:24 [Note] /usr/sbin/mysqld: ready for connections.
# Version: '5.5.23-MariaDB-mariadb1~oneiric-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

я ищу способ предотвратить тайм-аут сценария запуска. Когда я смотрю на /etc/init.d/mysql , я вижу переменную $ {MYSQLD_STARTUP_TIMEOUT} , но не знаю, где она установлена. Я также искал в документации такой вариант, но не нашел.

Q1: Могу ли я указать настраиваемый тайм-аут запуска в качестве параметра для /etc/init.d/mysql ?
Q2: Какой параметр я могу изменить, чтобы изменить время ожидания запуска сервера в конфигурации ?

4
задан 23 May 2017 в 15:41
3 ответа

Вы можете использовать следующую опцию при запуске:

# 900 is the default, 0 won't wait at all
--service-startup-timeout=900

В вашем сценарии инициализации или my.cnf это будет выглядеть так:

service_startup_timeout=900

Дополнительная документация находится здесь http://dev.mysql.com/doc/refman/5.5/en/mysql-server.html

Чтобы установить время для сценария запуска, чтобы увидеть, принимает ли он новое значение тайм-аута, используйте команду времени Linux вместе

# time /etc/init.d/mysql start

Сравните сообщенное время выполнения со значением тайм-аута, посмотрите, изменится ли оно при изменении тайм-аута, если нет, то параметр либо не работает должным образом (возможно, MariaDB не поддерживает его), либо он неправильно объявлен в config.

1
ответ дан 3 December 2019 в 03:46

Я знаю, что это старый вопрос, но я пишу на случай, если кто-то еще ищет лучший/различный ответ. У меня была похожая проблема, но при установке обновлений. Наше обновление занимает много времени, так как оно является частью кластера Galera и должно быть скопировано поверх того, что оно пропустило в процессе работы.

Для запуска:

MYSQLD_STARTUP_TIMEOUT=900 /etc/init.d/mysql start

или на системе с service, как Ubuntu:

sudo MYSQLD_STARTUP_TIMEOUT=900 service mysql start

И в моем случае, для обновления вызывается:

sudo MYSQLD_STARTUP_TIMEOUT=900 apt-get dist-upgrade
2
ответ дан 3 December 2019 в 03:46

В современных дистрибутивах для запуска службы используется systemd. Если вы пробовали MYSQLD_STARTUP_TIMEOUT , и это не сработало, вы, вероятно, используете это. Сценарий /etc/init.d/mysql больше не используется, поэтому MYSQLD_STARTUP_TIMEOUT не действует.

Вам нужно найти свой mariadb.service файл. В нашем случае он не содержал тайм-аута, поэтому использовалось значение по умолчанию для MariaDB. Просто добавьте:

TimeoutStartSec = 0

в раздел [Service] , и время ожидания никогда не истечет.

Было бы неплохо создать свой собственный файл конфигурации, содержащий это, чтобы он не перезаписывался путем более поздних переустановок.

В ubuntu 18.04 вы найдете этот файл в

/lib/systemd/system/mariadb.service

Поместите свой собственный файл в

/etc/systemd/system/mariadb.service.d

Не забудьте запустить systemctl daemon-reload после добавления где-то тайм-аута (и, возможно, проверьте / var / log / syslog , чтобы убедиться, что перезагрузка прошла успешно)

0
ответ дан 3 December 2019 в 03:46

Теги

Похожие вопросы