Назад | Перейти на главную страницу

Обновите базу данных RDS через mysqlbinlog: «вам нужны (по крайней мере, одна из) привилегии SUPER»

Мы переводим производственную площадку на EC2 / RDS

Следуйте этим инструкциям: http://geehwan.posterous.com/moving-a-production-mysql-database-to-amazon

Я установил двоичное ведение журнала на основе строк на производственном сервере:

mysqldump --single-transaction --master-data = 2 -C -q -u root -p> backup.sql

затем импортируется в экземпляр RDS. Никаких драм.

Из-за размера базы данных и минимальных требований к времени простоя мне нужно обновить базу данных ec2 до последних данных через бинарные журналы, и это не позволит мне.

mysqlbinlog mysql-bin.000004 --start-position = 360812488 | mysql -uroot -p -h

и он говорит:

ОШИБКА 1227 (42000) в строке 6: Доступ запрещен; вам нужны (по крайней мере, одна из) привилегии SUPER для этой операции

Я предполагаю, основываясь на том, что находится в строке 6 бинлога, что это операторы «запись в BINLOG» в резервной копии SQL, и поскольку RDS не поддерживает это, он не может запускать эти операторы или что-то в этом роде, Я действительно не знаю.

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

Скорее всего это происходит потому, что mysqlbinlog пишет BINLOG команда в качестве первой команды для вывода, и выполнение этой команды требует SUPER привилегии, которых у вас нет в RDS.

Чтобы отбросить эту команду, используйте --base64-output=NEVER вариант (обратите внимание, для этого потребуется также --read-from-remote-server --host=localhost --user username --password).

Однако после того, как вы преодолеете эту проблему, вероятно, возникнет другая, на этот раз с @@session команды, которые mysqlbinlog пишет на выход. Они также требуют SUPER привилегии.

Я не нашел лучшего способа использовать sed -i '/SET @@session/d' binlog_dump.sql чтобы удалить их, а затем выполнить импорт в MySQL.