redash のバックアップをする

redash のデータベースに接続する

次のコマンドで接続します。

sudo -u redash psql -d redash

接続を切るときには次のコマンド。

\q

redash のデータベース容量を確認する

select t1.datname AS db_name, pg_size_pretty(pg_database_size(t1.datname)) as db_size
from pg_database t1
where t1.datname = 'redash'

サーバーのディスク空き容量を確認する

バックアップをする前にサーバーのディスクの空き容量を確認します。

df -hT

データベースのバックアップコマンド

バックアップをします。

sudo -u redash pg_dump redash | gzip > redash_backup.gz

バックアップコマンド

redash 2.0 リリース:Athena正式対応!だけど表示されない時の対応

2017/8/8に、redash 2.0 がリリースされました。

今回のリリースで個人的に一番嬉しいのが、「Athena: direct query runner using the instead of JDBC proxy.」です。
今までも、redashでAthena使えはしたのですが、別にプロキシを立てて、
そこ経由でクエリ発行しないといけないという辛いものでした。

今回のメジャーアップデートで、正式対応したので早速アップデートしました。
バージョン1系統からのアップデートは、アップデーターがあるので非常に簡単です。

cd /opt/redash/current
sudo bin/upgrade

これで1〜2分でアップデートされます。

ところが自分の環境では、AthenaがData Sourceで表示されなかったのです。
ついでにBigQueryも使用できなくなってました。

これはRequirementsで要求されているライブラリが不足している、
もしくはバージョンが低いことが原因なのでインストールしてあげると
データソースにAtenaが表示されるようになります。

pip install -r requirements.txt
pip install -r requirements_all_ds.txt

redashをsupervisorctlで起動するときに発生するエラーへの対応

1. Error: .ini file does not include supervisorctl section

/opt/redash/supervisordsupervisorctl start allを実行すると、Error: .ini file does not include supervisorctl sectionとエラーが発生する。

色々紛らわしいのだが、.iniは、supervisord.confと読み替えて差し支えない。
supervisorctlが定義されていないと言われるので、supervisord.confに追記する。今回は空行で追加した。

[supervisorctl]
[supervisord]
nodaemon=false
logfile=/opt/redash/logs/supervisord.log
pidfile=/opt/redash/supervisord/supervisord.pid
directory=/opt/redash/current

2. http://127.0.0.1:19001 refused connection

/opt/redash/supervisordsupervisorctl start allを実行すると、http://127.0.0.1:19001 refused connectionとエラーが発生する。

supervisordが起動していないことが原因。まずは起動してあげる。

# supervisord -c supervisord.conf
# supervisorctl start all

3. FATAL: role “root” does not exist

api_error.logOperationalError: (psycopg2.OperationalError) FATAL: role "root" does not existというエラーが発生している。

postgresqlに、rootロールがないというエラーなので、roleを作成してあげる。

su postgres
psql
postgres=# CREATE ROLE root LOGIN SUPERUSER PASSWORD 'root';
postgres=# \q

4. you have to set the C_FORCE_ROOT environment variable

celery_error.logに次のエラーが発生していた。
If you really want to continue then you have to set the C_FORCE_ROOT
environment variable (but please think about this before you do).

対応するために、/opt/redash/current/redash/worker.pyを編集する。

+++ from celery import Celery,platforms
--- from celery import Celery
+++ platforms.C_FORCE_ROOT = True
celery = Celery('redash',
                broker=settings.CELERY_BROKER,
                include='redash.tasks')