Bekap&Restore MySQL базе (или база) кроз командну линију

Кад причам о командној линији – причам о командој линији на Линуксu – како је на Виндовсу не знам нити ме занима али контам да је синтакса иста.

Уместо „-p“ у командама доле можете да укуцате само „-pLOZINKA“ па ће се бекап или повратак података (restore) радити одмах – али је препоручено да идете ипак само са „-p“ како лозинка за корисника не би остала у history-ju на Линуксu.

Бекап података је безбедан – сем наравно ако бекапом не прегазите неки други фајл (зато сам у свим примерима доле ставио да се бекап ради у фолдер /tmp) али кад радите повратак података отворите четворо очију а ако имате курје отворите и њих – јер ако имате функционалну базу података па грешком урадите повратак исте можете направити јуначки карамбол и остати без података.

Бекап базе података можете радити као root корисник или као специфични корисник који има привилегије над датом mysql базом и ради се ради командом…

# Бекап само једне базе података која се зове 'naziv_baze'
mysqldump -u DB_KORISNIK -p naziv_baze > /tmp/BEKAP_naziv_baze.sql

Кад се ради повратак података (restore) база ће бити креирана под корисником који је покренуо mysql (корисник иза свича -u) ако дати корисник има привилегије да креира базе – а ако нема, направите празну базу па над њом урадите повратак података. Као и са сваким повратак операцијама – опрезно!

# Опоравак података, односно импорт у базу која се зове 'naziv_baze2'
mysql -u DB_KORISNIK -p naziv_baze2 < /tmp/BEKAP_naziv_baze.sql

Бекап над више база података се може радити над базама које корисник види у својој шеми, односно над било којом базом ако бекап покреће root корисник у mysql-у. Бекап више база података од једном се може урадити командом:

# Бекап две базе 'naziv_baze1' и 'naziv_baze2' из једног позива
mysqldump -u DB_KORISNIK -p --databases naziv_baze1 naziv_baze2 > /tmp/BEKAP_baza1i2.sql

Бекап комплет свих база података се може урадити ако тај бекап покреће root корисник у mysql-у. Ако бекап покреће специфични корисник (као што је у примеру корисник DB_KORISNIK) направиће се бекап свих база над којим дати корисник има привилегије.

# Бекап свих база над којима корисник 'DB_KORISNIK' има привилегије
mysqldump -u DB_KORISNIK -p --all-databases > /tmp/BEKAP_svih_baza.sql

# BБекап свих база може да ради root корисника
mysqldump -u root -p --all-databases > /tmp/BEKAP_komplet_svih_baza.sql

Опоравак података само једне базе података из бекапа где сте бекаповали све или више база података се ради следећом командом…

# Restore тј импорт само једне базе из бекапа у којем је бекап више база
mysql -u DB_KORISNIK -p --one-database naziv_baze1 < /tmp/BEKAP_svih_baza.sql

# Ако не знате које све базе имате у бекапу, то можете проверити командом
grep -i "Current database:" BEKAP_svih_baza.sql