在本地机器上执行mysqldump,从服务器后面的数据库服务器中获取数据

在本地机器上执行mysqldump,从服务器后面的数据库服务器中获取数据

EC2已经RDSAWS

我想做 mysqldump 来获取数据RDS

我的情况如下

  • RDS仅接受来自服务器的连接EC2
  • EC2没有权力使用mysqldump

所以我想做的是

mysqldump在我的运行并通过local machine获取数据。RDSEC2

我首先尝试错误地进行端口转发,如下所示

$ssh -f -N -L 3308:my_rds.amazonaws.com:3306 -i ~/.ssh/id_rsa ubuntu@my_ec2.amazonaws.com

$mysqldump -u root -h 127.0.0.1 -P 3308 -pXXXXXX -v mydb > mybackup.sql

但是它在服务器上执行mysqldump命令,而不是在EC2local machine

我想跑mysqldump进去local machine

这不可能吗?或者有其他方法可以做到这一点?

非常感谢。

答案1

正如前面的答案中提到的,mysqldump 确实在您的系统上本地运行,但必须维护 SSH 隧道并推送 9GB 的数据(甚至更多),这会给您的 EC2 实例带来压力,以至于它耗尽了 CPU 积分并且您受到限制。

您的选择:

  • 将现有的 EC2 实例调整为更高的级别或容量(可能是 M5/C5 级别)
  • 启动 C5/M5 类的新临时实例,并将其作为隧道
  • 旋转Fargate 任务使用 MySQL docker 镜像,以便 mysqldump 在无服务器容器上运行并将转储保存到 S3。下载后删除。你可以在我的Github

相关内容