Hitri začetek: prvi izvoz in njegov načrt uvoza
Najkrajša pot od »vtičnik je nameščen« do »popoln izvoz podatkov DevOps je shranjen v datoteki, načrt njihovega vračanja pa je prebran«. Trije koraki, približno deset minut. Ta stran je namenjena razvijalcem in tistim, ki sistem upravljajo.
Razlog, da to storite zdaj in ne šele v sili: s tem »varnostne kopije imamo« postane »obnovitve imamo«.
Predpogoji
wkdostorage,wkcoreinwkstorageso nameščeni in vklopljeni.- PHP 8.2 ali novejši z gonilnikom PDO za SQLite.
- Podatkovni imenik wikija je zapisljiv.
- Mesto, kjer lahko izvedete PHP v kontekstu wikija – lasten vtičnik ali vzdrževalna skripta, ki je naložila
inc/init.php.
Korak 1: prevzemite storitev
$core = plugin_load('helper', 'wkcore'); $storage = (is_object($core) && method_exists($core, 'get')) ? $core->get('dwdo.storage') : null; if ($storage === null) { return; // shrambe ni — zmanjšajte obseg, ne prekinjajte }
Razredov shrambe ne gradite sami. Storitev je lena tovarna, in prav to prepreči, da bi klic, ki se podatkov ne dotakne, sploh odprl podatkovno zbirko.
Korak 2: zapišite izvoz
$export = $core->get('dwdo.export'); $pot = $export->exporter()->exportToFile('/pot/do/dwdo-kopija.jsonl');
Rezultat je JSONL: en zapis na vrstico. To ni stvar okusa. Datoteko je mogoče brati z običajnimi vrstičnimi orodji, deliti, dopolnjevati in primerjati vrstico za vrstico – skrajšana datoteka pa izgubi svoj zadnji zapis, namesto da bi postala neberljiva.
Korak 3: preberite načrt uvoza – brez uvoza
$importer = $export->importer(); $plan = $importer->plan($jsonl); // poroča, ne spremeni ničesar // preglejte $plan
plan() obstaja, ker je uvoz potreben prav takrat, ko presenečenja najmanj prenesete.
apply() uvoz dejansko izvede in privzeto dela z $replace = true – torej zamenja. Pokličite ga šele, ko ste načrt prebrali in je to vaš namen.
Preverjanje rezultata
- Datoteka je na navedeni poti in vsebuje na vrstico en popoln objekt JSON.
wc -ls tem šteje zapise. - Načrt za isto datoteko nad isto delujočo namestitvijo ne opisuje nobenih presenečenj – ne bi smel napovedovati ničesar, česar ne pričakujete. Če odstopa, ste našli vprašanje, preden je postalo drago.
Naslednji korak
- wkstorage – plast pod njim: migracije, pripravljeni stavki, transakcije.
- wkdocore – model projekta, katerega podatki so shranjeni tukaj.
- wkdostorage – stran paketa: storitve, tipizirani modeli, repozitoriji in oblika izvoza.