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

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

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

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

mysqldump - одиночная транзакция --master-data=2 -C -q -u root -p > backup.sql

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

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

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

и это говорит:

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

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

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

1 ответ

Решение

Скорее всего это происходит потому, что 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.

Другие вопросы по тегам