夜鶯(Nightingale)不同版本如何升級,應該注意什麼,應該替換哪些檔案
V6、V7、以及 V8 各個小版本之間的升級,方法相同。
升級步驟
- 備份資料:在升級之前,備份 MySQL 資料庫的內容、備份二進位、備份
etc和integrations目錄,以防萬一,有了後路之後就可以放心大膽操作了 - 如果是二進位部署,替換二進位、替換 integrations 目錄(可以直接把老的 integrations 目錄挪走
mv integrations integrations.bak,直接使用新的 integrations 目錄),設定檔可以 diff 一下新老設定,手工補齊一下差異點(實際上應該幾乎不用修改設定檔,因為已經很久沒有調整過了) - 如果是容器部署的,拉取一下最新的映像,設定檔 diff 一下,補齊差異點,再重啟一下容器即可
- 重新存取夜鶯的時候,強制重新整理一下瀏覽器,以防止瀏覽器快取了舊的 js、css 檔案
關於 DB 表結構
如果夜鶯所用的 DB 帳號是有建表、改表權限的話,您不需要手動去修改 DB 表結構,夜鶯會在啟動時自動檢查表結構是否需要升級,如果需要升級,則會自動改表。如果夜鶯所用的 DB 帳號沒有建表、改表權限,則需要手工調整,近期的改動可以參考 migrate.sql。如果自動改表失敗,請提 issue,我們會盡快跟進。
理論上資料庫同時支援 MySQL 和 Postgres,不過社群缺少 Postgres 的長期貢獻者,所以建議優先使用 MySQL。
FAQ
Docker 映像如何使用老版本
可以到 Docker Hub 上選擇需要的 Tag 自行 pull,然後在 docker-compose.yml 裡指定對應的 Tag 即可。
常見問題
Q1:升級會丟資料嗎?
A:n9e 升級不會自動清資料。但建議升級前備份:
- 資料庫
mysqldump備份; - 設定檔
n9e.toml備份; - 升級新版本第一次啟動會自動跑 schema migration — 看日誌確認成功。
Q2:能否跨大版本升級(如 v6 → v9)?
A:建議逐版本升級(v6 → v7 → v8 → v9),不要直接跳兩個大版本。每個大版本可能有 schema breaking changes,跳級升級 migration 不一定乾淨。
Q3:升級後告警規則失效了?
A:
- 檢查告警引擎是否健康;
- 老版本的 PromQL 在新版本是否相容(極少數舊函式被廢棄);
- 資料來源 URL / 認證是否仍有效。