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
- 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.
- ERROR 1049 (Andmebaasi ei leitud)
- Põhjus: vale andmebaasi nimi või andmebaas puudub.
- Lahendus: loo andmebaas enne importi käsuga
CREATE DATABASE
.
- 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.