RedashをDockerベースへアップグレードした手順

Redash

Redashのバージョンを7から8へアップグレードしました。
バージョン8からはDockerベースのみサポートされるので、バックアップを取得してDockerベースに移行しました。

旧環境のバックアップ

データベースのバックアップ

RedashのサーバーにSSH接続して、PostgreSQLのpg_dumpコマンドでデータベースのダンプを取得します。

$ sudo -u redash pg_dump -Fc redash > old_redeash.dump

環境変数のバックアップ

移行先の環境で「REDASH_COOKIE_SECRET」の値が必要になるので控えておきます。

$ cd /opt/redash
$ vim .env
export REDASH_LOG_LEVEL="INFO"
export REDASH_REDIS_URL=redis://localhost:6379/0
export REDASH_DATABASE_URL="postgresql:///redash"
export REDASH_COOKIE_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

新しいEC2インスタンスを起動

下記のリンク先にあるAWSのAMIからバージョン8のEC2インスタンスを起動します。
Setting up a Redash Instance

インスタンスが起動してからブラウザでパブリックIPにアクセスすると、セットアップページが表示されました。ホストサーバーにSSH接続してRedashのインストール状況を確認しました。

コンテナの確認

$ cd /opt/redash
$ sudo docker container ls
CONTAINER ID        IMAGE                        COMMAND                  CREATED              STATUS              PORTS                         NAMES
d13ae964a37c        redash/nginx:latest          "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 443/tcp   redash_nginx_1
862598628ff5        redash/redash:8.0.0.b32245   "/app/bin/docker-ent…"   About a minute ago   Up About a minute   5000/tcp                      redash_adhoc_worker_1
d84be218adfc        redash/redash:8.0.0.b32245   "/app/bin/docker-ent…"   About a minute ago   Up About a minute   5000/tcp                      redash_scheduler_1
9d680af57dbb        redash/redash:8.0.0.b32245   "/app/bin/docker-ent…"   About a minute ago   Up About a minute   5000/tcp                      redash_scheduled_worker_1
88dacea3c333        redash/redash:8.0.0.b32245   "/app/bin/docker-ent…"   About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp        redash_server_1
1587a6649920        postgres:9.6-alpine          "docker-entrypoint.s…"   About a minute ago   Up About a minute   5432/tcp                      redash_postgres_1
bc73e56ac9a2        redis:5.0-alpine             "docker-entrypoint.s…"   3 months ago         Up About a minute   6379/tcp                      redash_redis_1

データベースの確認

$ sudo docker exec redash_postgres_1 psql -U postgres -l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)

データベースの移行

以下root権限で実行していきます。

$ sudo su

Dockerコンテナの停止

$ docker-compose stop server scheduler scheduled_worker adhoc_worker nginx redis

redashユーザーの作成

$ docker exec -it redash_postgres_1 psql -U postgres
CREATE USER redash;
CREATE DATABASE redash OWNER redash;
\q

バックアップファイルのコピー

取得しておいたデータベースのバックアップファイルをホストサーバーのtmpディレクトリにコピーしておき、そこからさらにpostgresコンテナのtmpディレクトリにコピーします。

$ docker cp /tmp/old_redeash.dump redash_postgres_1:/tmp/old_redeash.dump

データベースのリストア

$ docker exec redash_postgres_1 pg_restore -U postgres -d postgres /tmp/old_redeash.dump

データベースの置き換え

$ docker exec -it redash_postgres_1 psql -U postgres template1
ALTER DATABASE redash OWNER TO postgres;
DROP DATABASE postgres;
ALTER DATABASE redash RENAME TO postgres;
\q

環境変数の設定

旧環境で控えておいた「REDASH_COOKIE_SECRET」の値を「REDASH_COOKIE_SECRET」と「REDASH_SECRET_KEY」に設定します。

$ vim env
REDASH_COOKIE_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
REDASH_SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

データベースのマイグレーション

下記のコマンドでRedashのバージョン7から8へのデータベースの移行内容が反映します。

$ docker-compose run --rm server manage db upgrade

Dockerコンテナの開始

$ docker-compose up -d

これでDockerベースのRedashに移行完了です。

タイトルとURLをコピーしました