通過 mysqlbinlog 更新 RDS db:“你需要(至少一個)超級權限”
我們正在將生產站點遷移到 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
它說:
第 6 行的錯誤 1227 (42000):訪問被拒絕;您需要(至少一個)超級權限才能執行此操作
根據 binlog 第 6 行的內容,我的猜測是它是 SQL 備份中的“寫入 BINLOG”語句,並且由於 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。