MySQL andmebaasi varundamine ja taastamine: mysqldump eksport ja import

MySQL andmebaasi haldamine: mysqldump ekspordi ja impordi kasutamine

1. Sissejuhatus

MySQL andmebaase kasutatakse laialdaselt veebirakendustes ja andmebaasihaldussüsteemides. Andmebaasi korrektne haldamine ja regulaarsete varukoopiate tegemine on äärmiselt oluline, et olla valmis ootamatute rikete või andmekao jaoks. Eriti mysqldump käsk on üks peamisi tööriistu MySQL andmebaaside eksportimiseks ja hilisemaks importimiseks.

Käesolevas artiklis selgitame üksikasjalikult, kuidas teha MySQL andmebaasi varukoopia (eksport) ja kuidas taastada (importida) andmeid varukoopiafailist. See juhend on mõeldud andmebaasi administraatoritele ja inseneridele ning katab mysqldump abil tõhusa varundamise ja importimise meetodid ning käsitleb ka sagedasemaid vigu ja jõudluse optimeerimist.

2. mysqldump käsu põhialused

mysqldump on võimas käsurea tööriist MySQL andmebaaside varundamiseks. Selle abil saab eksportida andmebaasi tabelite struktuuri ja andmeid tekstipõhisesse faili. Allpool selgitame põhikasutust ja sagedamini kasutatavaid valikuid.

2.1 mysqldumpi põhikasutus

Põhikäsu vorm on järgmine:

mysqldump -u [kasutajanimi] -p [andmebaasi_nimi] > [väljundfail.sql]

Selle käsu käivitamisel eksporditakse määratud andmebaasi kõik tabelid (struktuur ja andmed) määratud faili.

Näide:

mysqldump -u root -p mydatabase > backup.sql

-u valikuga määratakse MySQL kasutajanimi, -p puhul sisestatakse parool. mydatabase on varundatav andmebaas ja backup.sql on väljundfail.

2.2 Olulisemad valikud

  • –single-transaction: võimaldab eksportida ilma tabelite lukustamiseta. Kasulik InnoDB tabelitega, tagades andmete järjepidevuse.
  • –skip-lock-tables: ei lukusta eksportimise ajal tabeleid, võimaldades andmebaasi samaaegset kasutamist.
  • –no-data: ekspordib ainult tabeli struktuuri, ilma tegelike andmeteta. Kasulik skeemi varundamiseks.

2.3 Ekspordifaili struktuur

mysqldumpi väljundfail sisaldab SQL-käske järgmises vormis:

DROP TABLE IF EXISTS `table_name`;
CREATE TABLE `table_name` (
  `id` int(11) NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `table_name` (`id`, `name`) VALUES (1, 'John'), (2, 'Doe');

Seda faili kasutatakse taastamisel: esmalt kustutatakse tabel, seejärel luuakse uuesti ja sisestatakse andmed.

3. Andmete importimine mysqldumpiga

Järgmiseks selgitame, kuidas importida eksporditud andmeid andmebaasi. Importimiseks kasutatakse peamiselt mysql käsku.

3.1 Põhiimport

Importimiseks kasutatakse järgmist käsku:

mysql -u [kasutajanimi] -p [andmebaasi_nimi] < [sisendfail.sql]

Näide:

mysql -u root -p mydatabase < backup.sql

See käsk impordib backup.sql faili määratud andmebaasi mydatabase. Eduka impordi korral käivitatakse failis olevad CREATE TABLE ja INSERT käsud.

3.2 Tähtsad tähelepanekud

  • Andmebaasi olemasolu: kui sihtandmebaasi pole, tekib viga. Andmebaas tuleb eelnevalt luua:
CREATE DATABASE mydatabase;
  • Suuremahulised andmed: massiivse impordi korral võib jõudlus langeda. Soovitatav on kasutada indeksite ajutist keelamist või partiitöötlust.

4. Vigade käsitlemine ja tõrkeotsing

Importimise ajal esineb sageli vigu, kuid neid saab lahendada. Selles jaotises käsitleme levinumaid vigu, nende põhjuseid ja lahendusi.

4.1 Levinud vead

  1. ERROR 1064 (Süntaksiviga)
  • Põhjus: MySQL versioonide erinevused või valed SQL-käsud.
  • Lahendus: kontrolli veateates osutatud kohta ja paranda. Kasuta --compatible valikuid versioonidevaheliseks ühilduvuseks.
  1. ERROR 1049 (Andmebaasi ei leitud)
  • Põhjus: vale andmebaasi nimi või andmebaas puudub.
  • Lahendus: loo andmebaas enne importi käsuga CREATE DATABASE.
  1. ERROR 1146 (Tabel puudub)
  • Põhjus: impordifail viitab tabelile, mida ei loodud.
  • Lahendus: kontrolli CREATE TABLE käske failis ja loo vajadusel käsitsi.

4.2 Parimad tavad vigade vältimiseks

  • Kasutada sama keskkonda: eksport ja import peaks toimuma võimalikult samas MySQL versioonis.
  • Varukoopia testimine: enne importi testi fail sarnases keskkonnas.

4.3 Tõrkeotsing

Kasuta veateateid ja logisid vea allika leidmiseks. Kontrolli käsitsi impordifaili ja vajadusel muuda ekspordi valikuid.

5. Impordi jõudluse optimeerimine

Suurte andmehulkade import võib jõudlust vähendada. Siin on mõned optimeerimisvõtted.

5.1 Indeksite keelamine ja uuesti loomine

Indeksid aeglustavad importi. Enne importi saab need keelata ja pärast uuesti lubada:

ALTER TABLE tabelinimi DISABLE KEYS;
ALTER TABLE tabelinimi ENABLE KEYS;

5.2 Partiitöötlus

Jagades andmed väiksemateks osadeks (nt 100k rida korraga), saab kiirust parandada ja koormust vähendada.

5.3 Andmete tihendamine

Kasutades gzip tööriista saab säästa nii aega kui ka kettaruumi:

gunzip < backup.sql.gz | mysql -u root -p mydatabase

6. Kokkuvõte

MySQL andmebaaside haldamisel on mysqldump ekspordi ja impordi kasutamine väga tõhus meetod. Käesolevas juhendis selgitasime selle põhikasutust, vigade vältimist ning jõudluse parandamist.

Eriti suurte andmebaaside puhul on oluline indeksite haldamine ja partiitöötlus. Regulaarne varundamine ja test-importimine aitab vältida ootamatuid andmekadusid.

Nende parimate praktikate järgimisel saab andmebaasi importimist läbi viia sujuvalt ja töökindlalt.