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

问题描述 投票:0回答:2

我知道how to restore a dump file from mysqldump。现在,我试图使用kubernetes和docker容器来做到这一点。数据库文件是持久性(nfs)挂载。无法在群集外部访问泊坞窗,因为无需任何外部触摸它。

我试过了:

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数据库文件,然后重启容器并希望最好。但是,什么可以正确?


问题Install an sql dump file to a docker container with mariaDB肯定看起来像重复但不是:首先,我在Linux而不是Windows,更重要的是答案都是关于初始化转储。我希望能够删除数据并恢复到转储数据。这是一个最终将是“实时”的测试系统,因此我需要从许多潜在的转储中恢复。

mysql docker kubernetes mariadb
2个回答
0
投票

我做的是这样的:

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

如果我需要还原,我会删除mysql目录的所有内容并重新创建部署。


0
投票

这应该工作:

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中有一个终端。

© www.soinside.com 2019 - 2024. All rights reserved.