簡體   English   中英

在 kubernetes 初始化容器中運行 mysql

[英]running mysql in a kubernetes init container

我正在運行 mysql 作為 kubernetes 部署的初始化容器。

由於各種原因,我需要在初始化容器中啟動 mysql/恢復 mysql 轉儲 -> 將其保存到 pvc,然后主 pod 將是一個 mysql 附加數據

這是因為我需要拍攝磁盤快照,並且在拍攝快照之前,我將讓 CI 監視 pod 是否“准備好/運行”。

所以我不能只在 docker-entrypoint-initdb.d 中轉儲 dump.sql 並完成它。

這是因為volumesnapshot kubernetes 資源將在數據恢復/准備好之前被占用。 因此,為什么我需要在初始化容器中准備數據。

我遇到的問題是初始化容器需要一個覆蓋 entrypoint.sh 的命令(實際上啟動 mysql 等)

到目前為止,我有這個在容器啟動時運行的 bash 腳本。

./entrypoint.sh --ignore-db-dir=lost+found 
echo "done" (this is just purely for testing purposes to see if it ever gets processed and it doesnt)
mysql -u root -ppassword < /data/backups/backup.sql
mysql -u root -ppassword < /sql-files/sql-files.sql

問題是,入口點已運行,但隨后掛起

2022-01-14T15:07:54.809983Z 0 [Note] Event Scheduler: Loaded 0 events
2022-01-14T15:07:54.810442Z 0 [Note] mysqld: ready for connections.
Version: '5.7.36'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)

並且永遠不會進入 bash 腳本的下一步。 我嘗試在末尾添加一個 & 以便它在后台運行,但這並不能解決問題。

有沒有人遇到過這個問題? 我如何手動運行入口點,然后執行一些命令。

你可以在mysqld之前啟動mysql在后台休眠。 這對你有用嗎?

start_mysql {
    sleep 30
    mysql -u root -ppassword < /data/backups/backup.sql
    mysql -u root -ppassword < /sql-files/sql-files.sql
}

start_mysql &
./entrypoint.sh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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