cron으로 Heroku DB를 정기적으로 복원
개요
현재 Heroku에서 아래와 같은 데모 사이트를 운영하고 있습니다.
오픈 소스 영업 지원 시스템 "FreeSFA"
h tps : // f Ree-s Fu. tk/
데모 사이트
h tps : // f Ree-s Fu-에서도. 어리석은 p. 코m/
이 데모 사이트는 사용성을 확인하기 위해 만들어졌기 때문에 등록된 데이터를 남길 필요가 없습니다. 오히려 정기적으로 복원하여 깨끗한 상태를 유지하는 것이 관리하는 데도 편리합니다.
그래서 heroku 명령을 사용하여 정기적으로 복원하는 방법을 조사했지만 이것이 의외로 발견되지 않습니다.
heroku scheduler의 정보는 대량으로 히트 했습니다만, 이번 목적에는 미묘하게 맞지 않습니다.
heroku pg:backups
에는 자동으로 백업하는 기능이 있지만 자동으로 복원하는 기능은 없습니다.
어쩔 수 없기 때문에 가류로 해 보았습니다.
보다 우아한 방법이 있을지도 모릅니다만, 우선 움직였으므로, 기록을 남겨 둡니다.
실행 환경
Ubuntu 18.04 (GCE 무료 프레임에서 실행 중)
Heroku CLI 7.18.9
DB는 Heroku PostgreSQL
작업 내용
Heroku CLI 설치
$ sudo snap install --classic heroku
Heroku에 로그인
$ heroku login --interactive
백업 실행
$ heroku pg:backups capture -a {アプリ名}
백업 확인 예
무료 버전의 Heroku에서는 백업을 2세대까지 저장할 수 있습니다.
이 예에서는 b006
라는 ID 백업을 복원 대상으로 합니다.
실험한 후이므로 복원 이력도 남아 있습니다.
$ heroku pg:backups -a {アプリ名}
› Warning: heroku update available from 7.18.9 to 7.18.10
=== Backups
ID Created at Status Size Database
──── ───────────────────────── ─────────────────────────────────── ──────── ────────
b006 2018-11-27 04:06:43 +0000 Completed 2018-11-27 04:06:46 +0000 126.67KB DATABASE
b004 2018-11-15 05:39:09 +0000 Completed 2018-11-15 05:39:11 +0000 126.28KB DATABASE
=== Restores
ID Started at Status Size Database
──── ───────────────────────── ─────────────────────────────────── ──────── ────────
r012 2018-11-27 05:25:06 +0000 Completed 2018-11-27 05:25:08 +0000 126.67KB DATABASE
r011 2018-11-27 04:56:24 +0000 Completed 2018-11-27 04:56:27 +0000 126.67KB DATABASE
r010 2018-11-27 04:50:10 +0000 Completed 2018-11-27 04:50:12 +0000 126.67KB DATABASE
r009 2018-11-27 04:48:48 +0000 Completed 2018-11-27 04:48:50 +0000 126.67KB DATABASE
r008 2018-11-27 04:47:53 +0000 Completed 2018-11-27 04:47:55 +0000 126.67KB DATABASE
r007 2018-11-27 04:07:15 +0000 Completed 2018-11-27 04:07:17 +0000 126.67KB DATABASE
r005 2018-11-27 02:43:43 +0000 Completed 2018-11-27 02:43:45 +0000 126.28KB DATABASE
r003 2018-11-05 01:20:02 +0000 Completed 2018-11-05 01:20:04 +0000 120.90KB DATABASE
r002 2018-11-05 01:19:08 +0000 Completed 2018-11-05 01:19:11 +0000 120.90KB DATABASE
복원용 배치 파일 작성 예
crontab에 직접 쓰면 유지 보수가 어렵기 때문에 쉘 스크립트를 작성합니다.
restore.sh#!/bin/bash
date
/snap/bin/heroku pg:backups restore -a {アプリ名} --confirm {アプリ名}
crontab 예제
매일 아침 4시에 복원되도록했습니다.
0 4 * * * ~/devel/heroku/restore.sh >> ~/log/heroku/restore.log 2>&1
동작 확인
crontab을 수정하고 몇 분 후에 복원되도록 가전 및 방문 실적을 입력했습니다.
몇 분 후.
$ cat restore.log
2018年 11月 27日 火曜日 16:58:01 JST
› Warning: heroku update available from 7.18.9 to 7.18.10
Starting restore of b006 to postgresql-cubic-14048... done
Use Ctrl-C at any time to stop monitoring progress; the backup will continue restoring.
Use heroku pg:backups to check progress.
Stop a running restore with heroku pg:backups:cancel.
Restoring... done
입력한 가전 실적과 방문 실적이 0건으로 돌아왔습니다.
잡감
cron에서 실행했을 때 Heroku CLI의 로그인 상태가 유지되는지 걱정했지만 정상적으로 움직였습니다.
이제 데모 사이트의 DB는 깨끗한 상태로 유지되어야합니다.
Reference
이 문제에 관하여(cron으로 Heroku DB를 정기적으로 복원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sikkim/items/dd5b9abce323c6e30b89
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Ubuntu 18.04 (GCE 무료 프레임에서 실행 중)
Heroku CLI 7.18.9
DB는 Heroku PostgreSQL
작업 내용
Heroku CLI 설치
$ sudo snap install --classic heroku
Heroku에 로그인
$ heroku login --interactive
백업 실행
$ heroku pg:backups capture -a {アプリ名}
백업 확인 예
무료 버전의 Heroku에서는 백업을 2세대까지 저장할 수 있습니다.
이 예에서는 b006
라는 ID 백업을 복원 대상으로 합니다.
실험한 후이므로 복원 이력도 남아 있습니다.
$ heroku pg:backups -a {アプリ名}
› Warning: heroku update available from 7.18.9 to 7.18.10
=== Backups
ID Created at Status Size Database
──── ───────────────────────── ─────────────────────────────────── ──────── ────────
b006 2018-11-27 04:06:43 +0000 Completed 2018-11-27 04:06:46 +0000 126.67KB DATABASE
b004 2018-11-15 05:39:09 +0000 Completed 2018-11-15 05:39:11 +0000 126.28KB DATABASE
=== Restores
ID Started at Status Size Database
──── ───────────────────────── ─────────────────────────────────── ──────── ────────
r012 2018-11-27 05:25:06 +0000 Completed 2018-11-27 05:25:08 +0000 126.67KB DATABASE
r011 2018-11-27 04:56:24 +0000 Completed 2018-11-27 04:56:27 +0000 126.67KB DATABASE
r010 2018-11-27 04:50:10 +0000 Completed 2018-11-27 04:50:12 +0000 126.67KB DATABASE
r009 2018-11-27 04:48:48 +0000 Completed 2018-11-27 04:48:50 +0000 126.67KB DATABASE
r008 2018-11-27 04:47:53 +0000 Completed 2018-11-27 04:47:55 +0000 126.67KB DATABASE
r007 2018-11-27 04:07:15 +0000 Completed 2018-11-27 04:07:17 +0000 126.67KB DATABASE
r005 2018-11-27 02:43:43 +0000 Completed 2018-11-27 02:43:45 +0000 126.28KB DATABASE
r003 2018-11-05 01:20:02 +0000 Completed 2018-11-05 01:20:04 +0000 120.90KB DATABASE
r002 2018-11-05 01:19:08 +0000 Completed 2018-11-05 01:19:11 +0000 120.90KB DATABASE
복원용 배치 파일 작성 예
crontab에 직접 쓰면 유지 보수가 어렵기 때문에 쉘 스크립트를 작성합니다.
restore.sh#!/bin/bash
date
/snap/bin/heroku pg:backups restore -a {アプリ名} --confirm {アプリ名}
crontab 예제
매일 아침 4시에 복원되도록했습니다.
0 4 * * * ~/devel/heroku/restore.sh >> ~/log/heroku/restore.log 2>&1
동작 확인
crontab을 수정하고 몇 분 후에 복원되도록 가전 및 방문 실적을 입력했습니다.
몇 분 후.
$ cat restore.log
2018年 11月 27日 火曜日 16:58:01 JST
› Warning: heroku update available from 7.18.9 to 7.18.10
Starting restore of b006 to postgresql-cubic-14048... done
Use Ctrl-C at any time to stop monitoring progress; the backup will continue restoring.
Use heroku pg:backups to check progress.
Stop a running restore with heroku pg:backups:cancel.
Restoring... done
입력한 가전 실적과 방문 실적이 0건으로 돌아왔습니다.
잡감
cron에서 실행했을 때 Heroku CLI의 로그인 상태가 유지되는지 걱정했지만 정상적으로 움직였습니다.
이제 데모 사이트의 DB는 깨끗한 상태로 유지되어야합니다.
Reference
이 문제에 관하여(cron으로 Heroku DB를 정기적으로 복원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sikkim/items/dd5b9abce323c6e30b89
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ sudo snap install --classic heroku
$ heroku login --interactive
$ heroku pg:backups capture -a {アプリ名}
$ heroku pg:backups -a {アプリ名}
› Warning: heroku update available from 7.18.9 to 7.18.10
=== Backups
ID Created at Status Size Database
──── ───────────────────────── ─────────────────────────────────── ──────── ────────
b006 2018-11-27 04:06:43 +0000 Completed 2018-11-27 04:06:46 +0000 126.67KB DATABASE
b004 2018-11-15 05:39:09 +0000 Completed 2018-11-15 05:39:11 +0000 126.28KB DATABASE
=== Restores
ID Started at Status Size Database
──── ───────────────────────── ─────────────────────────────────── ──────── ────────
r012 2018-11-27 05:25:06 +0000 Completed 2018-11-27 05:25:08 +0000 126.67KB DATABASE
r011 2018-11-27 04:56:24 +0000 Completed 2018-11-27 04:56:27 +0000 126.67KB DATABASE
r010 2018-11-27 04:50:10 +0000 Completed 2018-11-27 04:50:12 +0000 126.67KB DATABASE
r009 2018-11-27 04:48:48 +0000 Completed 2018-11-27 04:48:50 +0000 126.67KB DATABASE
r008 2018-11-27 04:47:53 +0000 Completed 2018-11-27 04:47:55 +0000 126.67KB DATABASE
r007 2018-11-27 04:07:15 +0000 Completed 2018-11-27 04:07:17 +0000 126.67KB DATABASE
r005 2018-11-27 02:43:43 +0000 Completed 2018-11-27 02:43:45 +0000 126.28KB DATABASE
r003 2018-11-05 01:20:02 +0000 Completed 2018-11-05 01:20:04 +0000 120.90KB DATABASE
r002 2018-11-05 01:19:08 +0000 Completed 2018-11-05 01:19:11 +0000 120.90KB DATABASE
#!/bin/bash
date
/snap/bin/heroku pg:backups restore -a {アプリ名} --confirm {アプリ名}
0 4 * * * ~/devel/heroku/restore.sh >> ~/log/heroku/restore.log 2>&1
crontab을 수정하고 몇 분 후에 복원되도록 가전 및 방문 실적을 입력했습니다.
몇 분 후.
$ cat restore.log
2018年 11月 27日 火曜日 16:58:01 JST
› Warning: heroku update available from 7.18.9 to 7.18.10
Starting restore of b006 to postgresql-cubic-14048... done
Use Ctrl-C at any time to stop monitoring progress; the backup will continue restoring.
Use heroku pg:backups to check progress.
Stop a running restore with heroku pg:backups:cancel.
Restoring... done
입력한 가전 실적과 방문 실적이 0건으로 돌아왔습니다.
잡감
cron에서 실행했을 때 Heroku CLI의 로그인 상태가 유지되는지 걱정했지만 정상적으로 움직였습니다.
이제 데모 사이트의 DB는 깨끗한 상태로 유지되어야합니다.
Reference
이 문제에 관하여(cron으로 Heroku DB를 정기적으로 복원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sikkim/items/dd5b9abce323c6e30b89
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(cron으로 Heroku DB를 정기적으로 복원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sikkim/items/dd5b9abce323c6e30b89텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)