Я создал сценарий для очистки 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: Какой параметр я могу изменить, чтобы изменить время ожидания запуска сервера в конфигурации ?
Вы можете использовать следующую опцию при запуске:
# 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.
Я знаю, что это старый вопрос, но я пишу на случай, если кто-то еще ищет лучший/различный ответ. У меня была похожая проблема, но при установке обновлений. Наше обновление занимает много времени, так как оно является частью кластера 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
В современных дистрибутивах для запуска службы используется 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
, чтобы убедиться, что перезагрузка прошла успешно)