백업 (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!
복원이 완료되면 데이터베이스에 대한 모든 쿼리는 즉시 현재(복원된) 버전을 쿼리해요.