Как стать автором
Обновить

Комментарии 8

А если слейв версии 8 может работать со старой 5.7, может проще было просто запустить «чистый» слейв, дождаться пока он все выкачает и отключить старый слейв. И так поочередно. Потом переключаем их в мастер… ну думаю вы поняли.
Удобство конечно на уровне плинтуса, но точно не будет проблем с совместимостью.

P.S. Тоже хотел на днях обновиться до 8 версии, спасибо за статью :)
Можно и так, конечно же. Всё зависит от имеющихся ресурсов.
О да, вы абсолютно правы, прогресс не стоит на месте, и вместе с ним и нагрузка в развивающемся проекте.
Я как-то раз тоже обновлялся вместе с железом, да ещё и на новые ОС. Процесс выглядел так:
1) Поднимался новый кластер (на трёх свежих, «жирных» нодах)
2) Новый кластер подключался slave'ом к production кластеру, то есть типичная master-slave репликация, только между двумя кластерами. Проверялось всё ли ок, все ли изменения реплицируются, даже пускал боевой трафик (на чтение) на ноды нового кластера.
3) Переезд выглядел так: старый кластер, который текущий боевой, переводился в read-only, новый отвязывался от старого и промоутился как мастер. В HAProxy IP'шники старого кластера подменялись на IP'шники нового. На этом всё, прошло на удивление без сучка без задоринки.
Надеюсь, подобный опыт будет кому-то полезен.
Между прочим неплохой план при наличии новых ресурсов. Жаль нам это было недоступно. Очень похож на это предложение.

Я также поступал при обновлении galera cluster — добавлял новые ноды на новом железе, переводил поток на них, старые выводил. Вообще это один из самых беспроблемных способов, как мне кажется.

А расскажите как вы после обновления побороли:

2020-04-03T12:44:19.671678Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2020-04-03T12:44:19.671682Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.


Спасибо.
Пока никак не решили, но с этой проблемой всё ясно — надо проальтерить все текстовые поля в UTF8MB4. В этом нам поможет pt-online-schema-change.
#!/bin/bash

ipAddress="10.0.0.2";

mysqlPort="3306";

MSQL="mysql --defaults-file=/root/mysql_root.cnf -h${ipAddress} -P${mysqlPort}";

for database_name in $(${MSQL} -BNe "SHOW DATABASES;" \
  | grep -v -E '(^information_schema$|^performance_schema$|^mysql$|^sys$)'); do

  for table_name in $(${MSQL} -BNe "SHOW TABLES IN ${database_name};"); do

    ${MSQL} -e "ALTER TABLE ${database_name}.${table_name} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;";

  done;

done;


cat /root/mysql_root.cnf


[client]
user = root
password = qwerty
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.