[英]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.