不管是要換機器或是要升級,備份都是必須的!
env
, docker-compose.yml
裡面存有 mail server、python query … 等設定,所以也需要備份,
直接把 /opt/redash/
裡的 env
, docker-compose.yml
下載下來就可以了!
我的 Redash 版本是 5.0.1+b4850,是用 script 安裝(安裝效果等同 Docker-based)
下 docker 指令,把 postgressql 資料庫打包成 redash_backup.gz
檔案
cid=`docker ps | grep postgres | awk '{print $1}'`
docker exec ${cid} /bin/bash -c 'pg_dump -U postgres postgres | gzip > /usr/local/redash_backup.gz'
docker cp ${cid}:/usr/local/redash_backup.gz redash_backup.gz
在本機(不是 docker 裡面)得到了 redash_backup.gz
,就可以下載好好保存。
這台機器(同樣選擇 Linode Ubuntu 16.04)
也照著之前的設定,安裝好 Redash
把剛才下載的 redash_backup.gz
上傳到 /opt/redash
目錄
在還原前,先停止現在 Redash 的服務
cd /opt/redash
docker-compose stop server scheduler scheduled_worker adhoc_worker
把 redash_backup.gz
傳到 docker 中,
同時執行 psql 把既有的 table 刪除,匯入 redash_backup.gz
建立備份的資料庫
cid=`docker ps | grep postgres | awk '{print $1}'`
docker cp redash_backup.gz ${cid}:/usr/local/redash_backup.gz
docker exec -it ${cid} /bin/bash
psql -U postgres template1
DROP DATABASE IF EXISTS postgres;
CREATE DATABASE postgres;
\q
zcat /usr/local/redash_backup.gz | psql -U postgres -d postgres
exit
回到系統中,要先下指令讓資料庫遷移,再啟動系統
cd /opt/redash
docker-compose run --rm server manage db upgrade
docker-compose up -d
這樣就可以在新機器順利用既有的帳號登入,
並同時保留之前的 帳號, Data Sources, Queries, Alerts, …等設定,
但如果是要串接 mail server, python query …等,
如果是設定在 docker-compose.yml
可以直接上傳上去,
如果是更改過 env
檔案,記得是用手動把舊有新增的變數,再在新機器上的 env
加入
(因 env
存有密碼、金鑰等變動數值,因此直接覆蓋可能有風險)
既然做足了備份,也換了一台機器測試一切都沒問題,
就可以很放心的讓原機器直接升級到新的 Redash 版本。
升級的方式首先是更改 docker-compose 的 image 版本
但 docker-compose 的版本號,官方文件並沒有說明,
直接求助 Google 大神找到此網址
https://hub.docker.com/r/redash/redash/tags/
看到目前最新的版本號是 5.0.2.b5486:
vim /opt/redash/docker-compose.yml
image: redash/redash:redash:5.0.2.b5486
ps. 雖然可以直接用 lateset,
但如果 Redash 發布更新卻沒有 follow 到,
又剛好需要重啟 Redash 因而疏忽備份,就極有可能出錯,
所以還是直接給訂版本號比較安全。
更改完之後,先停止所有 Redash 服務,
然後進行資料庫遷移(會花點時間),最後再啟動系統。
cd /opt/redash
docker-compose stop server scheduler scheduled_worker adhoc_worker
docker-compose run --rm server manage db upgrade
docker-compose up -d
就可以看到升級過後的 Redash
公司目前還沒升級過,
這次研究算認真確保既有的資料可以好好保存,也可以放心的升級。
Redash 更新得其實頗為頻繁,
今年四月官方發佈的還是 4.0.1+b4038,
鐵人賽剛開始的時候,已經變成 5.0.1+b4850 ,
而前些天又發現 5.02 版本馬上出來了,迭代速度算滿快。
而且 v5 比起 v4 有很多弊病:
日曆選單會跳掉、帳號權限控管很不一致,也新增了不少功能。
體驗中遇到一些卡關,在他們的討論區也有注意到開發群很常上來互動,
遇到問題也很願意傾聽大家的建議,然後馬上把功能加入下一版中,
也至少確定 Redash 是一個算是滿認真的開源專案,也可以滿放心在公司中使用它。
官方文件說備份就是短短的一句「1. Make sure to backup your data. You only need to backup your PostgreSQL metadata as the data in Redis is transient.」
想說 docker-based 安裝的資料很乾淨,
應該只要把 /opt/redash
的所有東西:env
, docker-compose.yml
, `postgres-data/ 下載下來,
新機器安裝好再上傳覆蓋就好,果然事情不是想的那麼簡單啊 0rz
也是 Google 了一陣,參考了一些文章才順利做到真正的備份與還原
參考資源
http://kuchitama.hateblo.jp/entry/redash_on_docker_backup
https://tsukada.sumito.jp/2018/08/08/docker-redash-v5-update/
ps. 文章同步發表於 Medium