Drupal + cPanel + phpMyAdmin varmuuskopioiden palauttaminen

Posted on July 4, 2009

0


Ilman komeita palvelinsoftia tai rsyncattuja peilauksia Drupalista joutuu ottamaan varmuuskopioita käsin. Joskus manuaaliset varmuuskopiot tulevat tarpeeseen muuten hyvin varmistetulla palvelimella, esimerkiksi ennen isojen päivityksien asentamista Drupaliin. Varmuuskopion ottaminen Drupalista tarkoittaa sekä tiedostojärjestelmän että tietokannan huomiointia.

Tiedostojärjestelmä voidaan kopioida FTP:llä, mutta koska Drupalissa on runsaasti tiedostoja ja hakemistoja, komentorivin käyttäminen (ja vaikka käytön opettelu siinä samalla) on reilusti nopeampaa kuin FTP-session seuraaminen. Komentoriviltä tiedostot yhdistetään tar-paketiksi, joka tämän jälkeen pakataan gzipillä. Ennen tätä on kätevä ottaa tietokannasta varmuuskopio ja tallentaa se kansioon, joka liitetään tiedostojärjestelmän kanssa samaan tar-pakettiin. Näin tietokanta pysyy muun varmuuskopion mukana.

Käytännössä olen tullut ottaneeksi pienten päivitysten yhteydessä tietokannan varmuuskopion komentoriviltä, pakanneeksi kaikki tiedostot yhteen ja tallentamalla paketin aktiivisten verkkosivujen kansion juurihakemistoon, josta niitä ei tule vahingossa poistaneeksi tai liittäneeksi osaksi seuraavaa varmuuskopiota. Isojen päivitysten yhteydessä olen ottanut lisäksi tietokannan varmuuskopion phpMyAdminin kautta, koska Drupalin tietokantarakennetta joutuu monesti seuraamaan isojen päivitysten mukana ja seuraaminen ja muutosten tekeminen on helppoa graafisen käyttöliittymän kautta. Samalla kun phpMyAdmin on kerran auki, voi tietokannan tarvittaessa palauttaa tätä kautta ja käyttöoikeusongelma (josta lisää alempana) cPanelin kanssa voidaan ratkaista samalla kertaa.

mysqldump -u username -p mydatabase > tietokanta_dump.sql
#luo SQL-lauseet tietokannan nykytilaan palauttamisesta
tar -cvf kaikki_tiedostot.tar *
#kopioi kaikki hakemiston ja alihakemistojen tiedostot yhdeksi paketiksi
gzip kaikki_tiedostot.tar
#tiivistää paketin
mv kaikki_tiedostot.tar.gz ..
#siirtää varmuuskopion pois julkisesta kansiosta (ellet siirrä/kopioi sitä toiselle palvelimelle, kannattaa tehdä edes tämä jotta varmuuskopio pysyy tallessa)

phpMyAdminissa varmuuskopio tietokannasta otetaan Export-toiminnolla. Valitse tietokanta ja Export-välilehdellä tallenna tietokantaote tiedostoksi, jolloin sen voi ladata omalle työasemalle säilytystä tai edelleenlähettämistä varten.

Varmuuskopion palauttaminen

Drupalin ja moduulien päivityksien mukana tietokantaan lisätään usein uusia tauluja ja tiedostojärjestelmään ilmestyy uusia tiedostoja. Kun varmuuskopiot halutaan palauttaa, on syytä ensin poistaa vanhat tiedot kokonaan ja siirtää kopiot tilalle vasta sitten. Jos varmuuskopiot palauttaa uudemman tietokannan tai hakemistopuun päälle, päivityksistä voi jäädä ylimääräisiä tauluja tai tiedostoja joista voi olla haittaa myöhemmin.

Tiedostojärjestelmän palauttaminen on helppoa. Vanhat pois (tai talteen) ja varmuuskopio tilalle.

rm -rf *
mv ../kaikki_tiedostot.tar.gz .
tar -zxvf kaikki_tiedostot.tar.gz .

Tietokannan palauttaminen on cPanelin valvomassa ympäristössä hieman konstikkaampaa. Kirjaudu cPanelin MySQL-sivulta phpMyAdminiin ja jätä cPanelin MySQL-sivu auki. phpMyAdminin käyttäjällä ei ole oikeutta drop database -lauseeseen, eikä tästä syystä phpMyAdminin rename database -toimintokaan toimi. Tietokanta pitää siis poistaa cPanelin MySQL-sivulta. Kun tietokanta on poistettu, se on luotava tyhjänä (ja tietenkin saman nimisenä) uudelleen, jälleen cPanelin kautta. Tämän jälkeen tietokantaan liitetään sama käyttäjä kuin sillä aiemminkin oli, jonka jälkeen phpMyAdmin on taas toimintakykyinen. Tietokannan varmuuskopion voi palauttaa valitsemalla (tyhjän) tietokannan ja Import. Sivulla on lomake omalla työasemalla olevan kopion lähettämiseen.

Ongelma tietokannan palauttamisessa

phpMyAdminista otettu varmuuskopio ei kuitenkaan ole suoritettavissa cPanelin alaisuudessa toimivasta phpMyAdminista. Syynä on create database -lause, jonka phpMyAdmin lisää Export-toiminnossa tietokantaotteeseen. cPanelissa tätä lausetta ei saa tietokannan käyttäjätilien oikeuksiin. Lausetta ei tässä vaiheessa tarvitakaan, koska loimme aiemmin tyhjän tietokannan cPanelin kautta. Muokataan siis omalla työasemalla olevaa tietokantakopiota.

Jos tiedosto on gzipattu, se pitää ensin purkaa:

gunzip tietokanta_dump.sql.gz

Avaa tiedosto vimillä tai muulla tekstieditorilla ja poista tai kommentoi tiedoston alkupuolella oleva rivi

CREATE DATABASE `mydatabase` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `username`;

Tallenna tiedosto ja käytä phpMyAdminin Import-toimintoa uudelleen. Tiedoston lähettäminen ja tietokannan kirjoittaminen kestää hetken aikaa. Jos skandien tai euromerkkien ja muiden jenkkien mielestä epästandardien merkkien kanssa on ongelma, tietokannan palauttamista voi kokeilla määrittämällä Import-sivulta käytetyn lokaalin toiseksi.

Advertisements
Posted in: cPanel, Drupal