Не удается создать новый экземпляр базы данных RDS MySQL с «lower_case_table_names=1»

#mysql #database #amazon-web-services #instance #amazon-rds

#mysql #База данных #amazon-web-services #экземпляр #amazon-rds

Вопрос:

Я пытаюсь создать новый экземпляр RDS DB MySQL версии 8.0.11 с «lower_case_table_names=1».

Создание базы данных застряло, и в журналах я вижу следующую ошибку:

«Разные настройки lower_case_table_names для сервера (‘1’) и словаря данных (‘0’)».

Кто-нибудь проходил через это?

Пожалуйста, помогите.

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

1. После создания базы данных без этого флага, вы не можете просто сделать SET PERSIST lower_case_table_names=1 в клиенте mysql (например, workbench)? Не уверен, как управляется RDS. При обычной установке все, что вам нужно, находится lower_case_table_names=1 в файле конфигурации.

Ответ №1:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html

lower_case_table_names Поскольку Amazon RDS использует файловую систему, чувствительную к регистру, установка значения параметра сервера lower_case_table_names равным 2 («имена, сохраненные как заданные, но сравниваемые в нижнем регистре») не поддерживается. Ниже приведены поддерживаемые значения для экземпляров базы данных Amazon RDS для MySQL:

0 («имена, сохраненные как заданные, и сравнения с учетом регистра») поддерживается для всех версий Amazon RDS для MySQL.

1 («имена, сохраненные в нижнем регистре, и сравнения не чувствительны к регистру») поддерживается для Amazon RDS для MySQL версии 5.5, версии 5.6, версии 5.7 и версии 8.0.19 и выше версий 8.0.

Параметр lower_case_table_names должен быть установлен как часть пользовательской группы параметров БД перед созданием экземпляра БД. Вам следует избегать изменения параметра lower_case_table_names для существующих экземпляров базы данных, поскольку это может привести к несоответствиям с резервными копиями для восстановления на момент времени и экземплярами базы данных для чтения-реплики.

Реплики чтения всегда должны использовать то же значение параметра lower_case_table_names, что и исходный экземпляр базы данных.

Ответ №2:

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_lower_case_table_names

Запрещается запускать сервер с настройкой lower_case_table_names, которая отличается от настройки, используемой при инициализации сервера. Ограничение необходимо, потому что параметры сортировки, используемые различными полями таблицы словаря данных, основаны на настройке, определенной при инициализации сервера, и перезапуск сервера с другой настройкой привел бы к несоответствиям в отношении порядка и сравнения идентификаторов.

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

Ответ №3:

Amazon RDS поддерживает группы параметров, которые определяют настройки для ядер баз данных.

Группа параметров для MySQL 8 включает настройку для lower_case_table_names :

Набор параметров RDS

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

Смотрите: Работа с группами параметров БД — Служба реляционных баз данных Amazon

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

1. Большое вам спасибо за ваш вклад. Это было именно то, что я сделал, но я не смог запустить экземпляр. Я связался со службой поддержки AWS, и они сказали, что с MySQL 8 вы не можете этого сделать, и они сослались на эту ошибку MySQL — bugs.mysql.com/bug.php?id=90695 . Еще раз спасибо!