徵求建議-透過 ContainerStation 部署 MariaDB

大家好……

我正在尋求任何使用者的建議或指導,關於在 ContainerStation 上託管 MariaDB 的經驗——無論是直接作為 Docker 映像,還是間接地,例如在 ContainerStation 的 ubuntu Server 映像上託管。

目前我是在 QTS 上原生運行 MariaDB——而且運作得非常好。事實上,我只有一個挑戰,就是 QTS 最新版本的 MariaDB 只有 10.5.8……而我正嘗試搭配 BookStack 使用,它需要更近期的版本。

我曾嘗試提交支援工單,詢問 QTS 開發者是否有 MariaDB 在 QTS 上的更新計畫,但如果他們有,似乎也不願意透露。我覺得這很合理,所以我並不抱怨。

不過,如果我想繼續享受 RAID-6 的優點,以及穩定的 UPS 託管環境,我覺得目前有兩個選擇……

ContainerStation 上列出了多個 MariaDB 容器映像——數十個。由於我除了幾年前短暫試用過 Zabbix 外,沒有用過 ContainerStation,所以不太確定該選哪個版本,尤其是列表中只有一個映像有綠色小旗標誌,我猜這代表它是唯一的「官方」映像。非常希望能聽聽有在 ContainerStation 部署 MariaDB 映像的朋友,分享正確的做法。

另外,有一件事我一定要能做到,就是備份我的資料庫。現在用 QTS 實例時,設定很簡單——我寫了一個簡單的 shell 腳本,然後按照 QNAP 的建議方式把它加到 QTS 的 crontab 系統。據我了解,應該可以用 Docker 的 exec 指令來操作 MariaDB,但不太確定要怎麼排程,例如每天凌晨 02:30 執行一次「mysqldump」。所以很想聽聽有在容器裡跑 MariaDB 的朋友,分享他們的心得,以及如何備份資料。

第二個選項,當然就是跑完整的 OS 映像。我看到 Docker 有 ubuntu 22.04 LTS 映像……我很熟悉這個系統,也可以在上面跑完整的 MariaDB 12.x 實例。我應該能透過 SSH 和 VNC 連到 ubuntu Server 的虛擬 IP,這樣就能掛載回 QTS 原生的 NFS 分享,存取 MariaDB 傾印檔案,方便匯出到可移動媒體做離線備份。

感覺我現在有幾個可行的選擇,應該都能運作。但細節上有很多眉角,我想在動手建置前,先聽聽大家的建議,省下不少時間和麻煩。

非常希望能聽聽有相關經驗的朋友分享。

先謝謝大家!

如果您想使用的服務對 MariaDB 版本有特定要求,我建議您使用 Container Station。

如果在此過程中遇到任何困難,請為我們提交支援單,我們可以提供協助。謝謝!

謝謝你,Steve,我很感謝你的回覆。

在我發帖之後,我繼續嘗試並取得了一些進展。我研究出如何直接從 DockerHub 將官方的 “mariadb-latest” 容器拉入 ContainerStation,在確認它會給我 12.0.2(目前最新的穩定版本)之後。我第一次嘗試時遇到了一個問題,就是在建立容器時沒有使用「進階」選項,因此錯過了設定自訂環境變數的機會,而這些變數是我需要用來傳遞 MariaDB 初始設置參數的。幸運的是,它拋出的錯誤訊息很明確,清除現有內容並重新執行這個步驟也很簡單,所以,正如你建議的,這將會是我的首選方式。

當我在這方面卡住時,我轉向了 VirtualizationStation 並在那裡嘗試了一下。我發現這比較棘手——主要是我自己理解不足,加上 QNAP 官方文件看起來有點過時——但昨晚我終於成功啟動了一個 VM,並用我為這個任務下載的最新 Linux Mint ISO 來運行[我平常用 Mint 當桌面系統,所以稍微熟悉一些]。一切都很順利——我在瀏覽器裡透過 Virtualization Station 順利運行了 “Mint Installer” 圖形桌面,但隨後遇到了一個不可避免的問題,就是 Mint 提供的 MariaDB 最新版本只比我在 QTS 原生系統上的版本多了幾個小版本。

當然這並不是無法克服的——我只要把官方 MariaDB 軟體庫加到我的 sources.list 檔案裡,然後用 apt 拉下我需要的版本就行了。

在這兩種情況下,我做的都算是「快速且簡單」的處理——例如,不論用哪種方案,我都真的需要給這個 DB 實例分配一個固定 IP 地址[我以前在試驗 Zabbix 時做過,但那已經是好幾年前的事了——只要回想一下當時怎麼做就好]。我也需要研究如何安排資料庫備份。如果我走 VirtualizationStation 這條路就很簡單——直接用我主機 OS 的原生 cron 就可以了……如果用 ContainerStation,我還是會用 cron,但會用 QTS 的原生 cron,然後透過 “docker exec” 命令與 MariaDB 指令列互動……當然到時候我還得搞清楚,如何存取 NAS 上的公開分享資料夾,這樣 “mysqldump” 指令的輸出就能推送到 NAS 檔案系統上,1)保留 RAID6 保護;2)可以納入我的 HBS3 備份排程。

所以我覺得我「已經在路上」了。既然你推薦了 ContainerStation,我會先以此為主,但我對 “VirtualisationStation” 的表現也很感興趣/滿意,我認為這值得深入研究,也許這次用不上,但肯定對其他專案有幫助。

我也一邊做一邊記錄筆記,等完成後就能發佈一篇操作教學。

謝謝

Clive

嗨 Clive,

很高興聽到你已經找到了一些方向!

如果你不介意,我們非常歡迎你在社群這裡分享你的測試和研究結果。我們相信這會幫助其他正在尋找類似應用的人。謝謝!

嗨 Steve,

只是想讓你知道,今晚我已成功透過 ContainerStation 安裝了 MariaDB 12.0.2(最新穩定版本)。我已經完成新增一個「非 root」本地用戶,並透過該帳號授予自己遠端存取伺服器的權限,然後只需在我的本地「PHPMyAdmin」設定中新增第二個伺服器設定(該程式運行於 Raspberry Pi,而非我的 QNAP NAS),並成功連線、建立資料庫、加入資料表等等。

我還有一點事情要做——特別是最重要的事……當然,首先是要確認我能對一個正在運作的資料庫執行 sqldump,其次要確認我能將輸出「傳送」到 NAS 上主要「Public」分享資料夾樹中的某個資料夾……最後就是要能將該命令整合到 672 的 crontab 功能裡,讓我可以自動排程備份,並與我的 HBS3 備份設定整合。

好消息是,其實一切都很簡單,只要掌握幾個簡單的「小陷阱」就行了。

等我把最後幾個細節處理好後,會回來提供完整的文件說明。

1個讚

嗨 Steve,

回來兌現我之前承諾要分享測試結果。我寫了一份相當詳細的指南,並發表在一個新的討論串裡——總共12則貼文——你可以在這裡找到:

我習慣在開始接觸新技術和開發新解決方案時,為自己寫下相當仔細的筆記,所以這份指南也採用了同樣的細節程度。我非常歡迎你的審閱和回饋。如果需要編輯,請告訴我。

謝謝你。

1個讚

感謝你的分享!

我相信這些資訊對於社群中遇到類似問題的其他人會有很大幫助,非常感謝!