将RDS-MySQL复制到非Amazon主机吗?


16

我有一个相当大的MySQL(5.1)数据库在Amazon中作为RDS实例运行。我正在努力将其从Amazon迁移出去。为了顺利地做到这一点,我想将新硬件设置为RDS实例的只读副本。

我知道RDS支持RDS内的复制。有什么方法可以配置它以复制到不在RDS中的主机?


是您所有的数据InnoDB吗?
RolandoMySQLDBA 2012年

假设“是的,所有内容都在innodb中”-对于该论坛来说足够接近真实。;)
Leopd 2012年

Answers:




3

如果您有以下情况

  • 您所有的数据都是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。


以root用户身份登录时,GRANT REPLICATION SLAVE结果是ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
Leopd 2012年

请运行SHOW GRANTS。你对一切特权
RolandoMySQLDBA 2012年

它以RDS根用户身份运行,该用户具有所有可能的特权:GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD <snip> WITH GRANT OPTION。看起来亚马逊只是不允许这样做。
Leopd 2012年

根据您的最新评论更新了我的答案...
RolandoMySQLDBA 2012年

1
@Radek原始海报(OP)于3月23日回答了它:dba.stackexchange.com/a/15492/877
RolandoMySQLDBA 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.