iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 28
2
AI & Data

[BI工具] 以Redash為資料視覺化方案之選擇與實踐系列 第 28

[Redash] 備份、還原、升級

  • 分享至 

  • xImage
  •  

不管是要換機器或是要升級,備份都是必須的!

備份 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


上一篇
[Redash] Email Alert & Schedule
下一篇
[Redash] 權限機制
系列文
[BI工具] 以Redash為資料視覺化方案之選擇與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言