본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

백업 (Backups, 레거시)

원문 보기 위키 갱신

자동 백업 (Automatic backups)

D1은 매시간 여러분을 대신해 데이터베이스를 자동으로 백업하고, 백업을 24시간 동안 보관해요. 백업이 실행되는 동안 데이터베이스에 대한 접근이 차단돼요. 대부분의 경우 이는 불과 1~2초에 지나지 않으며, 백업 중에 도착한 요청은 대기열에 들어가요.

출처: 문서

본문

만든 수동 백업을 포함해 이러한 백업을 보고 관리하려면 d1 backup list <DATABASE_NAME> 명령으로 각 백업을 나열할 수 있어요.

예를 들어 existing-db라는 D1 데이터베이스의 모든 백업을 나열하려면:

wrangler d1 backup list existing-db
┌──────────────┬──────────────────────────────────────┬────────────┬─────────┐
│ created_at   │ id                                   │ num_tables │ size    │
├──────────────┼──────────────────────────────────────┼────────────┼─────────┤
│ 1 hour ago   │ 54a23309-db00-4c5c-92b1-c977633b937c │ 1          │ 95.3 kB │
├──────────────┼──────────────────────────────────────┼────────────┼─────────┤
│ <...>        │ <...>                                │ <...>      │ <...>   │
├──────────────┼──────────────────────────────────────┼────────────┼─────────┤
│ 2 months ago │ 8433a91e-86d0-41a3-b1a3-333b080bca16 │ 1          │ 65.5 kB │
└──────────────┴──────────────────────────────────────┴────────────┴─────────┘%

각 백업의 id를 사용하면 특정 백업을 다운로드하거나 복원할 수 있어요.

데이터베이스 수동 백업 (Manually back up a database)

대규모 스키마 변경을 하기 전, 데이터를 수동으로 삽입하거나 삭제하기 전, 또는 활발히 사용 중인 데이터베이스를 수정하기 전에 수동 백업을 만드는 것은 좋은 습관이에요. D1은 언제든지 데이터베이스의 백업을 만들 수 있게 해 주고 여러분을 대신해 백업을 저장해요. 기존 데이터베이스에 대한 변경을 단순화하려면 마이그레이션 사용도 고려해 보세요.

D1 데이터베이스를 백업하려면 다음이 있어야 해요:

  • Cloudflare Wrangler CLI가 설치되어 있어야 해요.

  • 백업하려는 기존 D1 데이터베이스.

예를 들어 example-db라는 D1 데이터베이스의 수동 백업을 만들려면 d1 backup create를 호출해요:

wrangler d1 backup create example-db
┌─────────────────────────────┬──────────────────────────────────────┬────────────┬─────────┬───────┐
│ created_at                  │ id                                   │ num_tables │ size    │ state │
├─────────────────────────────┼──────────────────────────────────────┼────────────┼─────────┼───────┤
│ 2023-02-04T15:49:36.113753Z │ 123a81a2-ab91-4c2e-8ebc-64d69633faf1 │ 1          │ 65.5 kB │ done  │
└─────────────────────────────┴──────────────────────────────────────┴────────────┴─────────┴───────┘

더 큰 데이터베이스, 특히 여러 테이블이 있는 수 메가바이트(MB) 크기의 데이터베이스는 백업하는 데 몇 초가 걸릴 수 있어요. 출력의 state 열로 백업이 완료됐는지 알 수 있어요.

백업을 로컬로 다운로드하기 (Downloading a backup locally)

백업을 로컬로 다운로드하려면 wrangler d1 backup download <DATABASE_NAME> <BACKUP_ID>를 호출해요. wrangler d1 backup list <DATABASE_NAME>를 사용해 주어진 D1 데이터베이스에 사용 가능한 백업(ID 포함)을 나열할 수 있어요.

예를 들어 example-db라는 데이터베이스의 특정 백업을 다운로드하려면:

wrangler d1 backup download example-db 123a81a2-ab91-4c2e-8ebc-64d69633faf1
🌀 Downloading backup 123a81a2-ab91-4c2e-8ebc-64d69633faf1 from 'example-db'
🌀 Saving to /Users/you/projects/example-db.123a81a2.sqlite3
🌀 Done!

데이터베이스 백업은 네이티브 SQLite3 형식으로 현재 작업 디렉토리에 다운로드돼요. 로컬 데이터베이스를 가져오려면 D1에 데이터 가져오기 문서를 읽어 보세요.

백업 복원하기 (Restoring a backup)

백업을 복원하면 현재 실행 중인 데이터베이스 버전을 백업으로 덮어써요. 백업에 존재하지 않는 데이터베이스 테이블(및 그 데이터)은 현재 데이터베이스 버전에 더 이상 존재하지 않게 되고, 이를 의존하는 쿼리는 실패해요.

existing-db라는 D1 데이터베이스의 이전 백업을 복원하려면 해당 백업의 ID를 d1 backup restore에 전달해요:

wrangler d1 backup restore existing-db  6cceaf8c-ceab-4351-ac85-7f9e606973e3
Restoring existing-db from backup 6cceaf8c-ceab-4351-ac85-7f9e606973e3....
Done!

복원이 완료되면 데이터베이스에 대한 모든 쿼리는 즉시 현재(복원된) 버전을 쿼리해요.

더 알아보기 (Learn more)