从 EC2 中的 MySQL 5.7 到 AWS RDS 的 mysqldump

mysqldump from MySQL 5.7 in EC2 to AWS 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 命令时,我收到以下已知警告: "Using a password on the command line interface can be insecure".

我尝试遵循解决方法,但在我的例子中,EC2 数据库和 AWS RDS 有不同的 users/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 有什么想法吗?

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

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

应该可以

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

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

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

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

如果你想在user-id的基础上为同一个实例创建多个login-path,那么你所要做的就是更改login-path的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