繁体   English   中英

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

[英]Dump remote MySQL database from a docker container

我正在尝试将远程数据库转储到本地 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"

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

如何传输这些数据?

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

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

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

然后检查容器内部:

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

如果这一切正常,那么您可以开始查看管道失败的原因,但我怀疑问题可能出在其中一个解决方案上。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM