← Cloudflare D1 / d1 / reference
Time Travel a zálohy
Time Travel je přístup D1 k zálohování a obnově k určitému okamžiku a umožňuje obnovit databázi na libovolnou minutu za posledních 30 dní.
- Time Travel není nutné povolovat, je vždy zapnutý.
- Historie databáze a obnova databáze nejsou zpoplatněny žádnými dodatečnými náklady.
- Time Travel automaticky vytváří bookmarky za vás. Zálohu není nutné ručně spouštět ani na ni pamatovat.
Díky tomu, že se nemusíte spoléhat na plánované ani ručně spouštěné zálohy, se můžete vrátit v čase a obnovit databázi do stavu před neúspěšnou migrací nebo změnou schématu, DELETE nebo UPDATE příkaz bez konkrétního WHERE klauzuli a v budoucnu přímo rozvětvit/zkopírovat produkční databázi.
Bookmarky
Time Travel využívá koncept D1 nazvaný bookmark k obnovení k určitému bodu v čase.
- Bookmarky starší než 30 dní jsou neplatné a nelze je použít jako bod obnovy.
- Obnovení databáze na konkrétní bookmark neodstraní ani nesmaže starší bookmarky. Pokud například obnovíte databázi na bookmark odpovídající jejímu stavu před 10 minutami a poté zjistíte, že jste potřebovali obnovit ještě dřívější stav, můžete to stále udělat.
- Záložky lze řadit lexikograficky. Řazení seřadí seznam záložek od nejstarší po nejnovější.
- Bookmarky lze odvodit z Časové razítko Unix ↗ (počet sekund od 1. ledna 1970), přičemž převod mezi konkrétním časovým razítkem a bookmarkem je deterministický (stabilní).
Bookmarky také využívá Sessions API k zajištění sekvenční konzistence v rámci Session.
Časová razítka
Time Travel podporuje dva formáty časových razítek:
- Časová razítka Unix ↗, což odpovídá počtu sekund od půlnoci 1. ledna 1970. Vždy se jedná o čas UTC.
- Formát řetězce data a času v JavaScriptu ↗, což je zjednodušená verze formátu časového razítka ISO-8601. Platný řetězec data a času pro 27. července 2023, 11:18 v časovém pásmu Americas/New_York (EST), by vypadal takto
2023-07-27T11:18:53.000-04:00.
Požadavky
Wranglerv3.4.0nebo novější, abyste mohli používat příkazy Time Travel.- Databáze na produkčním backendu D1. Zda databáze používá tento backend, můžete zjistit pomocí
wrangler d1 info DB_NAME- výstup ukazujeversion: production.
Získání bookmarku
Bookmark pro aktuální časové razítko získáte voláním d1 info příkaz, který standardně vrací aktuální bookmark:
wrangler d1 time-travel info YOUR_DATABASE🚧 Time Traveling...
⚠️ The current bookmark is '00000085-0000024c-00004c6d-8e61117bf38d7adb71b934ebbf891683'
⚡️ To restore to this specific bookmark, run:
`wrangler d1 time-travel restore YOUR_DATABASE --bookmark=00000085-0000024c-00004c6d-8e61117bf38d7adb71b934ebbf891683`Pro získání bookmarku pro časové razítko v minulosti předejte --timestamp příznak s platným časovým razítkem ve formátu Unix nebo RFC3339:
wrangler d1 time-travel info YOUR_DATABASE --timestamp="2023-07-09T17:31:11+00:00"Obnovení databáze
Pro obnovení databáze k určitému časovému bodu:
wrangler d1 time-travel restore YOUR_DATABASE --timestamp=UNIX_TIMESTAMP🚧 Restoring database YOUR_DATABASE from bookmark 00000080-ffffffff-00004c60-390376cb1c4dd679b74a19d19f5ca5be
⚠️ This will overwrite all data in database YOUR_DATABASE.
In-flight queries and transactions will be cancelled.
✔ OK to proceed (y/N) … yes
⚡️ Time travel in progress...
✅ Database YOUR_DATABASE restored back to bookmark 00000080-ffffffff-00004c60-390376cb1c4dd679b74a19d19f5ca5be
↩️ To undo this operation, you can restore to the previous bookmark: 00000085-ffffffff-00004c6d-2510c8b03a2eb2c48b2422bb3b33fad5Vezměte na vědomí:
- Časová razítka se převádějí na deterministický, stabilní bookmark. Stejné časové razítko vždy představuje stejný bookmark.
- Probíhající dotazy budou zrušeny a klientovi bude vrácena chyba.
- Operace obnovení vrátí bookmark který vám umožňuje undo a vraťte databázi do předchozího stavu.
Vrácení obnovení zpět
Obnovení můžete vrátit zpět takto:
- Když si poznamenáte předchozí bookmark vrácený jako součást
wrangler d1 time-travel restoreoperace - Přímé obnovení na bookmark v minulosti, před vaším posledním obnovením.
Načtení bookmarku z dřívějšího stavu:
wrangler d1 time-travel info YOUR_DATABASE🚧 Time Traveling...
⚠️ The current bookmark is '00000085-0000024c-00004c6d-8e61117bf38d7adb71b934ebbf891683'
⚡️ To restore to this specific bookmark, run:
`wrangler d1 time-travel restore YOUR_DATABASE --bookmark=00000085-0000024c-00004c6d-8e61117bf38d7adb71b934ebbf891683`Export D1 do R2 pomocí Workflows
Databázi D1 můžete automaticky exportovat do úložiště R2 prostřednictvím REST API a Cloudflare Workflows. To se hodí, pokud chcete uchovat stav databáze D1 déle než 30 dní.
Více informací najdete v průvodci Export a uložení databáze D1.
Poznámky
- Unixové časové razítko rychle získáte z příkazové řádky v macOS a Windows pomocí
date +%s. - Time Travel zatím neumožňuje klonovat nebo forkovat existující databázi do nové kopie. V budoucnu Time Travel umožní forknout (klonovat) existující databázi do nové databáze nebo přepsat existující databázi.
- Databázi můžete obnovit k bodu v čase až 30 dní zpět (plán Workers Paid) nebo 7 dní zpět (plán Workers Free). Více informací najdete v Limity pro podrobnosti o limitech funkce Time Travel.