ОБНОВЛЕНИЕ 2 - AWS выпустила обновление платформы Aurora-mysql 1.19.1, которое устраняет эту и другие проблемы. https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.1191.html
ОБНОВИТЬ - AWS Support подтвердила, что это известная проблема с межрегиональными репликами платформы Aurora mysql 1.x. Обходной путь - позвонить mysql.rds_skip_repl_error;
на реплике после внесения изменений представления / процедуры / функции на главном сервере, пока реплика не будет зависнуть, а затем вручную внести эти изменения представления / процедуры / функции на реплике
Когда я настраиваю межрегиональную репликацию с помощью Amazon Aurora-mysql (платформа 1.x, версия движка 5.6), она работает нормально, пока я не создаю представление, функцию или процедуру в главном устройстве, а затем подчиненное устройство обнаруживает ошибку и репликация прекращается. пока я не позвоню CALL mysql.rds_skip_repl_error;
. Ошибка:
[ERROR] Slave SQL: Error 'Access denied; you need (at least one of) the SUPER privilege(s) for this operation' on query. Default database: 'mydatabasename'. Query: 'CREATE DEFINER=`myusername`@`%` PROCEDURE `MyProcedureName`... (SNIP SQL HERE)'
2019-05-09 02:29:10 8118 [Warning] Slave: Access denied; you need (at least one of) the SUPER privilege(s) for this operation Error_code: 1227
2019-05-09 02:29:10 8118 [Warning] Slave: Access denied; you need (at least one of) the SUPER privilege(s) for this operation Error_code: 1227
2019-05-09 02:29:10 8118 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin-changelog.000016' position 24293051
Это потому, что ведомое устройство выполняет репликацию как rdsrepladmin
пользователь, но когда я создаю свою процедуру на мастере, я вхожу в систему как myusername
. Я не могу установить в DEFINER что-либо другое, потому что Аврора не позволит мне иметь привилегию SUPER (которая вам нужна для создания представления / процедуры / функции от имени другого пользователя).
Я также, кажется, не могу игнорировать представления / процедуры / функции как часть репликации.
Есть ли способ обойти это, кроме звонка CALL mysql.rds_skip_repl_error;
на ведомом устройстве каждый раз, когда мне нужно коснуться view / proc / function?