← Cloudflare D1 / d1 / reference
Резервные копии (устаревшая версия)
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, у вас должно быть:
- Cloudflare Установлен Wrangler CLI
- Существующая база данных 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-7f9e606973e3Restoring existing-db from backup 6cceaf8c-ceab-4351-ac85-7f9e606973e3....
Done!После завершения восстановления все запросы к базе данных будут немедленно обращаться к текущей (восстановленной) версии.