Миграция с MariaDB 10.3 на MariaDB 10.4 с кластером Galera
С MariaDB 10.1 патч MySQL-wsrep был интегрирован в MariaDB Server. Поэтому в MariaDB 10.1 и выше функциональность кластера MariaDB Galera можно получить, установив стандартные пакеты MariaDB Server и пакет библиотеки поставщика wsrep Galera.
Начиная с MariaDB 10.1, Galera Cluster поставляется с MariaDB Server. Обновление узла Galera Cluster очень похоже на обновление сервера с MariaDB 10.3 на MariaDB 10.4. Более подробную информацию об этом процессе, а также о несовместимостях между версиями, см. в Руководстве по обновлению.
Поэтапное обновление
Следующие шаги можно использовать для поэтапного обновления с MariaDB 10.3 на MariaDB 10.4 при использовании кластера Galera. При поэтапном обновлении каждый узел обновляется индивидуально, поэтому кластер всегда остается работоспособным. С точки зрения приложения простоя нет.
Сначала, перед началом:
- Сначала ознакомьтесь с Руководством по обновлению с MariaDB 10.3 на MariaDB 10.4, чтобы узнать, что изменилось между основными версиями.
- Проверьте, были ли изменены или удалены системные переменные или параметры. Убедитесь, что конфигурация вашего сервера совместима с новой версией MariaDB перед обновлением.
- Проверьте, изменилась ли репликация в новой версии MariaDB каким-либо образом, что могло бы вызвать проблемы во время работы кластера, содержащего обновленные и не обновленные узлы.
- Проверьте, были ли добавлены новые функции в новую версию MariaDB. Если новую функцию новой версии MariaDB нельзя воспроизвести в старой версии MariaDB, не используйте эту функцию, пока все узлы кластера не будут обновлены до новой версии MariaDB.
- Далее, убедитесь, что номера версий Galera совместимы.
- Если вы обновляетесь с последней версии MariaDB 10.3 на MariaDB 10.4, то версии будут совместимы. MariaDB 10.3 использует Galera 3 (т.е. версии поставщика wsrep Galera 25.3.x), а MariaDB 10.4 использует Galera 4 (т.е. версии поставщика wsrep Galera 26.4.x). Это означает, что обновление до MariaDB 10.4 также обновляет систему до Galera 4. Однако Galera 3 и Galera 4 должны быть совместимы для целей поэтапного обновления, если вы используете Galera 26.4.2 или более позднюю версию.
- См. Что такое MariaDB Galera Cluster?: Версии поставщика wsrep Galera для получения информации о том, какие версии MariaDB используют какие версии поставщика wsrep Galera.
- В идеале вы хотите иметь достаточно большой gcache, чтобы избежать передачи моментальных снимков состояния (SST) во время поэтапного обновления. Размер gcache можно настроить, установив
gcache.sizeНапример:
wsrep_provider_options="gcache.size=2G"
Перед обновлением лучше всего создать резервную копию вашей базы данных. Это всегда хорошая идея перед обновлением. Мы рекомендуем Mariabackup.
Затем для каждого узла выполните следующие шаги:
- Измените конфигурацию репозитория, чтобы менеджер пакетов системы устанавливал MariaDB 10.4. Например,
- В дистрибутивах Linux, подобных Debian, Ubuntu и другим, см. Обновление репозитория MariaDB APT до новой основной версии для получения дополнительной информации.
- В дистрибутивах Linux, подобных RHEL, CentOS, Fedora и другим, см. Обновление репозитория MariaDB YUM до новой основной версии для получения дополнительной информации.
- В дистрибутивах Linux, подобных SLES, OpenSUSE и другим, см. Обновление репозитория MariaDB ZYpp до новой основной версии для получения дополнительной информации.
- Если вы используете прокси балансировки нагрузки, такой как MaxScale или HAProxy, убедитесь, что сервер выведен из пула, чтобы он не получал новых подключений.
- Остановить MariaDB.
- Удалите старую версию MariaDB и поставщика wsrep Galera.
- В дистрибутивах Linux, подобных Debian, Ubuntu и другим, выполните следующее:
sudo apt-get remove mariadb-server galera - В дистрибутивах Linux, подобных RHEL, CentOS, Fedora и другим, выполните следующее:
sudo yum remove MariaDB-server galera - В дистрибутивах Linux, подобных SLES, OpenSUSE и другим, выполните следующее:
sudo zypper remove MariaDB-server galera
- В дистрибутивах Linux, подобных Debian, Ubuntu и другим, выполните следующее:
- Установите новую версию MariaDB и поставщика wsrep Galera.
- В дистрибутивах Linux, подобных Debian, Ubuntu и другим, см. Установка пакетов MariaDB с помощью APT для получения дополнительной информации.
- В дистрибутивах Linux, подобных RHEL, CentOS, Fedora и другим, см. Установка пакетов MariaDB с помощью YUM для получения дополнительной информации.
- В дистрибутивах Linux, подобных SLES, OpenSUSE и другим, см. Установка пакетов MariaDB с помощью ZYpp для получения дополнительной информации.
- Внесите необходимые изменения в параметры конфигурации в файлах параметров, такие как
my.cnf. Это включает удаление любых системных переменных или параметров, которые больше не поддерживаются. - В дистрибутивах Linux, использующих
systemd, может потребоваться увеличить таймаут запуска службы, так как стандартный таймаут в 90 секунд может быть недостаточным. Для получения дополнительной информации см. Systemd: Настройка таймаута службы Systemd. - Запустить MariaDB.
- Выполните
mysql_upgradeс параметром--skip-write-binlog.-
mysql_upgradeвыполняет две задачи:- Обеспечивает полную совместимость системных таблиц в базе данных
mysqlс новой версией. - Выполняет очень быструю проверку всех таблиц и помечает их как совместимые с новой версией MariaDB.
- Обеспечивает полную совместимость системных таблиц в базе данных
-
После завершения этого процесса для одного узла переходите к следующему.
Обратите внимание, что при обновлении поставщика wsrep Galera иногда может измениться версия протокола Galera. Поставщик wsrep Galera не должен начать использовать новую версию протокола, пока все узлы кластера не будут обновлены до новой версии, поэтому это обычно не проблема при поэтапном обновлении. Однако это может вызвать проблемы, если вы перезапустите не обновленный узел в кластере, где остальные узлы были обновлены.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/upgrading-from-mariadb-103-to-mariadb-104-with-galera-cluster/