Обновите базу данных 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.