日: 2018年8月8日

  • Docker版 redashをv5 (5.0) へupdate!

    Docker版 redashをv5 (5.0) へupdate!

    はじめに

    redash v5 (5.0)がリリースされた。

    https://discuss.redash.io/t/v5-beta-is-now-ready/2240

    今までは4.0.0-rc.1(ほぼlatest)を使っていたが、v5へupdateしたときの手順を記す。

    手順

    PostgreSQLのバックアップを取得

    docker ps
    docker exec -it redash_postgres_1 /bin/bash
    pg_dump -U postgres postgres | gzip > /tmp/redash_backup.gz
    exit
    docker cp redash_postgres_1:/tmp/redash_backup.gz .

    redashの停止

    # docker-compose -f docker-compose.production.yml down
    Stopping redash_nginx_1    ... 
    Stopping redash_server_1   ... 
    Stopping redash_postgres_1 ... 
    Stopping redash_worker_1   ... 
    Stopping redash_nginx_1    ... done
    Stopping redash_server_1   ... done
    Stopping redash_postgres_1 ... done
    Stopping redash_worker_1   ... done
    Stopping redash_redis_1    ... done
    Removing redash_nginx_1    ... done
    Removing redash_server_1   ... done
    Removing redash_postgres_1 ... done
    Removing redash_worker_1   ... done
    Removing redash_redis_1    ... done
    Removing network redash_default

    docker-composeファイルを修正

    # diff docker-compose.production.yml docker-compose.production.yml.20180808
    10c10
    <     image: redash/redash:5.0.0-beta.b4476
    ---
    >     image: redash/redash:4.0.0-rc.1
    26c26
    <     image: redash/redash:5.0.0-beta.b4476
    ---
    >     image: redash/redash:4.0.0-rc.1
    # 
    

    今までは4.0.0rc.1を使っていたが、そこを

    https://hub.docker.com/r/redash/redash/tags/

    の最新tagに変更した

    PostgreSQLをv5用にconvert

    # docker-compose -f docker-compose.production.yml run --rm server manage db upgrade
    Starting redash_redis_1 ... done
    Starting redash_postgres_1 ... done
    [2018-08-08 01:48:59,768][PID:1][INFO][root] Generating grammar tables from /usr/lib/python2.7/lib2to3/Grammar.txt
    [2018-08-08 01:48:59,850][PID:1][INFO][root] Generating grammar tables from /usr/lib/python2.7/lib2to3/PatternGrammar.txt
    [2018-08-08 01:49:03,702][PID:1][INFO][alembic.runtime.migration] Context impl PostgresqlImpl.
    [2018-08-08 01:49:03,703][PID:1][INFO][alembic.runtime.migration] Will assume transactional DDL.
    [2018-08-08 01:49:03,736][PID:1][INFO][alembic.runtime.migration] Running upgrade 969126bd800f -> 1daa601d3ae5, add columns for disabled users
    [2018-08-08 01:49:03,745][PID:1][INFO][alembic.runtime.migration] Running upgrade 1daa601d3ae5 -> d4c798575877, empty message
    [2018-08-08 01:49:03,761][PID:1][INFO][alembic.runtime.migration] Running upgrade d4c798575877 -> e7004224f284, add_org_id_to_favorites
    [2018-08-08 01:49:03,770][PID:1][INFO][alembic.runtime.migration] Running upgrade e7004224f284 -> a92d92aa678e, inline_tags
    [2018-08-08 01:49:03,777][PID:1][INFO][alembic.runtime.migration] Running upgrade a92d92aa678e -> 0f740a081d20, inline_tags
    [2018-08-08 01:49:03,782][PID:1][INFO][alembic.runtime.migration] Running upgrade 0f740a081d20 -> 71477dadd6ef, favorites_unique_constraint

     

    docker-composeを起動

    # docker-compose -f docker-compose.production.yml up -d
    redash_postgres_1 is up-to-date
    redash_redis_1 is up-to-date
    Creating redash_worker_1 ... 
    Creating redash_server_1 ... 
    Creating redash_worker_1
    Creating redash_server_1 ... done
    Creating redash_nginx_1 ... 
    Creating redash_nginx_1 ... done
    # 

    update確認

    今まで使っていたURLにアクセスすると、v5になったredashに接続が可能

    v5の感想

    Queriesに”Favorites”機能が追加されたり、パラメータをブラウザ経由で設定できたりと今までより使い勝手が向上。


    APIなどの機能テストをした後、本番もupdateしていきたい

    リストア(おまけ)

    今回は使わなかったけど、万が一databaseがおかしくなった場合、バックアップから復元することになる。その際の手順は以下の通り。一度drop databaseしたあと、バックアップしたデータを流し込む

    docker cp /tmp/redash_backup.gz redash_postgres_1:/tmp/redash_backup.gz
    docker exec -it redash_postgres_1 /bin/bash
    
    psql -U postgres template1
    DROP DATABASE IF EXISTS postgres;
    CREATE DATABASE postgres;
    \q
    zcat /tmp/redash_backup.gz | psql -U postgres -d postgres
    

    5.0.0-beta.b4476 から 現在のlatestへのupdate (2018/10/3 upadte)

    5.0.0.b4754 から 現在のlatestへのupdateは、docker imageを切り替えるだけで大丈夫なようだ。

    以下のように変更し、docker composeを立ち上げるだけでよい。

    <     image: redash/redash:latest
    ---
    >     image: redash/redash:5.0.0-beta.b4476

    5.0.0.b4754 から 現在のlatestへのupdateではDBのスキーマ変更は不要。