- redash環境作ってみんなクエリがしがし作ってるけどyml変えて再起動したらこれ消えちゃうんだよね??
- なんとかしなきゃ(;・∀・)
はじめに
- redashは作成済み
- OS・コンテナ再起動してもRedashデータを消さないようにする
- ホストOS上に外部ボリュームを作成
- そこにコンテナ内PostGreSQL上Redashのデータを保存
外部ボリューム作成
- 外部ボリュームは任意です
$ df -h /data-001
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb 99G 63M 94G 1% /data-001
$ ls -ld /data-001/postgresql/data
drwxr-xr-x 2 appuser appuser 4096 Nov 12 17:18 /data-001/postgresql/data
Redashデータをバックアップ
- データは一回消えてしまうのでバックアップしておく
$ cid=`docker ps | grep redash_postgres | awk '{print $1}'`
$ echo $cid
2820a2a88c79
$ 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 /data-001/postgresql/backup/redash_backup.gz
$ ls -lh /data-001/postgresql/backup/redash_backup.gz
-rw-r--r-- 1 appuser appuser 2.3M Nov 12 19:16 /data-001/postgresql/backup/redash_backup.gz
コンテナを停止
$ docker-compose -f /home/appuser/redash/docker-compose.production.yml stop
Stopping redash_nginx_1_7686013e7f9a ... done
Stopping redash_server_1_a3232ad33d74 ... done
Stopping redash_worker_1_e14a3e086a48 ... done
Stopping redash_postgres_1_a55528becf36 ... done
Stopping redash_redis_1_f04f2922999d ... done
ホスト側にマウントするDockerの設定を適用
$ vi /home/appuser/redash/docker-compose.production.yml
:
- /data-001/postgresql/data:/var/lib/postgresql/data ※コメント外す
:
コンテナを起動
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
47cb94bac0cf postgres:9.5.6-alpine "docker-entrypoint.s…" 47 seconds ago Up 42 seconds 0.0.0.0:5432->5432/tcp jolly_kowalevski
$ docker inspect 47cb94bac0cf
$ docker run -d -v /data-001/postgresql/data:/var/lib/postgresql/data -p 5432:5432 postgres:9.5.6-alpine
47cb94bac0cfec2774cb0d469c7a1f4f3ec35f67d22834aa41aed2c6d1f0e515
IPとコンテナIDを確定
$ cid=`docker ps | grep postgres | awk '{print $1}'`
$ dbip=`docker inspect ${cid} | jq .[].NetworkSettings.IPAddress`
$ echo $dbip
"172.17.0.2"
$ cid=`docker ps | grep postgres | awk '{print $1}'`
$ echo ${cid}
47cb94bac0cf
データベース再作成
$ psql -h ${dbip} -U postgres template1
psql (9.2.24, server 9.5.6)
WARNING: psql version 9.2, server version 9.5.
Some psql features might not work.
Type "help" for help.
template1=# DROP DATABASE IF EXISTS postgres;
DROP DATABASE
template1=# CREATE DATABASE postgres;
CREATE DATABASE
template1=# \q
PostgresSQLコンテナ単体起動とデータリストア
$ docker cp /data-001/postgresql/backup/redash_backup.gz ${cid}:/usr/local/redash_backup.gz
$ docker exec -t ${cid} /bin/bash -c 'zcat /usr/local/redash_backup.gz | psql -U postgres -d postgres'
コンテナ起動
$ docker-compose -f /home/appuser/redash/docker-compose.production.yml up -d
Starting redash_worker_1_e14a3e086a48 ...
Starting redash_redis_1_f04f2922999d ...
Recreating redash_postgres_1_a55528becf36 ...
Starting redash_worker_1_e14a3e086a48 ... done
Starting redash_redis_1_f04f2922999d ... done
Recreating redash_postgres_1_a55528becf36 ... done
Recreating redash_server_1_a3232ad33d74 ... done
Recreating redash_nginx_1_7686013e7f9a ... done
起動とデータの確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df0214b8cdd6 redash/nginx:latest "nginx -g 'daemon of…" 7 minutes ago Up 7 minutes 0.0.0.0:80->80/tcp, 443/tcp redash_nginx_1_7686013e7f9a
18515915aa2a redash/redash:latest "/app/bin/docker-ent…" 7 minutes ago Up 7 minutes 5000/tcp, 0.0.0.0:5500->5500/tcp redash_server_1_a3232ad33d74
009bf31f6fda postgres:9.5.6-alpine "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 5432/tcp redash_postgres_1_a55528becf36
47cb94bac0cf postgres:9.5.6-alpine "docker-entrypoint.s…" 16 minutes ago Up 16 minutes 0.0.0.0:5432->5432/tcp jolly_kowalevski
01ed0be50163 redash/redash:latest "/app/bin/docker-ent…" 3 days ago Up 7 minutes 5000/tcp redash_worker_1_e14a3e086a48
5deeac830d77 redis:3.0-alpine "docker-entrypoint.s…" 3 days ago Up 7 minutes 6379/tcp redash_redis_1_f04f2922999d
$ sudo ls -l /data-001/postgresql/data/
total 120
drwx------ 5 70 70 4096 Nov 12 19:26 base
drwx------ 2 70 70 4096 Nov 12 19:30 global
drwx------ 2 70 70 4096 Nov 12 19:20 pg_clog
drwx------ 2 70 70 4096 Nov 12 19:20 pg_commit_ts
drwx------ 2 70 70 4096 Nov 12 19:20 pg_dynshmem
-rw------- 1 70 70 4492 Nov 12 19:20 pg_hba.conf
-rw------- 1 70 70 1636 Nov 12 19:20 pg_ident.conf
drwx------ 4 70 70 4096 Nov 12 19:20 pg_logical
drwx------ 4 70 70 4096 Nov 12 19:20 pg_multixact
drwx------ 2 70 70 4096 Nov 12 19:20 pg_notify
drwx------ 2 70 70 4096 Nov 12 19:20 pg_replslot
drwx------ 2 70 70 4096 Nov 12 19:20 pg_serial
drwx------ 2 70 70 4096 Nov 12 19:20 pg_snapshots
drwx------ 2 70 70 4096 Nov 12 19:20 pg_stat
drwx------ 2 70 70 4096 Nov 12 19:36 pg_stat_tmp
drwx------ 2 70 70 4096 Nov 12 19:20 pg_subtrans
drwx------ 2 70 70 4096 Nov 12 19:20 pg_tblspc
drwx------ 2 70 70 4096 Nov 12 19:20 pg_twophase
-rw------- 1 70 70 4 Nov 12 19:20 PG_VERSION
drwx------ 3 70 70 4096 Nov 12 19:20 pg_xlog
-rw------- 1 70 70 88 Nov 12 19:20 postgresql.auto.conf
-rw------- 1 70 70 21218 Nov 12 19:20 postgresql.conf
-rw------- 1 70 70 24 Nov 12 19:20 postmaster.opts
-rw------- 1 70 70 85 Nov 12 19:20 postmaster.pid
あとがき
- Redashをメンバーに開放する前に設定しておいたほうが良いですね。みんなが喜んでクエリ作り始めてからやると消しちゃうかもしれないので余計なプレッシャーを感じることになる(;・∀・)
参考にしたサイト