После обновления mysql, работающего на ZFS до версии 8.0 сервис не стартует, а в логе /var/log/mysql/error.log и наблюдаю такое:
The redo log file ./#innodb_redo/#ib_redo5 size 3072000 is not a multiple of innodb_page_size
https://stackoverflow.com/a/73200473
Вот тут написано - что нужно довести его размер до кратного 8192 или 16384 (в завосимости от заданного innodb_page_size) путём дописывания нулей в конец файла.
В моем случае - размер файла кратен 8192, но не кратен 16384.
Попробую дописать в файл 8192 нуля:
dd if=/dev/zero bs=1 count=8192 of=./zeros cat zeros >> /var/lib/mysql/#innodb_redo/#ib_redo5 service mysql restart
Или еще проще, для всех файлов сразу:
truncate -s 64M /var/lib/mysql/#innodb_redo/#ib_redo*
В результате - сервис нормально стартует.
Однако - успешный запуск не предполагает успешного перезапуска. Чтобы зафиксировать успех делаем следующее:
- копируем файлик сервиса, чтобы немного кастомизировать его:
cp /lib/systemd/system/mysql.service /etc/systemd/system/
- Добавляем в файл /etc/systemd/system/mysql.service строку:
ExecStartPre=+/bin/bash -c '/usr/bin/truncate -s 64M /var/lib/mysql/#innodb_redo/#ib_redo*'
- Обновляем конфиг сервисов:
systemctl daemon-reload
- Проверяем:
service mysql restart
Discussion