从 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"
两者似乎对本地数据库没有任何影响(虽然没有错误)
如何传输这些数据?
我总是喜欢在交互式终端中从容器内部解决问题。
首先,获取图像运行的容器并查看以下内容:
- 如果您 bash 到本地容器
docker exec -ti my_container bash
,远程主机名 my_remote_host.me
是否解析并且您可以路由到它?使用 ping 或 nslookup。
- 从交互式终端内部 bash shell 你能连接到远程数据库吗?只需使用凭证
尝试香草 mysql cli 连接
- 最后尝试从交互式终端内部转储并创建一个
mydump.sql
转储文件。
然后检查容器内部:
- 您可以使用提供的凭据连接到本地数据库(如果使用 tcp 连接而不是套接字,主机名应该解析,但看起来您的本地数据库正在使用套接字)
- 查看是否可以使用
mysql -u my_local_user -pmy_local_password -D mylocaldb < mydump.sql
加载转储文件
如果一切正常,那么您可以开始查看管道出现故障的原因,但我怀疑问题可能出在其中一个解决方案上。
我注意到你说的是本地数据库。 'local database'在容器内还是在Docker主机上运行是socket连接?
我正在尝试将远程数据库转储到本地 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"
两者似乎对本地数据库没有任何影响(虽然没有错误)
如何传输这些数据?
我总是喜欢在交互式终端中从容器内部解决问题。
首先,获取图像运行的容器并查看以下内容:
- 如果您 bash 到本地容器
docker exec -ti my_container bash
,远程主机名my_remote_host.me
是否解析并且您可以路由到它?使用 ping 或 nslookup。 - 从交互式终端内部 bash shell 你能连接到远程数据库吗?只需使用凭证 尝试香草 mysql cli 连接
- 最后尝试从交互式终端内部转储并创建一个
mydump.sql
转储文件。
然后检查容器内部:
- 您可以使用提供的凭据连接到本地数据库(如果使用 tcp 连接而不是套接字,主机名应该解析,但看起来您的本地数据库正在使用套接字)
- 查看是否可以使用
mysql -u my_local_user -pmy_local_password -D mylocaldb < mydump.sql
加载转储文件
如果一切正常,那么您可以开始查看管道出现故障的原因,但我怀疑问题可能出在其中一个解决方案上。
我注意到你说的是本地数据库。 'local database'在容器内还是在Docker主机上运行是socket连接?