INTEGRITY Документация

Резервные копии (устаревшая версия)

D1 предлагает встроенную поддержку создания и восстановления резервных копий ваших баз данных с помощью wrangler v3, включая поддержку запланированного автоматического резервного копирования и ручного управления резервными копиями.

Автоматическое резервное копирование

D1 автоматически создаёт резервные копии ваших баз данных каждый час от вашего имени, и хранит резервные копии в течение 24 часов. Во время выполнения резервного копирования доступ к БД будет заблокирован. Обычно это занимает не более пары секунд, а все запросы, поступившие во время резервного копирования, будут поставлены в очередь.

Чтобы просмотреть эти резервные копии и управлять ими, включая созданные вами вручную, используйте d1 backup list <DATABASE_NAME> команду, чтобы вывести список резервных копий.

Например, чтобы вывести список всех резервных копий базы данных D1 с именем existing-db:

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 каждой резервной копии позволяет скачать или восстановить конкретную резервную копию.

Резервное копирование базы данных вручную

Прежде чем вносить крупные изменения в схему, вручную добавлять или удалять данные либо иным образом изменять базу данных, которую вы активно используете, возьмите за правило создавать её резервную копию вручную. D1 позволяет создать резервную копию базы данных в любой момент и сохраняет её за вас. Также стоит учитывать использование миграций чтобы упростить внесение изменений в существующую базу данных.

Чтобы создать резервную копию базы данных D1, у вас должно быть:

  1. Cloudflare Установлен Wrangler CLI
  2. Существующая база данных D1, для которой нужно создать резервную копию.

Например, чтобы создать ручную резервную копию базы данных D1 с именем example-db, вызовите 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  │
└─────────────────────────────┴──────────────────────────────────────┴────────────┴─────────┴───────┘

Резервное копирование более крупных баз данных, особенно занимающих несколько мегабайт (МБ) и содержащих много таблиц, может занять несколько секунд. state столбец в выводе покажет, когда резервное копирование завершено.

Локальная загрузка резервной копии

Чтобы скачать резервную копию локально, вызовите wrangler d1 backup download <DATABASE_NAME> <BACKUP_ID>. Используйте wrangler d1 backup list <DATABASE_NAME> чтобы вывести список доступных резервных копий, включая их идентификаторы, для указанной базы данных D1.

Например, чтобы скачать определённую резервную копию для базы данных с именем 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.

Восстановление из резервной копии

Восстановление из резервной копии заменит текущую рабочую версию базы данных резервной копией. Таблицы базы данных (и содержащиеся в них данные), которых нет в резервной копии, будут удалены из текущей версии базы данных, а запросы, зависящие от них, завершатся ошибкой.

Чтобы восстановить предыдущую резервную копию базы данных D1 с именем existing-db, передайте идентификатор этой резервной копии в 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!

После завершения восстановления все запросы к базе данных будут немедленно обращаться к текущей (восстановленной) версии.