簡體   English   中英

如何使用 kubernetes 從 mysqldump 恢復轉儲文件?

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

我所做的是這樣的:

  • 使用兩個 sub0drectories 創建 NFS 掛載: mysqlinitd
  • 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM