[英]How do I restore a dump file from mysqldump using kubernetes?
我知道如何从 mysqldump 恢复转储文件。 现在,我正在尝试使用 kubernetes 和 docker 容器来做到这一点。 数据库文件在持久 (nfs) 挂载中。 docker 无法在集群外部访问,因为不需要任何外部的东西来接触它。
我试过:
kubectl run -i -t dbtest --image=mariadb --restart=Never --rm=true --command -- mysql -uroot -ps3kr37 < dump.sql
和
kubectl exec mariadb-deployment-3614069618-mn524 -i -t -- mysql -u root -p=s3kr37 < dump.sql
但是这两个命令都不起作用——关于 TTY、套接字和其他东西的错误暗示我在这里遗漏了一些重要的东西。
我在这里不明白什么?
我可以停止部署,scp 数据库文件,然后重新启动容器并希望一切顺利。 然而,有什么可以去的呢?
使用 mariaDB 将 sql 转储文件安装到 docker 容器的问题确实看起来像重复但不是:首先,我使用的是 Linux 而不是 Windows,更重要的是,答案都是关于使用转储进行初始化。 我希望能够删除数据并恢复到转储数据。 这是一个最终将成为“实时”的测试系统,因此我需要从许多潜在的转储中恢复。
作为描述在这里,你可以在你的机器使用下面的命令来恢复数据库上kubernetes荚从转储
$ kubectl exec -it {{podName}} -n {{namespace}} -- mysql -u {{dbUser}} -p{{password}} {{DatabaseName}} < <scriptName>.sql
Example :
$ kubectl exec -it mysql-58 -n sql -- mysql -u root -proot USERS < dump_all.sql
我所做的是这样的:
mysql
和initd
。initd
,我添加了几个,sql
文件,包括转储。/docker-entrypoint-initdb.d
initd
挂载为/docker-entrypoint-initdb.d
。这会导致在初始化时读取所有文件,前提是这是我们第一次运行。mysql
目录挂载为/var/lib/mysql
并包含所有 mariaDB 文件。 如果我需要恢复,我会删除mysql
目录的所有内容并重新创建部署。
这应该有效:
kubectl --kubeconfig=k8s-XXXXXXX-kubeconfig.yaml exec -i ddevdb-XXXXX -- mysql -u root -h mysqlservice -proot drupal < you-dump.sql
kubeconfig 是可选的,例如 digitalocean 提供了它,因此您可以从本地运行您的命令。
要查看是否一切正常:
kubectl --kubeconfig=k8s-XXXXXXX-kubeconfig.yaml run -it --rm --image=mariadb:10.4 --restart=Never mysql -- mysql -h mysqlservice -proot
之后,您将在 mysql 中拥有一个终端。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.