В этой заметке хочется поделиться опытом по обновлению замечательного сервера Percona Server (основан на Oracle MySQL) с версии 5.6 до версии 5.7.

Как вы уже наверное знаете, уже вышел стабильный релиз Oracle MySQL 5.7 и вслед за ним выпущена улучшенная модификация от Percona. Если вы хотите посмотреть список улучшенных фич (Percona Server по сравнению с Oracle), то вам сюда: https://www.percona.com/software/mysql-database/percona-server/feature-comparison.
Список новых фич MySQL 5.7 в целом находится здесь: https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html.
Итак, по теме: как сделать безболезненный апгрейд?
Далее перечислю список граблей, на которые я наступил в этом процессе.

Apparmor


Если у вас используется Apparmor (в Ubuntu включен по умолчанию), нужно добавить следующие две строчки в /etc/apparmor.d/usr.sbin.mysqld:
/var/run/mysqld/mysqld.sock.lock rw,
/run/mysqld/mysqld.sock.lock rw,

Второй вариант, вообще отключить Apparmor для MySQL: sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/

Конфигурация


  • Если у вас включен binlog, то обязательно нужно назначить переменную server-id. Кроме того, в MySQL 5.7 по умолчанию значение переменной sync_binlog равно 1, что значит синхронизацию с диском при каждой транзакции. Если вы хотите оставить поведение по умолчанию версии 5.6, установите sync_binlog = 0. Если этого не сделать, вы получите значительную нагрузку на диски. Кстати, теперь формат бинлога по умолчанию ROW, если вас это не устраивает, укажите binlog_format = 'STATEMENT'.
  • Также серьёзное изменение внесено в режим SQL: по умолчанию включены жесткие проверки. Скорее всего, после апгрейда большинство ваших приложений перестанет работать (по крайней мере, это случилось у меня). Чтобы сохранить старый режим работы укажите переменную: sql_mode = «NO_ENGINE_SUBSTITUTION».

После апгрейда


Как обычно, рекомендуется запустить команду mysql_upgrade, которая обновит системную БД, а также проверит на соответствие все остальные БД на сервере.
Как обычно, рекомендуется выполнять апгрейд на тестовом сервере, смотреть на результаты и только потом выкатывать на рабочие сервера.
Успешных апгрейдов!

Комментарии (12)