백업 및 복원
데이터베이스는 사용 중일 때 약 1분에 한 번 커밋 로그로 자동 백업되며, 암호화된 사본이 다른 리전에 보관됩니다. 명령 하나로 어느 백업, 어느 커밋, 어느 시각으로든 복원할 수 있습니다.
따로 설정할 것은 없습니다. 데이터베이스가 있는 모든 프로젝트는 사용 중일 때 약 1분에 한 번 백업되고, 정지되기 직전에 한 번 더 백업됩니다.
runlot pg generations epoch seq createdAt type size object kind final
* 3 17 2026-09-05T14:00:00Z delta 41.2 MiB 96.0 KiB scheduled -
3 16 2026-09-05T13:00:00Z delta 41.2 MiB 1.3 MiB scheduled -
3 15 2026-09-05T12:00:00Z full 40.9 MiB 173 MiB scheduled -
…size는 해당 백업을 복원할 때 데이터베이스의 크기이고, object는 그 백업 자체가 저장하는 용량입니다.
전체 백업과 커밋 로그
데이터베이스의 첫 백업은 전체(full) 백업입니다. 그 이후의 모든 백업은 커밋 로그로, 이전 백업 이후에 이루어진 모든 커밋을 순서대로 담고 이전 백업에 연결됩니다. 데이터베이스를 사용하는 동안 약 1분에 한 번 백업이 생성되고, 프로젝트가 정지되거나 재배포되거나 종료되기 직전에 한 번 더 생성됩니다. 마지막 전체 백업 이후의 로그 합이 데이터베이스 크기에 이르면 새 전체 백업이 생성됩니다.
백업은 이전 백업과 자신 사이의 커밋을 순서대로 담으므로, 백업이 생성된 순간만이 아니라 그 커밋 하나하나가 복원 지점입니다. commits 열이 각 백업이 담은 범위를 보여 줍니다.
직접 관리할 것은 없습니다. runlot pg restore 는 백업, 커밋, 시각 중 하나를 받고, 서비스가 전체 백업과 선택한 지점까지의 로그를 순서대로 부어 넣습니다. 로그는 앞선 로그가 있어야 하므로, 보존 정책은 보존되는 백업이 의존하는 백업을 모두 남깁니다 — 목록이 보존 기간보다 몇 개 더 길 수 있습니다.
복원이나 삭제 직전에 생성되는 백업(pre-restore, pre-delete)은 항상 전체 백업이므로 그 자체로 독립적입니다.
보존 기간
| 요금제 | 보관되는 백업 | 보존 기간 |
|---|---|---|
| 무료 | — | 7일 |
| 프로 | — | 30일 |
백업은 자주 생성되고 각 백업은 변경된 부분만 담으므로, 보존 창 안의 어느 시점으로든 복원할 수 있습니다.
가장 최근 백업은 기간이나 개수와 관계없이 삭제되지 않습니다. 오랫동안 유휴 상태였던 프로젝트도 마지막 백업은 유지됩니다.
데이터가 변경되지 않은 경우
이전 백업 이후 변경 사항이 없으면 새 백업을 생성하지 않습니다. 다만 백업 확인 기록은 남습니다. 이를 통해 사용하지 않는 프로젝트가 동일한 데이터의 사본을 여러 개 저장하지 않도록 합니다.
요청이 없어 자동으로 정지된 프로젝트도 백업 시점에는 잠시 시작되어 백업된 후 다시 정지됩니다. 정지되어 있다고 해서 백업을 건너뛰는 일은 없습니다.
암호화 및 저장 위치
각 백업은 프로젝트별 키로 암호화됩니다. 이 키는 다시 마스터 키로 암호화되며, 암호화된 백업 데이터는 다른 리전의 오브젝트 스토리지에 저장됩니다.
복원
runlot pg restore 3/15 # the end of backup 3/15
runlot pg restore latest # the end of the newest backup
runlot pg restore txn:8812 # exactly commit 8812, wherever it is in the list
runlot pg restore 2026-09-12T05:32:07Z # the last commit at or before that time복원을 시작하기 전에 현재 데이터의 백업이 먼저 생성됩니다. 따라서 잘못된 백업을 복원하더라도 복원 이전 상태로 되돌릴 수 있습니다.
The current data is backed up first, then restored from backup 3/15. Anything written after that point is lost.
Type the project name to continue: my-app복원하려면 프로젝트 이름을 정확히 입력해야 합니다. 되돌리기 어려운 작업이므로 단순한 예/아니오 확인은 받지 않습니다. 이 명령에는 admin 역할이 필요합니다.
latest를 사용하더라도 CLI는 먼저 백업 목록을 표시하고 실제로 복원할 백업을 보여주므로, 화면에서 본 것과 실제로 복원되는 것이 달라질 수 없습니다.
복원 직후
복원은 프로젝트를 중지한 뒤 선택한 백업으로 다시 시작합니다. 시작 후 최대 3초 동안 데이터베이스 요청에서 57P03 오류가 발생할 수 있습니다. 자세한 내용은 재활성화 창을 참고하세요.
복원 가능한 시점
보존 기간 안의 어느 커밋이든 가능합니다. 무료 플랜은 7일, Pro 는 30일입니다. 백업은 커밋의 순서 있는 로그이므로 txn:<commit> 은 백업 중간에 있는 커밋이라도 정확히 그 커밋에 안착합니다. 시각을 주면 그 시각 이전의 마지막 커밋에 안착하며, 해상도는 백업 한 번 — 데이터베이스 사용 중에는 약 1분 — 입니다.
제공되지 않는 것은 최신 백업 이후의 1분 남짓입니다. 마지막 백업이 보내진 뒤의 커밋은 프로젝트의 노드에만 있으며, 다음 백업 전에 그 노드가 고장 나면 잃습니다. 프로젝트가 정지된 동안에는 그런 창이 없습니다 — 정지되면서 마지막 백업이 생성되었기 때문입니다.
진단 내보내기는 백업이 아닙니다
runlot pg export이 명령으로 생성되는 파일은 백업으로 관리되지 않으며 복원에 사용할 수 없습니다. 현재 상태를 지원 요청과 공유하는 용도로 사용하세요.