如何使用 kubernetes 从 mysqldump 恢复转储文件?

Sar*_*ica 3 mysql mariadb docker kubernetes

我知道如何从 mysqldump 恢复转储文件。现在,我尝试使用 kubernetes 和 docker 容器来做到这一点。数据库文件处于持久 (nfs) 挂载状态。无法在集群外部访问 docker,因为不需要任何外部内容来访问它。

我试过:

kubectl run -i -t dbtest --image=mariadb --restart=Never --rm=true --command -- mysql -uroot -ps3kr37 < dump.sql
Run Code Online (Sandbox Code Playgroud)

kubectl exec mariadb-deployment-3614069618-mn524 -i -t -- mysql -u root -p=s3kr37 < dump.sql
Run Code Online (Sandbox Code Playgroud)

但这两个命令都不起作用——有关 TTY、套接字和其他事物的错误暗示我在这里遗漏了一些重要的东西。

我在这里不明白什么?

可以停止部署,scp 数据库文件,然后重新启动容器并希望得到最好的结果。然而,什么才能走对呢?


使用 mariaDB 将 sql 转储文件安装到 docker 容器的问题确实看起来像是重复的,但事实并非如此:首先,我使用的是 Linux 而不是 Windows,更重要的是,所有答案都是关于使用转储进行初始化。我希望能够丢弃数据并恢复为转储数据。这是一个最终将“上线”的测试系统,因此我需要从许多潜在的转储中进行恢复。

小智 5

如此处所述,您可以使用以下命令从计算机中的转储恢复 kubernetes pod 上的数据库

$ 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
Run Code Online (Sandbox Code Playgroud)