Återställ databas

Skapad
2018-11-08
Uppdaterad
2018-11-09
Print lix info about this node
Lix: 36

Skapa ett LäsbarhetsIndeX från text baserat på www.lix.se

Index36
Antal meningar:39
Antal ord603
Top tio ord
(> fyra tecken)
skall, drupal, databasen, återställa, detta, webbplatsen, operativsystemet, mysql, inte, användare
    < 30 : Mycket lättläst, barnböcker
 30 - 40 : Lättläst, skönlitteratur, populärtidningar
 40 - 50 : Medelsvår, normal tidningstext
 50 - 60 : Svår, normalt värde för officiella texter
 60 -    : Mycket svår, byråkratsvenska

Varför vill man återställa databasen?

Till exempel så har man en (eller flera) funktioner som man vill låta användarna prova, det kan vara aktivering, deaktivering eller konfiguration av modul(er), skapandet av innehåll, redigering av innehåll eller något annat. Antag då att dessa ändringar behöver nollställas för att alla användare skall ha samma utgångsläge inför demonstrationen.

Vad kan man göra?

Vi nämner tre sätt att göra återställningen på och beskriver det sistnämnda i detalj. Det första sättet är manuellt - ta bort alla ändringar som föregående användare har gjort, det andra är att man installerar en modul som låter Drupal ta hand om återställningen av webbplatsen och det tredje (och sista) alternativet är låta operativsystemet göra jobbet.

Tre sätt att återställa - vilket är bäst?

1. Manuell återställning

Detta är det mest arbetsamma, tidskrävande och mest utsatta metod för att det skall bli fel. Det första man bör göra är att sätta webbplatsen i "offline mode", det vill säga att inget visas för användare under tiden man jobbar med webbplatsen. Det andra är att man bör leta rätt på alla (läs alla) ändringar som användarna har gjort och återställa dom - på en stor webbplats kan detta vara ett jättejobb. Därefter sätta på webbplatsen så att användare kan se innehållet.

2. Drupal återställer

Detta kan fungera om modulen stödjer den version av PHP och Drupal som man kör.

3. Operativsystemet återställer

Om vi låter operativsystemet ta hand om återställningen av att databasen så är vi oberoende om vilken version av PHP, MySQL och Drupal med dess beroenden vi har installerat.

Vilket sätt som är det bästa är upp till var och en att avgöra, vi har valt alternativ nummer tre (3).

Operativsystemet återställer

Alternativet som vi har valt är att låta operativsystemet återställa databasen, detta för att undvika eventuella beroenden från Drupal vad det gäller versioner PHP och databasserver.

Krav för lyckat resultat

Kravet för att detta skall fungera på ett tillfredsställande sätt är att vi har åtkomst till kommandotolken, i det här fallet så är det BASH, programmen mysql och mysqldump samt att den genererade SQL-filen dels är utanför Drupals filsystem och att användaren har åtkomst till filen.

Värt att notera är att vi pratar om användaren som är inloggad i kommandotolken och äger Drupal's filer - vi pratar inte om databasanvändaren eller administratorn i Drupal.

Tillvägagångssätt

  • Specifikt för Drupal

    I mappen där det tema som är aktivt för tillfället skall det finnas två (2) filer - maintenance-page.tpl.php
    maintenance-page--offline.tpl.php

    Den första filen är till för att visa en sida då webbplatsen är ur drift och man har tillgång till databasen.

    Den andra är till för att visa en statisk sida då webbplatsens databas inte är tillgänglig oberoende om webbplatsen är i drift eller inte, denna sida skall ändras så att man får ett meddelande om vad som pågår.

    Detta för att undvika felmeddelande som PHP kan spotta ur sig (om man av misstag inte har stäng av dom).

  • För att återställa databasen måste vi ha något att återställa till - lämpligt är återställa från en ögonblicksbild av databasen då allt fungerade som vi ville.

    Eftersom det är operativsystem som utför återställningen är det olämpligt ur säkerhetssynpunkt (historik, loggfiler...) att vi använder oss av användarnam och lösenord i klartext då vi gör en kopia av databasen.

    Man bör nu ha kommandotolken öppen och aktiv och i användarens hemmakatalog (den användare som Drupal körs under) skapar vi en textfil och döper den till .my.cnf och anger följande innehåll:
    [client]
    user=mitt-användarnamn
    password=mitt-användarnamns-lösenord

    Resultatet är att varje gång vi använder oss av MySQL's program (t.ex. mysql, mysqldump) så behöver vi inte ange användarnamn och lösenord vilket är användarvänligt och praktiskt ur säkerhetssynpunkt.

  • Då gör vi en kopia av databasen:cd /sökväg/till/var/jag/vill/spara/filen
    mysqldump databasens-namn > databasens-namn_dagens-datum-klockslag.sql
  • Nu är det dags att tala om för operativsystemet vad det skall göra genom att redigera listan över uppgifter som cron demonen skall utföra : crontab -e Här skall vi ange tiden/intervallet och programmet som skall köras, på en tom/ny rad skriv in: 0 * * * * /bin/bash -c "usr/bin/mysql -e 'drop database databasens-namn; create database databasens-namn' && /usr/bin/mysql databasens-namn < /sökväg/till/var/jag/vill/spara/filen/databasens-namn_dagens-datum-klockslag.sql"
  • Spara och avsluta.
    Klart.