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

时间:2016-04-21 15:35:48

标签: mysql docker pipe mysqldump

我试图将远程数据库转储到本地docker容器的数据库中。

$ 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"

两者似乎都没有对本地数据库产生任何影响(尽管没有错误)

如何传输这些数据?

1 个答案:

答案 0 :(得分:1)

我总是喜欢在交互式终端中解决容器内部的问题。

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

  1. 如果您攻击本地容器docker exec -ti my_container bash,远程主机名my_remote_host.me是否已解析并可以路由到它?使用ping或nslookup。
  2. 从交互式终端内部bash shell可以连接到远程数据库吗?只需使用凭据
  3. 尝试一个vanilla mysql cli connect
  4. 最后从交互式终端内部尝试转储,只需创建一个mydump.sql转储文件。
  5. 然后检查容器内部:

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

      如果这一切都有效,那么你可以开始查看管道失败的原因,但我怀疑问题可能出在其中一个分辨率上。

      我注意到你说的是本地数据库。是本地数据库&#39;容器内部或运行套接字连接的Docker主机?

相关问题