MariaDB продолжает выходить, когда я запускаю его через Supervisord
Я пытаюсь настроить стек LEMP в rkt (с файлами Docker), поэтому я использую Supervisord, чтобы все работало в одном контейнере. Когда я собираю и запускаю контейнер Mariadb отдельно, он работает нормально. Как только я пытаюсь запустить его через Supervisord, MariaDB сразу же завершает работу. Что я делаю неправильно?
Я хочу использовать Supervisord и для других вещей, поэтому отправляю его каждый раз, когда запускаю его: RUN printf "\n[program:mysqld]\ncommand=sleep 5; mysqld_safe --skip-syslog\nstartretries=10\n" >> /etc/supervisor/conf.d/supervisord.conf
Сон 5 и стартретры я добавил для целей тестирования.
Журнал ошибок выглядит так:
161130 9:32:25 [Note] InnoDB: Using mutexes to ref count buffer pool pages
161130 9:32:25 [Note] InnoDB: The InnoDB memory heap is disabled
161130 9:32:25 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
161130 9:32:25 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
161130 9:32:25 [Note] InnoDB: Compressed tables use zlib 1.2.8
161130 9:32:25 [Note] InnoDB: Using Linux native AIO
161130 9:32:25 [Note] InnoDB: Using CPU crc32 instructions
161130 9:32:25 [Note] InnoDB: Initializing buffer pool, size = 128.0M
161130 9:32:25 [Note] InnoDB: Completed initialization of buffer pool
161130 9:32:25 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
161130 9:32:25 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
161130 9:32:25 [Note] InnoDB: Database physically writes the file full: wait...
161130 9:32:25 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
161130 9:32:25 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
161130 9:32:26 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
161130 9:32:26 [Warning] InnoDB: New log files created, LSN=45781
161130 9:32:26 [Note] InnoDB: Doublewrite buffer not found: creating new
161130 9:32:26 [Note] InnoDB: Doublewrite buffer created
161130 9:32:26 [Note] InnoDB: 128 rollback segment(s) are active.
161130 9:32:26 [Warning] InnoDB: Creating foreign key constraint system tables.
161130 9:32:26 [Note] InnoDB: Foreign key constraint system tables created
161130 9:32:26 [Note] InnoDB: Creating tablespace and datafile system tables.
161130 9:32:26 [Note] InnoDB: Tablespace and datafile system tables created.
161130 9:32:26 [Note] InnoDB: Creating zip_dict and zip_dict_cols system tables.
161130 9:32:26 [Note] InnoDB: zip_dict and zip_dict_cols system tables created.
161130 9:32:26 [Note] InnoDB: Waiting for purge to start
161130 9:32:26 [Note] InnoDB: Percona XtraDB (link removed) 5.6.32-79.0 started; log sequence number 0
[много повторений между здесь]
161130 9:32:44 [Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool
161130 9:32:45 [Note] InnoDB: Shutdown completed; log sequence number 1623609
161130 9:32:45 [Note] InnoDB: Using mutexes to ref count buffer pool pages
161130 9:32:45 [Note] InnoDB: The InnoDB memory heap is disabled
161130 9:32:45 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
161130 9:32:45 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
161130 9:32:45 [Note] InnoDB: Compressed tables use zlib 1.2.8
161130 9:32:45 [Note] InnoDB: Using Linux native AIO
161130 9:32:45 [Note] InnoDB: Using CPU crc32 instructions
161130 9:32:45 [Note] InnoDB: Initializing buffer pool, size = 128.0M
161130 9:32:45 [Note] InnoDB: Completed initialization of buffer pool
161130 9:32:45 [Note] InnoDB: Highest supported file format is Barracuda.
161130 9:32:45 [Note] InnoDB: 128 rollback segment(s) are active.
161130 9:32:45 [Note] InnoDB: Waiting for purge to start
161130 9:32:46 [Note] InnoDB: Percona XtraDB (link removed) 5.6.32-79.0 started; log sequence number 1623609
161130 9:32:46 [Note] Plugin 'FEEDBACK' is disabled.
161130 9:32:46 [Note] InnoDB: FTS optimize thread exiting.
161130 9:32:46 [Note] InnoDB: Starting shutdown...
161130 9:32:47 [Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool
161130 9:32:48 [Note] InnoDB: Shutdown completed; log sequence number 1623619
Ни одной ошибки, просто начинает отключаться.
Идеи?
1 ответ
Хорошо, так что в конечном итоге я заставил это бежать. Я добавил две вещи: https://github.com/Kloadut/dokku-md-dockerfiles/tree/469a32ed0696803808cd07413f13ee22c7b0e6e2
# prevent apt from starting mariadb right after the installation
RUN printf '#!/bin/sh\nexit 101' > /usr/sbin/policy-rc.d; chmod +x /usr/sbin/policy-rc.d
в паре с:
# allow autostart again
RUN rm /usr/sbin/policy-rc.d
Затем другая вещь состояла в том, что я запускаю файл сценария, выполняющий некоторые безопасные установки базы данных, и он заканчивается:
tail -f /var/log/mysql.log /var/log/mysql.err /var/log/mysql/mariadb-slow.log
И это все. На самом деле не уверен, почему их отсутствие заставит MariaDB остановиться, поскольку я не видел, чтобы они использовались где-либо еще. Хвост - это особенно странно, так как я, хотя Supervisord справился бы с этим.
В любом случае, если кто-то еще попадется на это, посмотрите файл Dockerfile и файл сценария по ссылке выше. Это было все, что нужно для меня.