从Docker容器转储远程MySQL数据库

我试图将远程数据库转储到本地泊坞窗容器的数据库。

$ docker exec -i my_container \ mysqldump my_remote_database -h my_remote_host.me -u my_remote_user -p 

这给了我远程转储好

所以这里是我的尝试:

 $ docker exec -i my_container \ mysqldump my_remote_database -h my_remote_host.me -u my_remote_user -p \ | docker exec -i my_container mysql -u my_local_user -pmy_local_password \ -D my_local_database $ docker exec -i my_container bash -c \ "mysqldump my_remote_database -h my_remote_host.pp -u my_remote_user -p \ | mysql -u my_local_user -pmy_local_password -D my_local_database" 

两者似乎都没有对本地数据库有任何影响(虽然没有错误)

我怎样才能传输这些数据?

我总是喜欢在交互式terminal中找出容器内部的问题。

首先,获取图像运行的cantainer,并检查以下内容:

  1. 如果你docker exec -ti my_container bash本地容器docker exec -ti my_container bash ,远程主机名my_remote_host.meparsing,并且你可以路由到它? 使用ping或nslookup。
  2. 从交互式terminalbash shell里面你可以连接到远程数据库吗? 只需使用凭据尝试一个香草的mysql cli连接
  3. 最后尝试从交互式terminal内部转储,并创build一个mydump.sql转储文件。

然后检查容器内部:

  1. 您可以连接到本地数据库提供的凭据(如果使用TCP连接而不是套接字主机名应该解决,但它看起来像您的本地数据库使用套接字)
  2. 看看你是否可以使用mysql -u my_local_user -pmy_local_password -D mylocaldb < mydump.sql加载转储文件mysql -u my_local_user -pmy_local_password -D mylocaldb < mydump.sql

如果这一切都有效,那么你可以开始看pipe道失败的原因,但我怀疑这个问题可能是其中一个决议。

我注意到你说本地数据库。 容器内或Docker主机上的“本地数据库”是否运行套接字连接?