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

我知道如何从mysqldump恢复转储文件 。 现在,我正在尝试使用kubernet和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,更重要的是,所有的答案都是关于初始化转储。 我希望能够垃圾数据和恢复到转储数据。 这是一个最终将成为“现场”的testing系统,所以我需要从许多潜在的转储中恢复。

我做的是这样的:

  • 用两个子目录创build一个NFS挂载: mysqlinitd
  • initd ,我添加了几个,sql文件,包括转储。
  • initd挂载为部署中的/docker-entrypoint-initdb.d 。这会导致在初始化时读取所有文件, 只要这是我们第一次运行
  • mysql目录被挂载为/var/lib/mysql并包含所有的mariaDB文件。

如果我需要还原,我将所有mysql目录的内容都清理掉,然后重新创build部署。