Включить плагин mysqlx на AWS RDS

Вопрос или проблема

Есть ли способ включить плагин mysqlx на AWS RDS, работающем на MySQL 8?

Когда я выполняю SHOW plugins, он показывает, что плагин mysqlx установлен, но ОТКЛЮЧЕН.

У меня есть C++ код, использующий MySQL C++ 8 коннектор, и я хочу избежать использования устаревшего JDBC коннектора; у меня уже есть код, работающий на локальной ВМ, и его “легко” настроить на системах, на которых мне нужно его развернуть, за исключением того, что для этого необходимо включить плагин mysqlx на SQL сервере.

Вопрос на развитие темы: почему я не захочу включить плагин mysqlx? В частности, я не смог найти много (или вообще какую-либо) документацию о том, почему он отключен на AWS RDS (я предполагаю, что есть какая-то причина, по которой он по умолчанию отключен)?

Замечание: если нет способа включить его в AWS, и мой единственный вариант – использовать устаревший код JDBC C, это приемлемый ответ, но если это так просто, как UPDATE plugins SET mysqlx = ACTIVE и единственные последствия для безопасности/производительности такие же, как и у любого другого экземпляра SQL сервера, то я предпочел бы пойти по этому пути и избежать переписывания частей моего C++ приложения.

Отвечу на свой вопрос, так как не могу его удалить: похоже, они этого не позволяют, хотя документация не только ужасна, но практически отсутствует. Кажется, если это явно не задокументировано как отключенное, то подразумевается, что это просто не разрешено по “каким-то” причинам.

Если вы нашли эту страницу в поисках “легкого” способа писать “современные” SQL коннекторы в “облаке”, удачи вам!

Я также сталкиваюсь с теми же проблемами, просмотр параметров в консоли AWS RDS не находит настроек.

INSTALL PLUGIN mysqlx SONAME 'mysqlx.so';

также возвращает ошибку, mysqlx уже установлен.

Также есть приложения mysql-client, такие как mysqladmin. Вы можете получить доступ к серверу и выполнить административную команду, но не удаётся найти подходящую команду. Возможно, это можно использовать как подсказку.

mysqladmin --host=xxx.rds.amazonaws.com --user=admin --password=xxx version

Ответ или решение

Включение плагина mysqlx на AWS RDS с MySQL версии 8 — это интересная тема, учитывая ограничения, связанные с управляемыми сервисами, такими как RDS. Начнем с теоретической части, затем рассмотрим пример и наконец обсудим применение и потенциальные последствия данного решения.

Теория

Плагин mysqlx предоставляет функциональность MySQL X Protocol, которая позволяет взаимодействовать с сервером MySQL через бинарный протокол, поддерживающий работу с документами, SQL и CRUD-операциями. Этот протокол делает возможным реализацию более современных и гибких архитектур, таких как приложения без SQL, работающие по схеме "без соединения", что позволяет разработанным решениям быть более масштабируемыми и поддерживать микросервисные архитектуры.

AWS RDS, являясь управляемым сервисом, настраивается для обеспечения безопасности и производительности по умолчанию. Определенные компоненты и функции могут быть отключены или настроены по умолчанию, чтобы предотвратить нарушения безопасности или ухудшение производительности. Отсутствие возможности включения mysqlx на AWS RDS может быть связано с этими целями, а также с тем, что этот плагин добавляет новый способ взаимодействия с базой данных, что может представлять определенные риски в плане контроля доступа и нагрузки.

Пример

Вы являетесь разработчиком, которому нужно использовать C++ приложение с MySQL C++ Connector 8, что требует включения mysqlx плагина для работы. Локально, на виртуальной машине, у вас всё настроено и работает. Однако, при переходе на RDS, вы обнаруживаете, что mysqlx установлен, но не активирован.

Вот пример того, как мог бы выглядеть ваш запрос на активацию:

SHOW PLUGINS;
-- Поиск в списке плагинов, чтобы увидеть состояние mysqlx
INSTALL PLUGIN mysqlx SONAME 'mysqlx.so';
-- Попытка переустановки для активации, но возвращается ошибка, т.к. плагин уже установлен

Однако, эти попытки окажутся бесполезными, так как AWS RDS не позволяет управлять плагинами напрямую.

Применение

Что же можно сделать в данной ситуации? Если нет возможности использовать mysqlx на AWS RDS, у вас есть несколько альтернативных путей действий:

  1. Пересмотреть архитектуру приложения: Если использование mysqlx не является критичным требованием, возможно, стоит рассмотреть использование JDBC для взаимодействия с базой данных. Обычно это потребует значительных изменений в коде, но может быть оправданно, если проект долгосрочный.

  2. Сменить провайдера: Если потребность в mysqlx критична и изменение кода невозможно, можно рассмотреть возможность использования другого облачного провайдера или собственной инстанса базы данных на виртуальных машинах, где вы управляете всей конфигурацией.

  3. Гибридный подход: Некоторые компании реализуют гибридные архитектуры, где база данных располагается частично в облаке (например, для продакшн данных), а частично — на собственных серверах (для специфичных задач, требующих специфичной конфигурации).

  4. Использование AWS Aurora: Стоит рассмотреть AWS Aurora, который совместим с MySQL и может поддерживать расширенные функции, однако это требует тщательного изучения документации и проведения тестов.

Почему mysqlx отключен?

Хотя официальная документация AWS может не объяснять причину отключения mysqlx, это скорее всего обусловлено соображениями безопасности и надежности. Обеспечение отказоустойчивости и минимизация рисков, связанных с внедрением новых функций и протоколов, имеют первостепенное значение в облачных окружениях.

В заключение, если mysqlx критически необходим для вашей архитектуры, и нет возможности изменить код, подумайте о пересмотре подходов к развертыванию или об использовании иных сервисов и климатических подходов, которые позволят удовлетворить ваши технологические и бизнес-цели, при этом обеспечивая безопасность и надежность ваших IT-систем.

Оцените материал
Добавить комментарий

Капча загружается...