Мы переводим производственную площадку на 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.