如何使用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挂载:
mysql
和initd
。 - 在
initd
,我添加了几个,sql
文件,包括转储。 - 将
initd
挂载为部署中的/docker-entrypoint-initdb.d
。这会导致在初始化时读取所有文件, 只要这是我们第一次运行 。 -
mysql
目录被挂载为/var/lib/mysql
并包含所有的mariaDB文件。
如果我需要还原,我将所有mysql
目录的内容都清理掉,然后重新创build部署。