Merri: Tietokannan palauttaminen

Suomenkielisiä oppaita
Avatar
Admin
Aktiivinen jäsen
Aktiivinen jäsen
Viestit:721
Liittynyt:13 Marras 2005, 15:45
Merri: Tietokannan palauttaminen

Viesti Kirjoittaja Admin » 10 Maalis 2007, 03:03

Ison tietokannan palauttaminen

Kun foorumin tietokanta saavuttaa tietyn koon, tulee sen palauttamisesta ja/tai siirtymisestä uudelle palvelimelle aavistuksen vaikeampaa, eikä työstäminen onnistu phpMyAdminin kauttakaan, vaikka tietokannan saisi sen avulla talteen. Tällöin tietokannan palauttamiselle jää kaksi vaihtoehtoa: mysql:n käyttö shellin kautta tai BigDump-nimisen ohjelman käyttö.

Molemmissa esimerkeissä vaaditaan, että tietokanta kopioidaan ensin FTP:llä palvelimelle. Paras sijoituspaikka on FTP-ohjelman tarjoamassa juurihakemistossa, eli tietokantaa ei tietoturvan takia kannata laittaa public_html tai www-hakemistoon tai niiden alaisiin hakemistoihin.

Kummatkin neuvot soveltuvat minkä tahansa tietokannan palauttamiseen, ei vain phpBB:n tietokannan!


Shell-yhteys

Shelliin otetaan yhteyttä käyttäen yleensä SSH-kykyistä pääteohjelmaa, Windowsissa yleensä Putty. Tunnukset ovat yleensä samat kuin webhotellipalveluntarjoajan antamat tunnukset FTP:lle, mutta asia kannattaa tarkastaa vielä erikseen omasta tunnuspaperistaan (joka kannattaa ehdottomasti tulostaa talteen ja lähetetty sähköpostikin kannattaa pitää tallessa).

Puttyyn tai pääteohjelmaan kirjoitetaan palveluntarjoajan palvelimen hostname, esimerkiksi muotoa palvelin.palveluntarjoaja.fi ja painetaan Open tai Connect. Tämän jälkeen joudut kirjoittamaan tunnuksen ja salasanan, onnistuneen kirjautumisen jälkeen pääsetkin sisälle. Nyt voit käyttää palvelinta aivan kuin se olisi oma koneesi, joskin olet rajoittunut pelkkään konsoliin. Voit käyttää UNIX-tyylisiä komentoja, esimerkiksi hakemistolistauksen saa tehtyä kirjoittamalla ls. Koska tietokannan pitäisi olla siinä hakemistossa jossa jo olet (eli sen pitäisi näkyä hakemistolistauksessa), tarvitsee vain tehdä kutsu, jolla tietokanta palautetaan. Tämä on muotoa:

mysql -u tietokannan_käyttäjä -p salasana tietokannan_nimi < phpbbtaulut.sql

Kohdat tietokannan_käyttäjä, salasana, tietokannan_nimi ja phpbbtaulut.sql tulee tietysti korvata omaa tilannettasi koskevilla tiedoilla. Huomaathan että palauttamisessa voi kestää tovi tietokannan koosta riippuen, eikä pääteohjelma tänä aikana todennäköisesti vastaa mihinkään näppäilyihin.


Huom! Jos olet muuttanut tietokantasi ja/tai foorumisi UTF-8:ksi, joudut tässä vaiheessa määrittämään merkistön, jotta tietokantasi palautuisi oikeassa muodossa. Tällöin kutsu on muotoa:

mysql -u tietokannan_käyttäjä -p salasana --default-character-set=utf8 tietokannan_nimi < phpbbtaulut.sql


BigDump

BigDump on PHP-skripti, joka palauttaa tietokantatiedostoa selaimen kautta kutsuttuna vähän kerrallaan. Se on siis siten hieman helpompi ensikertalaiselle ymmärtää kuin shell, mutta vaatii kuitenkin myös hieman skriptin säätämistä ennen käyttöönottoa. BigDumpin ZIP-tiedosto sisältää vain yhden tiedoston, joka sijoitetaan FTP:llä sellaiseen hakemistoon, johon voi selaimella ottaa yhteyttä. Tiedoston alussa on kohtia, joita tarvitsee muokata:

Koodi: Valitse kaikki

// Database configuration

$db_server   = 'localhost';
$db_name     = '';
$db_username = '';
$db_password = '';

// Other Settings

$filename        = '';     // Specify the dump filename to suppress the file selection dialog
$linespersession = 3000;   // Lines to be executed per one import session
$delaypersession = 0;      // You can specify a sleep time in milliseconds after each session
                           // Works only if JavaScript is activated. Use to reduce server overrun

// Allowed comment delimiters: lines starting with these strings will be dropped by BigDump

$comment[]='#';           // Standard comment lines are dropped by default
$comment[]='-- ';
// $comment[]='---';      // Uncomment this line if using proprietary dump created by outdated mysqldump
// $comment[]='/*!';         // Or add your own string to leave out other proprietary things


// Connection character set should be the same as the dump file character set (utf8, latin1, cp1251, koi8r etc.)
// See http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html for the full list

$db_connection_charset = '';

Merkittävimmät kohdat ovat tietokannan tiedot, sekä tiedostonimi. Myös merkistökoodauksen voi asettaa, mikäli tietokanta on muussa muodossa kuin iso-8859-1:nä (eli latin1) tai jos palvelimen oletusmerkistökoodaus poikkeaa foorumin käyttämästä.

Mikäli sijoitat bigdumpin public_html tai www-hakemistoon, ja olet sijoittanut tietokannan turvallisesti tätä ylempään hakemistoon, tulee tiedostokohtaan jotakin tyyliin:

Koodi: Valitse kaikki

$filename        = '../tietokanta.sql';

Lopuksi kutsut selaimesta BigDumpia tyyliin http://www.omadomain.fi/bigdump.php - palautus ei ala välittömästi, vaan saat ensin varmistusruudun.

MUISTA POISTAA BIGDUMP VÄLITTÖMÄSTI ONNISTUNEEN PALAUTTAMISEN JÄLKEEN!

BigDumpia voi kutsua vapaasti mistä tahansa selaimesta, joten sen poistaminen palvelimelta on hyvin aiheellista.


***************

Jätetään hetkeksi auki, jos joku haluaa kommentoida...

tomppa
Oppii uutta
Oppii uutta
Viestit:22
Liittynyt:04 Helmi 2007, 00:37
Paikkakunta:Oulu
Viesti:

Viesti Kirjoittaja tomppa » 10 Maalis 2007, 03:10

Isonkin tietokantavarmuuskopion palauttaminen onnistuu myös phpmyadminin kautta, kunhan sql-tiedoston pilkkoo ensin pienempiin osiin. Kätevä ja ilmainen työkalu tähän on http://www.freebyte.com/hjsplit/

Avatar
Merri
MODaaja
MODaaja
Viestit:155
Liittynyt:21 Huhti 2006, 23:32
Paikkakunta:Riihimäki
Viesti:

Viesti Kirjoittaja Merri » 10 Maalis 2007, 05:05

tomppa: onnistuu, mutta on kuitenkin varsin tuskaista. Joutuisin tuolla työkalulla pilkkomaan tietokantani ehkä johonkin sataan osaan, tosin myönnettäköön että foorumi on varsin iso suomalaisella mittapuulla :) Pilkkominen toiminee siedettävällä tasolla jos tietokannan koko on alle 50 Mt.

tomppa
Oppii uutta
Oppii uutta
Viestit:22
Liittynyt:04 Helmi 2007, 00:37
Paikkakunta:Oulu
Viesti:

Viesti Kirjoittaja tomppa » 10 Maalis 2007, 17:58

Juu, 20Mt tiedostot phpmyadmin vielä nielee kakistelematta.

Avatar
Merri
MODaaja
MODaaja
Viestit:155
Liittynyt:21 Huhti 2006, 23:32
Paikkakunta:Riihimäki
Viesti:

Viesti Kirjoittaja Merri » 10 Maalis 2007, 20:54

Koko riippuu enemmän palvelimen asetuksista kuin phpMyAdminista :) Minulla oli yhteen vaiheeseen palveluntarjoaja, joka rajoitti tiedostokoon kolmeen megatavuun (PHP:ssa). Toinen vaikuttava tekijä on timeout, eli jos prosessoinnissa kestää tietyn aikarajan ylitse, niin sitten homma katkeaa jos tehtävää on liian paljon, vaikka tiedosto menisi kokonaan perille.

tomppa
Oppii uutta
Oppii uutta
Viestit:22
Liittynyt:04 Helmi 2007, 00:37
Paikkakunta:Oulu
Viesti:

Viesti Kirjoittaja tomppa » 11 Maalis 2007, 00:55

Juu, defaulttina arvot tupaavat olemaan yleensä +-50Mt ja 30s, ainakin niissä hosteissa missä itselläni on ollut sivuja (ja niitä on paljon). En ole koskaan huomannut aikarajalla olevan merkitystä samanlaista merkitystä kuin silloin kuin palvelimelta päin ladataan isoa tiedostoa phpmyadminin kautta, jolloin scripti tulostaa virheilmon sql tiedostoon.

phpmyadminissahan on valinta "Osittainen tuonti".
Salli tuonnin keskeyttäminen, mikäli skripti huomaa ylittävänsä aikarajoituksen.
Lataushan jatkuu tästä sitten siitä mihin se keskeytyikin.

Anubis
Aktiivinen jäsen
Aktiivinen jäsen
Viestit:865
Liittynyt:15 Elo 2006, 11:01

Re: Merri: Tietokannan palauttaminen

Viesti Kirjoittaja Anubis » 11 Maalis 2007, 14:41

Admin kirjoitti:

Koodi: Valitse kaikki

mysql -u tietokannan_käyttäjä -p salasana tietokannan_nimi < phpbbtaulut.sql
mysql -u tietokannan_käyttäjä -p salasana --default-character-set=utf8 tietokannan_nimi < phpbbtaulut.sql
Vinkkinä sellainen, ettei kannata syöttää salasanaa komentoon vaan jättää se tyhjäksi; jolloinka mysql kysyy salasanaa. Tämä sen vuoksi, että iso tiedosto palautuu kauan, ja se tarkoittaa myös sitä että se salasana näkyy w komennolla tai ps axulla jokaiselle serverin käyttäjälle.

Järkevää olisi tehdä .my.cnf tiedosto, jonnekka laittaa mysqlin salikset.

Avatar
Lurttinen
phpBB nub
phpBB nub
Viestit:4787
Liittynyt:13 Marras 2005, 18:41
Paikkakunta:Tampere
Viesti:

Viesti Kirjoittaja Lurttinen » 11 Maalis 2007, 18:29

tomppa kirjoitti: phpmyadminissahan on valinta "Osittainen tuonti".
Salli tuonnin keskeyttäminen, mikäli skripti huomaa ylittävänsä aikarajoituksen.
Lataushan jatkuu tästä sitten siitä mihin se keskeytyikin.
Katotaan, kuinka puree. Laitoin 1.8 gigan dumpin tuota kautta menemään.
Ainakin vielä raksuttaa ja saattaa raksuttaa aika kauankin. :P

Onkos toi joku uusikin ominaisuus, kun en mielestääni ole moiseen ennen phpmyadminissa törmännyt?

Avatar
Lurttinen
phpBB nub
phpBB nub
Viestit:4787
Liittynyt:13 Marras 2005, 18:41
Paikkakunta:Tampere
Viesti:

Viesti Kirjoittaja Lurttinen » 11 Maalis 2007, 18:49

Eip onnistunu...
Virhe

Yritit todennäköisesti lähettää palvelimelle liian suurta tiedostoa. Katso lisätietoja dokumentaatiosta tämän rajoituksen muuttamiseksi.

Avatar
Merri
MODaaja
MODaaja
Viestit:155
Liittynyt:21 Huhti 2006, 23:32
Paikkakunta:Riihimäki
Viesti:

Viesti Kirjoittaja Merri » 12 Maalis 2007, 02:23

Voidaan lähteä siitä oletuksesta, että jos sitä ei ollut viisi vuotta sitten, niin sitten se on todella uusi ominaisuus :roll: Niin tai näin, nämä toiset palautustavat toimivat phpMyAdminia paremmin, joten teen kyllä palautukset vastaisuudessa muuta kuin phpMyAdminia käyttäen. Dumppauksetkin itseasiassa saa varsin kätevästi mysqldumpilla shellin kautta. Voi vielä heittää palvelimen pakkaamaan tiedoston, niin ei mene tiedoston kopioinnissa omalle koneelle niin kauaa. Jostain syystä phpMyAdminin pakkaustoiminto ei ole ikinä toiminut minulla.


lurttinen: huomasinpa outouden tässä foorumin suomennoksessa: "Aiheen tarkistus". Parempi/kuvaavampi teksti lienee "Aiheen tarkastelu"?

Avatar
Esashi
Aktiivinen jäsen
Aktiivinen jäsen
Viestit:376
Liittynyt:19 Tammi 2006, 10:22
Viesti:

Viesti Kirjoittaja Esashi » 13 Maalis 2007, 06:41

Kiitos Adminille hyvästä ohjeesta.

Saanen lisätä myös sen että on olemassa 3 osapuolen softia, joilla se palautus onnistuu hyvin.

http://www.heidisql.com/ on ihan katsastamisen arvoinen paikka. Toinen ohjelma on myös se hyväksi todettu MysqlFront.
Esashi

Maan Äiti, anna minulle
ymmärrystä heidän suhteen, jotka eivät ymmärrä minua,
kärsivällisyyttä heitä kohtaan, jotka eivät pidä minusta,
viisautta, osatakseni kätkeä heidän ruumiit,
jotka ovat käyneet hermoilleni

Avatar
Esashi
Aktiivinen jäsen
Aktiivinen jäsen
Viestit:376
Liittynyt:19 Tammi 2006, 10:22
Viesti:

Viesti Kirjoittaja Esashi » 13 Maalis 2007, 06:45

Merri kirjoitti:Voidaan lähteä siitä oletuksesta, että jos sitä ei ollut viisi vuotta sitten, niin sitten se on todella uusi ominaisuus :roll: Niin tai näin, nämä toiset palautustavat toimivat phpMyAdminia paremmin, joten teen kyllä palautukset vastaisuudessa muuta kuin phpMyAdminia käyttäen.
Ugh. Varsinkin monen sadan käyttäjän foorumiella kuten esim. minulla on niin tuo phpMyAdmin on huomattu käyttökelvottomaksi backupin ottamisen suhteen. Käytänössä liian hanakalaa siis. Miksiköhän se ei hanskaa esim. isoja tietokantoja kerralla kuten vaikka kooltaan joku 350M tietokanta? :shock:
Esashi

Maan Äiti, anna minulle
ymmärrystä heidän suhteen, jotka eivät ymmärrä minua,
kärsivällisyyttä heitä kohtaan, jotka eivät pidä minusta,
viisautta, osatakseni kätkeä heidän ruumiit,
jotka ovat käyneet hermoilleni

Avatar
Admin
Aktiivinen jäsen
Aktiivinen jäsen
Viestit:721
Liittynyt:13 Marras 2005, 15:45

Viesti Kirjoittaja Admin » 13 Maalis 2007, 08:18

Esashi kirjoitti:Kiitos Adminille hyvästä ohjeesta.
Kiitos kiittämisestä, mutta kyllä Merriä tästä on kiittäminen :wink:

Pidetään yleismaailmallinen palautuskeskustelu pois tästä aiheesta ja aloitetaan siitä mieluumin uusi aihe, ettei käy niin että tämä opas on kohta 12 sivua pitkä, sekava jutustelu...

mrl586
Aktiivinen jäsen
Aktiivinen jäsen
Viestit:2879
Liittynyt:31 Maalis 2006, 17:59
Paikkakunta:Tampere
Viesti:

Viesti Kirjoittaja mrl586 » 13 Maalis 2007, 18:23

Tältä sivulta löytyy PHP MySQL Backup V 2.2 -ohjelma, joka tekee saman kuin edellä mainittu bigdump, mutta sillä voi tehdä myös varmuuskopioita tietokannasta.

tomppa
Oppii uutta
Oppii uutta
Viestit:22
Liittynyt:04 Helmi 2007, 00:37
Paikkakunta:Oulu
Viesti:

Viesti Kirjoittaja tomppa » 16 Maalis 2007, 19:58

Lurttinen kirjoitti:Eip onnistunu...
Virhe

Yritit todennäköisesti lähettää palvelimelle liian suurta tiedostoa. Katso lisätietoja dokumentaatiosta tämän rajoituksen muuttamiseksi.
Juu, tuskin se 1,8 gigaa nielee. 50-100 megaa on itsellä kyllä mennyt mukisematta yhtenä tiedostona, vaikka lataus olisi välillä keskeytynytkin. Mutta kätevin on tosiaan isot tiedostot ajaa shellin kautta.

shellistä varmuuskopion ottaminen on varsin helppoa ja itse teen sen näin:

Koodi: Valitse kaikki

mysqldump -u käyttäjätunnus -p tietokanta --skip-opt --insert-ignore -h mysqlhosti > varmuuskopio.sql
Salasanaa tuohon on turha syöttää kun se sitä heti seuraavaksi kysyy. Ilman insert-ignorea palauttaminen yleensä antaa virheitä varsinkin search tableissa, joita on melko vittumainen käsipelillä korjata.

Viestiketju Lukittu

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 43 vierailijaa