mysqldump从MySQL 5.7到EC2到AWS RDS

时间:2018-02-18 11:01:42

标签: mysql amazon-web-services amazon-ec2 rds

我正在尝试使用以下过程将数据库从安装在EC2实例中的MySQL 5.7迁移到AWS RDS MySQL 5.7: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.SmallExisting.html

mysqldump -u <local_user> \
--databases <database_name> \
--single-transaction \
--compress \
--order-by-primary  \
-p<local_password> | mysql -u <RDS_user> \
    --port=<port_number> \
    --host=<host_name> \
    -p<RDS_password>

运行mysqldump命令时,我收到以下已知警告: “在命令行界面上使用密码可能不安全”。

我尝试了解决方法,但就我而言,EC2 DB和AWS RDS具有不同的用户/ pswds。

mysql_config_editor set --login-path=local --host=localhost --user=username --password

Suppress warning messages using mysql from within Terminal, but password written in bash script

如何使用两个不同的用户和密码从命令行运行mysqldump?

2 个答案:

答案 0 :(得分:1)

你的管道mysql客户端无法访问stdin,因为它的stdin实际上是stdout命令的mysqldump流。由于您不希望在命令行中提供密码,请尝试以下方法。

mysql_config_editor set --login-path=local --host=localhost --user=username --password
mysql_config_editor set --login-path=remote --host=rds_host --user=rds_user --password

这将在配置文件中创建2个部分,名为localremote(您可以更改名称)。现在:

mysqldump --login-path=local | mysql --login-path=remote

应该有效

答案 1 :(得分:0)

mysql_config_editor set --login-path=local --host=localhost --user=username --password

这将连接到您登录的服务器上运行的本地mysql引擎。在您的情况下,您必须已登录到ec2实例。

现在要连接到RDS实例(使用不同的用户/密码),您可以使用以下命令。您必须在RDS sec-group上打开端口 3306 ,并将ec2 sec-group作为源。

mysql_config_editor set --login-path=myrdsinstance --host=myrdsinstance.123456789012.us-east-1.rds.amazonaws.com --user=username --password

如果您想根据用户ID为同一个实例创建多个登录路径,那么您所要做的就是相应地更改登录路径ID

例如:

mysql_config_editor set --login-path=myrdsinstance-user1                    
   --host=myrdsinstance.123456789012.us-east-1.rds.amazonaws.com --user=user1 --password
mysql_config_editor set --login-path=myrdsinstance-user2
    --host=myrdsinstance.123456789012.us-east-1.rds.amazonaws.com --user=user2 --password