如果您有以下情况
- 您所有的数据都是innodb
- 您在RDS上启用了二进制日志记录
您可以像这样在RDS中创建一个用户
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'%' IDENTIFIED BY 'repl_password';
如果Amazon不允许主机名使用“%”,则您将需要特定的公共IP地址
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';
接下来,mysql将数据作为单个事务从RDS中转储出来
mysqldump -u... -p... --single-transaction --master-data=1 --all-databases --routines --triggers > /root/MySQLData.sql
使用leopd@'xxx.xx.xx.xxxx'作为用户运行CHANGE MASTER TO命令(xxx.xx.xx.xxxx是RDS的IP地址)
CHANGE MASTER TO
master_host = 'xxx.xx.xx.xxxx',
master_port = 3306,
master_user = 'leopd',
master_passwowrd = 'repl_pass'
master_log_file='slsnbj',
master_log_pos=1;
将数据加载到新服务器中。不用担心master_log_file ='slsnbj'和master_log_pos = 1。转储的第22行将具有正确的日志文件和位置。
运行START SLAVE;在新服务器上
它应该开始工作。您可能需要担心防火墙注意事项。
试试看 !!!
更新2012-03-23 17:11 EDT
您只剩下一个机会。看看是否可以使用此设置最后的特权:
UPDATE mysql.user SET Repl_slave_priv = 'Y' WHERE user='root' AND host='%';
FLUSH PRIVILEGES;
对于在mysql.user的主机列中具有%的用户,这可能被阻止。
正如我之前建议的那样,您可能需要使用硬公共IP创建另一个用户。
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';
RDS中的复制从站也可能也必须是RDS。