CentOS 升級 MariaDB 容器化實戰:從 5.x 到 10.6 的挑戰與解方

更新 發佈閱讀 7 分鐘

第一章|老朋友與新挑戰

在這台正式機上,我的老朋友 MariaDB 5.x 已經陪伴多年。雖然穩定,但隨著專案成長,舊版本的限制愈來愈明顯:

  • SQL 語法部分不支援新特性
  • 配置文件和現代框架相容性差
  • 安全性與效能更新落後

同時,官方已經出到 MariaDB 10/11,而我們的 CentOS 系統又太舊,直接升級 OS 風險高。我必須找到一條安全、可靠的升級路徑。

我決定:容器化 Docker + 升級 MariaDB。這不只是升級,是一次正式機的重生冒險。


第二章|盤點與備份

正式機上的資料庫數據多年累積,稍有差錯就可能造成災難。第一步,必須完整備份:

  1. 移動 ibdata1 檔案到備份主機:
sudo scp /var/lib/mysql/ibdata1 root@192.168.1.100:/root/backup/
  1. 導出所有資料庫 SQL:
mysqldump -uroot -p --all-databases > full_backup.sql

這一步像是整理舊房子,把寶貴家具打包存放,才能放心進行改造。


第三章|Docker 與 CentOS 的挑戰

老舊 CentOS 無法直接安裝最新 Docker,於是我踩了幾個坑:

  • 安裝必要工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 添加 Docker 官方倉庫:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安裝最新 Docker:
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
docker --version

Docker Compose 也必須升級到 2.20,老版本 1.18.0 已經不支援很多新語法。安裝新版本後,我發現:

docker-compose --version
# 仍然顯示舊版本

原來是 PATH 的魔法在作怪!最後用符號鏈接解決:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version # 確認 2.20.0

第四章|建立新 MariaDB 容器

選擇 MariaDB 10.6 作為新容器版本,兼顧舊資料相容性與新功能。

建立資料夾與自訂設定檔:

[mysqld]
innodb_file_per_table = 1
innodb_buffer_pool_size = 1G
innodb_file_format = Barracuda
innodb_strict_mode = OFF
innodb_log_file_size = 512M

啟動容器:

docker run -v /var/docker/mariadb10/data:/var/lib/mysql \
-v /var/docker/mariadb10/config:/etc/mysql/conf.d/ \
-d --name mariadb10.6 \
-e MYSQL_ROOT_PASSWORD=^yhn5tgB \
-p 3306:3306 \
mariadb:10.6.10

第五章|資料導入的挑戰

第一次匯入 SQL,就遇到困難:

mysql -uroot -p -h127.0.0.1 projectdb < backup_20240810.sql > error_log.txt
# plan_apply_file1 報錯

原來,舊 SQL 與新 InnoDB 設定衝突。

解法分三步:

  1. 使用 INSERT IGNORE 跳過已存在資料:
sed 's/INSERT INTO/INSERT IGNORE INTO/g' backup_20240810.sql > backup_fixed.sql
  1. 關閉嚴格模式 並增加 log file 大小:
innodb_strict_mode = OFF
innodb_log_file_size = 512M
  1. 強制匯入:
mysql -uroot -p -h127.0.0.1 projectdb --force < backup_fixed.sql > all_output_log.txt 2>&1

經過兩個小時,資料終於順利匯入。就像搬家完成,舊家具被完好安置在新房裡。


第六章|建立帳號與測試

匯入完成後,建立資料庫帳號並測試應用程式:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON `projectdb`.* TO 'projectdb_user'@'192.168.1.100' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;

測試網站連線一切正常,舊 MariaDB 服務停止自啟動,避免衝突。


第七章|心得與建議

  • 舊系統 + 舊資料庫 → Docker 容器化 + MariaDB 10,既安全又可控
  • 備份與測試是升級的核心,不可省略
  • SQL 匯入錯誤常與 InnoDB 設定或舊語法有關,先調整容器設定再匯入
  • PATH 與符號鏈接是 Docker Compose 升級中容易忽略的小坑
  • 容器化後,資料庫管理、備份、還原都方便許多

這次升級像一場冒險:舊系統的重量很重,但容器化讓我既保護了資料,又能享受現代化管理的便利。

留言
avatar-img
留言分享你的想法!
avatar-img
麟製所
2會員
40內容數
軟體、旅遊分享
麟製所的其他內容
2025/12/16
2025/12/16
2025/12/09
讓 AI 秒懂當地特色商品,旅遊購物不再踩雷! 🌟 為什麼需要這個 Prompt? 你是否遇過這些困擾: 📸 不確定商品是不是當地特產 🤔 擔心買到外地貨或被坑 ⏰ 沒時間逐一搜尋商品資訊 🎯 想快速判斷商品是否值得購買 💼 需要批量整理伴手禮商品資料
2025/12/09
讓 AI 秒懂當地特色商品,旅遊購物不再踩雷! 🌟 為什麼需要這個 Prompt? 你是否遇過這些困擾: 📸 不確定商品是不是當地特產 🤔 擔心買到外地貨或被坑 ⏰ 沒時間逐一搜尋商品資訊 🎯 想快速判斷商品是否值得購買 💼 需要批量整理伴手禮商品資料
2025/12/02
還在一張張翻看監視器照片嗎?這個 Python 小工具只要雙擊執行檔,選擇照片資料夾,就能自動產生 MP4 縮時影片,支援 NAS/UNC 路徑、自動補檔名、時間戳和標籤,大幅提升回顧效率!
Thumbnail
2025/12/02
還在一張張翻看監視器照片嗎?這個 Python 小工具只要雙擊執行檔,選擇照片資料夾,就能自動產生 MP4 縮時影片,支援 NAS/UNC 路徑、自動補檔名、時間戳和標籤,大幅提升回顧效率!
Thumbnail
看更多
你可能也想看
Thumbnail
不是每個人都適合自己操盤,懂得利用「專業」,才是績效拉開差距的開始
Thumbnail
不是每個人都適合自己操盤,懂得利用「專業」,才是績效拉開差距的開始
Thumbnail
生產力爆發帶來的過剩,會讓過去的「還可以啦」成為最低標準。市場需求對於出類拔萃、獨一無二的需求還是存在,但是對於那些價格高度敏感,或是只需要穩定、便宜、還可以啦的需求端來說,AI 正在迅速取代這部分的供給,中間長尾的服務提供者被 AI 替換。
Thumbnail
生產力爆發帶來的過剩,會讓過去的「還可以啦」成為最低標準。市場需求對於出類拔萃、獨一無二的需求還是存在,但是對於那些價格高度敏感,或是只需要穩定、便宜、還可以啦的需求端來說,AI 正在迅速取代這部分的供給,中間長尾的服務提供者被 AI 替換。
Thumbnail
今年在 Google I/O 有幸看到 Hassabis 本人幾秒,DeepMind 和共同創辦人 Demis Hassabis 的這個題目,也一直都在待寫清單中。 前陣子,在介紹 Founders Fund 時,發現 Demis Hassabis 當初在說服 Peter Thiel 投資 Dee
Thumbnail
今年在 Google I/O 有幸看到 Hassabis 本人幾秒,DeepMind 和共同創辦人 Demis Hassabis 的這個題目,也一直都在待寫清單中。 前陣子,在介紹 Founders Fund 時,發現 Demis Hassabis 當初在說服 Peter Thiel 投資 Dee
Thumbnail
年末總有一種莫名的魔力,讓人特別容易感到孤單。 聖誕節、跨年、緊接著農曆新年……滑開社群,不是甜蜜放閃,就是一群人早早訂好跨年行程。 明明日子算得上順遂,工作穩定無憂,生活也按部就班地往前走着,可總在萬籟俱寂的夜晚,獨自對着空蕩的房間時,心底會悄悄冒出一個念頭:今年,是不是可以不一樣?不再獨自抵
Thumbnail
年末總有一種莫名的魔力,讓人特別容易感到孤單。 聖誕節、跨年、緊接著農曆新年……滑開社群,不是甜蜜放閃,就是一群人早早訂好跨年行程。 明明日子算得上順遂,工作穩定無憂,生活也按部就班地往前走着,可總在萬籟俱寂的夜晚,獨自對着空蕩的房間時,心底會悄悄冒出一個念頭:今年,是不是可以不一樣?不再獨自抵
Thumbnail
如果說「設計」是一段構思與構圖的旅程,那麼「製作」就是一場耐心與技巧的考驗。當我真正動手開始製作這棵樹時,才發現比想像中更複雜,卻也帶來意外的驚喜與感動。
Thumbnail
如果說「設計」是一段構思與構圖的旅程,那麼「製作」就是一場耐心與技巧的考驗。當我真正動手開始製作這棵樹時,才發現比想像中更複雜,卻也帶來意外的驚喜與感動。
Thumbnail
NPM(Node Package Manager)是 Node.js 的套件管理工具,用來安裝、管理與分享開發所需的模組與函式庫。透過 NPM,開發者能快速引入他人開發的工具,或發布自己的套件,提高專案開發效率與維護性。
Thumbnail
NPM(Node Package Manager)是 Node.js 的套件管理工具,用來安裝、管理與分享開發所需的模組與函式庫。透過 NPM,開發者能快速引入他人開發的工具,或發布自己的套件,提高專案開發效率與維護性。
Thumbnail
離岸風電產業因應全球能源轉型需求蓬勃發展,帶動風機安裝船需求急速攀升。本文探討WTIV(風機安裝船)與FIV(基礎安裝船)的供需缺口、離岸距離與水深增加帶來的挑戰、2023-2030年間離岸風機大型化趨勢,以及Cadeler公司如何透過擴充船隊、技術升級、策略合作等方式,掌握市場先機。
Thumbnail
離岸風電產業因應全球能源轉型需求蓬勃發展,帶動風機安裝船需求急速攀升。本文探討WTIV(風機安裝船)與FIV(基礎安裝船)的供需缺口、離岸距離與水深增加帶來的挑戰、2023-2030年間離岸風機大型化趨勢,以及Cadeler公司如何透過擴充船隊、技術升級、策略合作等方式,掌握市場先機。
Thumbnail
在這篇文章中,將介紹模型大廠MegaHouse於2021年推出的1/8五條悟模型。文章中將探討模型的設計細節、原型師背景,並提供對比與評價。特別分析了塗裝質量與姿態動感,並分享開箱經驗,讓收藏者可以做出更明智的選擇。最後也提及手勢細節與面部表現,顯示其多角度的展現潛力。
Thumbnail
在這篇文章中,將介紹模型大廠MegaHouse於2021年推出的1/8五條悟模型。文章中將探討模型的設計細節、原型師背景,並提供對比與評價。特別分析了塗裝質量與姿態動感,並分享開箱經驗,讓收藏者可以做出更明智的選擇。最後也提及手勢細節與面部表現,顯示其多角度的展現潛力。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News