#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, используя группу параметров.
Смотрите: Работа с группами параметров БД — Служба реляционных баз данных Amazon
Комментарии:
1. Большое вам спасибо за ваш вклад. Это было именно то, что я сделал, но я не смог запустить экземпляр. Я связался со службой поддержки AWS, и они сказали, что с MySQL 8 вы не можете этого сделать, и они сослались на эту ошибку MySQL — bugs.mysql.com/bug.php?id=90695 . Еще раз спасибо!