Предыстория: Я запускаю cqpweb, интерфейс запросов к корпусу, написанный на PHP и подключенный к базе данных mysql, на веб-сервере Apache2 под Ubuntu 18.04 LTS. Сервер Ubuntu был настроен с нуля, и в настоящее время нет никаких ручных настроек для mysql или php.
cqpweb работал успешно, если только он не начал выдавать сообщения об ошибках, подобные этому:
A MySQL query did not run successfully!
Original query: LOAD DATA LOCAL INFILE '/data2/cqpweb/cach/tab_dist_fycel9oplk' INTO TABLE `db_dist_g2f3ndxf40` FIELDS ESCAPED BY '' /* from User: knappen |
Function: create_db() | 2019-Apr-25 11:23:01 */
Error # 0:
Это произошло за одну ночь. Подобные запросы определенно работали 24 апреля в 17:55 (местное время, часовой пояс Берлина) и были прерваны в момент, указанный в сообщении об ошибке.
Вопрос: Было ли какое-то автоматическое обновление или обновление, которое может вызвать такое поведение.
Дополнительная информация:
php --version
PHP 7.2.17-0ubuntu0.18.04.1 (cli) (built: Apr 18 2019 14:12:38) ( NTS )
mysql --version
mysql Ver 14.14 Distrib 5.7.25, for Linux (x86_64) using EditLine wrapper
Проверка некоторых соответствующих файлов журналов:
/var/log/dkpg.log
: нет записей между 2019-04-24 14:47: 54 и 2019-04-26 06:26:23
/var/log/apt/history.log
: нет записей между 2019-04-24 14:47:54 и 2019-04-26 06:26:23
/var/log/unattended-upgrades/unattended-upgrades.log
:
2019-04-25 06:24:53,776 INFO Initial blacklisted packages:
2019-04-25 06:24:53,778 INFO Initial whitelisted packages:
2019-04-25 06:24:53,778 INFO Starting unattended upgrades script
2019-04-25 06:24:53,778 INFO Allowed origins are: o=Ubuntu,a=bionic, o=Ubuntu,a=bionic-security, o=UbuntuESM,a=bionic
2019-04-25 06:24:57,138 INFO No packages found that can be upgraded unattended and no pending auto-removals
Дополнительные выводы:
Форма /var/log/apache2/error.log:
[Thu Apr 25 06:25:03.544172 2019] [mpm_prefork:notice] [pid 1244] AH00171: Graceful restart requested, doing restart
Этот перезапуск происходит из-за cron, выполняющая скрипт /etc/cron.daily/apache2
. Таким образом, может произойти изменение, влияющее на то, что Apache2 установлен раньше, но станет активным в одночасье в критический интервал времени.
Смежный вопрос, исключающий другие потенциальные причины, такие как ограничения размера: Каковы ограничения по размеру для mysql в Ubuntu 18.04 и как их увеличить?
РЕДАКТИРОВАТЬ: Так как есть ежедневная работа cron, перезапускающая Apache2, вот некоторые изменения с history.log
между 2019-04-24 06:25:00 и 2019-04-25 06:25: 00
Start-Date: 2019-04-24 06:52:06
Commandline: /usr/bin/unattended-upgrade
Upgrade: distro-info-data:amd64 (0.37ubuntu0.3, 0.37ubuntu0.4)
End-Date: 2019-04-24 06:52:07
Start-Date: 2019-04-24 14:46:57
Commandline: apt-get upgrade
Requested-By: knappen (1000)
Upgrade: php7.2-common:amd64 (7.2.15-0ubuntu0.18.04.2, 7.2.17-0ubuntu0.18.04.1), php7.2-cli:amd64 (7.2.15-0ubuntu0.18.04.2, 7.2.17-0ubuntu0.18.04.1), ureadahead:amd64 (0.100.0-20, 0.100.0-21), linux-libc-dev:amd64 (4.15.0-47.50, 4.15.0-48.51), libsystemd0:amd64 (237-3ubuntu10.20, 237-3ubuntu10.21), php7.2-mysql:amd64 (7.2.15-0ubuntu0.18.04.2, 7.2.17-0ubuntu0.18.04.1), language-selector-common:amd64 (0.188.1, 0.188.2), udev:amd64 (237-3ubuntu10.20, 237-3ubuntu10.21), plymouth-theme-ubuntu-text:amd64 (0.9.3-1ubuntu7.18.04.1, 0.9.3-1ubuntu7.18.04.2), php7.2-json:amd64 (7.2.15-0ubuntu0.18.04.2, 7.2.17-0ubuntu0.18.04.1), php7.2-opcache:amd64 (7.2.15-0ubuntu0.18.04.2, 7.2.17-0ubuntu0.18.04.1), linux-signed-generic:amd64 (4.15.0.47.49, 4.15.0.48.50), libudev1:amd64 (237-3ubuntu10.20, 237-3ubuntu10.21), libplymouth4:amd64 (0.9.3-1ubuntu7.18.04.1, 0.9.3-1ubuntu7.18.04.2), python3-distupgrade:amd64 (1:18.04.30, 1:18.04.31), ubuntu-release-upgrader-core:amd64 (1:18.04.30, 1:18.04.31), systemd-sysv:amd64 (237-3ubuntu10.20, 237-3ubuntu10.21), php7.2-readline:amd64 (7.2.15-0ubuntu0.18.04.2, 7.2.17-0ubuntu0.18.04.1), libpam-systemd:amd64 (237-3ubuntu10.20, 237-3ubuntu10.21), systemd:amd64 (237-3ubuntu10.20, 237-3ubuntu10.21), libnss-systemd:amd64 (237-3ubuntu10.20, 237-3ubuntu10.21), plymouth:amd64 (0.9.3-1ubuntu7.18.04.1, 0.9.3-1ubuntu7.18.04.2), libapache2-mod-php7.2:amd64 (7.2.15-0ubuntu0.18.04.2, 7.2.17-0ubuntu0.18.04.1)
End-Date: 2019-04-24 14:47:54
С помощью Стефана Эверта и Эндрю Харди из списка рассылки cwb, причина странного поведения найдена, и проблема устраняется путем установки следующей конфигурации в /etc/php/7.2/apache2/php.ini
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
; http://php.net/mysqli.allow_local_infile
mysqli.allow_local_infile = On
. 18 апреля значение по умолчанию было тихо изменено при переходе с PHP 7.2.15 на PHP 7.2.17 и перенесено в дистрибутив Ubuntu.
Более подробную информацию и некоторые внутренние альтернативы cqpweb можно найти в этой публикации в списке рассылки CWB.
. ПРИМЕЧАНИЕ ДОБАВЛЕНО: В следующих версиях PHP будет выдано сообщение об ошибке с информативным сообщением об ошибке описанные условия см. в PHP :: Bug # 77956
.