Есть ли способ создания триггеров и хранимых процедур в экземпляре RDS MySQL во время создания при создании среды Elastic Beanstalk? - PullRequest
0 голосов
/ 19 октября 2019

По умолчанию экземпляры RDS MySQL, созданные во время создания среды Elastic Beanstalk, не разрешают создание триггеров, функций и хранимых процедур, поскольку у главного пользователя нет привилегии SUPER, включено двоичное ведение журнала, а log_bin_trust_function_creators - этоложный. Поэтому любые сценарии, которые пытаются выполнить это в container_commands, завершатся неудачей.

Это можно обойти после создания экземпляра , изменив группу параметров DB по умолчанию с log_bin_trust_function_creators = 1. См. это видео для объяснения того, как сделать это в интерактивном режиме. Однако кажется, что вы не можете связать новый экземпляр с группой параметров не по умолчанию во время создания. Таким образом, вы вынуждены создавать экземпляры без триггеров и сохраненных процедур, изменять экземпляр для использования группы параметров не по умолчанию, перезагружать экземпляр, и только после этого вы можете запускать сценарии для создания триггеров и хранимых процедур.

Комучто еще хуже, вы даже не можете позволить вашим контейнерам-командам, которые создают триггеры, запускаться, потому что это приводит к сбою создания экземпляра, и вы не получаете рабочий экземпляр, к которому вы могли бы применить описанное ручное вмешательство. Поэтому вам нужно, чтобы ваши контейнерные команды были закомментированы во время создания, а затем повторно включены во время последующей перезагрузки 'eb deploy'. В этом сценарии вы не можете автоматизировать создание сред, требующих, чтобы DDL создавал триггеры, функции или хранимые процедуры.

1 Ответ

0 голосов
/ 22 октября 2019

Этот вопрос был написан с учетом конкретного параметра MySQL, но он относится к любой ситуации, когда требуется группа параметров БД, отличная от заданной по умолчанию. После некоторого обсуждения с технической поддержкой AWS вы можете связать нестандартную группу параметров БД с экземплярами RDS во время создания среды. Я предполагаю, что документация могла бы быть лучше; -)

Этот пример относится к MySQL 8.0 (mysql8.0), но должно быть очевидно, что вы измените для вашей конкретной ситуации.

Добавьте следующее в файл в .ebextensions /

Resources:
  customdbparametergroup:
    Type: 'AWS::RDS::DBParameterGroup'
    Properties:
      Description: "DB parameter group for Beanstalk RDS instance which enables functions, procedures, and triggers"
      Family: "mysql8.0"
      Parameters:
        "log_bin_trust_function_creators" : 1

  AWSEBRDSDatabase:
      Properties:
        DBParameterGroupName:
          Ref: customdbparametergroup

Конечно, если у вас уже есть файл конфигурации с разделом Resources:, вы просто добавите ресурс группы параметров и AWSEBRDSDatabase ключПри проверке созданного экземпляра имя группы параметров будет искажено обычным способом. Вы должны объявить группу параметров как ресурс в конфигурации, т.е. вы не можете указать имя существующей группы параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...