Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Greške
  • Izbacujemo MySQL bazu podataka i izvozimo podatke u konzolu. Vraćanje dumpa napravljenog od strane mysqldump

Izbacujemo MySQL bazu podataka i izvozimo podatke u konzolu. Vraćanje dumpa napravljenog od strane mysqldump

Dump i vrati bazu podataka MySQL podaci Prilično je jednostavno i zgodno raditi na daljinu preko SSH-a ili direktno preko serverske konzole. Daljinski, to se može učiniti pomoću programa Putty/Kitty. Također možete izvesti primjere ispod na Windows-u pokretanjem komandne linije ‘ cmd‘. Ispod su primjeri kako napraviti dumpove MySQL baze podataka, a zatim ih vratiti ako je potrebno, na primjer za vašu web stranicu, online trgovinu ili neki drugi projekt.

Kreiranje dumpa MySQL baze podataka

Da biste izvršili ove komande, povežite se na daljinu sa svojim serverom preko SSH-a koristeći jedan od gore navedenih programa. Nakon povezivanja i autorizacije na server/hosting, možete unijeti naredbe ispod.

# Napravite sigurnosnu kopiju jedne baze podataka u datoteku dump_file.sql mysqldump -uroot -p vaša_base > dump_file.sql # Uključeno windows dump Najbolje je kreirati malo drugačiju naredbu koja sprječava # slučajno prepisivanje dump linija zbog konverzije znakova novog reda "\r\n" u "\n" mysqldump -uroot -p your_base -r dump_file_utf8.sql # Ako vam je potrebna sigurnosna kopija samo pojedinačnih tabela, a ne cijele baze podataka # (navedite imena tablica odvojene razmakom nakon imena baze podataka) mysqldump -uroot -p your_base TABLE1 TABLE2 TABLE3 > dump_file.sql # Ako trebate napraviti sigurnosnu kopiju samo baze podataka struktura bez samih podataka mysqldump -uroot -p -- nema podataka your_base > dump_file.sql # Backup svih baza podataka u fajl current_date.gz mysqldump -uroot -p --all_databases | gzip -c > "datum "+%Y-%m-%d"".gz # Sigurnosna kopija, gdje se kreira poseban INSERT za svaki unos # i sa eksplicitna indikacija kodiranje baze podataka UTF-8 mysqldump -uroot -p --default-character-set=utf8 your_base --extended-insert=FALSE | gzip -c > "datum "+%Y-%m-%d"".gz

# Napravite sigurnosnu kopiju jedne baze podataka na dump_file.sql

mysqldump - uroot - p vaša_baza > dump_file . sql

# Na Windows-u je najbolje napraviti dump sa malo drugačijom komandom koja sprečava

# nasumično prepisivanje dump linija zbog konverzije znakova novog reda "\r\n" u "\n"

mysqldump - uroot - p vaša_baza - r dump_file_utf8 . sql

# Ako vam je potrebna rezervna kopija samo pojedinačnih tabela, a ne cijele baze podataka

# (navesti nazive tablica odvojene razmakom nakon naziva baze podataka)

mysqldump - uroot - p your_base TABLE1 TABLE2 TABLE3 > dump_file . sql

# Ako trebate napraviti sigurnosnu kopiju samo strukture baze podataka bez samih podataka

mysqldump - uroot - p -- no - data your_base > dump_file . sql

# Napravite sigurnosnu kopiju svih baza podataka u datoteku current_date.gz

mysqldump - uroot - p -- sve_baze podataka | gzip - c > "datum "+%Y-%m-%d"" . gz

# Sigurnosna kopija, gdje se kreira poseban INSERT za svaki unos

# i eksplicitno specificiranje baze podataka kodiranje UTF-8

mysqldump - uroot - p -- default - character - set = utf8 your_base -- extended - insert = FALSE | gzip - c > "datum "+%Y-%m-%d"" . gz

U gornjem primjeru, uslužni program se koristi za kreiranje sigurnosne kopije mysqldump, koji je uključen u mysql. Slijede parametri za kreiranje sigurnosne kopije baze podataka, koje ćemo detaljnije ispitati:

  • -u– parametar specificira prijavu koja će se koristiti za povezivanje s bazom podataka. U primjeru koristimo root prijavu, koja mora biti navedena u ovom parametru bez razmaka! Kao rezultat, izgleda kao -uroot
  • -p– parametar označava da morate unijeti lozinku za navedenu prijavu. Ostavili smo ga praznim, zbog čega će biti potrebno unijeti lozinku nakon pritiska na “Enter” prilikom izvršavanja naredbe. Međutim, možete navesti lozinku upravo ovdje, kao u parametru za prijavu, bez razmaka nakon -p, međutim, ovaj metod nije siguran, jer konzola sprema vaše komande u log datoteku i ako je ne brišete redovno, napadač može da ga vidi.
  • vaša_baza– umjesto ove linije u primjeru, trebate navesti pravo ime Vaša baza podataka za koju kreirate rezervnu kopiju.
  • > – operator koji pokazuje smjer djelovanja, tj. kao da označava da ćete pisati iz baze podataka u datoteku.
  • dump_file.sql– ovo je naziv vaše .slq datoteke u koju trebate sačuvati svoju bazu podataka. Označava se razmakom iza operatora '>'. Možete odrediti bilo koje drugo ime. Na primjer, tako da u ime sistem automatski ubacuje trenutno vrijeme, samo navedite red kao:

    "datum "+%Y-%m-%d""

    "datum "+%Y-%m-%d""


    iza ovog retka u primjeru je naznačena ekstenzija datoteke ' .gz‘. Kao rezultat, fajl poput ' 2014-11-15.gz‘.

    Pažnja! Ako navedete samo ime datoteke, ona će biti sačuvana u istom direktoriju u odnosu na koji izvršavate ovu naredbu. One. ako vidite ovako nešto na komandnoj liniji # , Gdje root@dvs ovo je prijava i ime servera, datoteka će biti kreirana u direktoriju /Dom. Da promijenite spremanje datoteke na drugu putanju, navedite punu putanju za spremanje datoteke umjesto imena, na primjer: /var/www/backup/dump_file.sql.

  • U drugom primjeru, umjesto operatora ‘ > koristi se 'operator' | ‘, što ukazuje na potrebu izvođenja dodatna komanda gzip s parametrom ' -c‘ što vam omogućava da odmah spakujete dump u arhivu, a tek onda ga spremite u datoteku poput ‘ 2014-11-15.gz', kako je javio operater' > ‘.
  • Parametar -nema podataka omogućava vam da izbacujete samo strukturu baze podataka bez samih podataka. Prilično korisno u nekim slučajevima kada podaci nisu potrebni.
  • Opcije –default-character-set=utf8 I –extended-insert=FALSE. Prvi vam omogućava da eksplicitno specificirate kodiranje koje koristi ova baza podataka, čime se izbjegava spremanje baze podataka u pogrešnom kodiranju.Umjesto utf8, možete specificirati bilo koji drugi kodiranje, na primjer cp1251. Drugi parametar vam omogućava da navedete da se posebna INSERT naredba mora kreirati za svaki zapis prilikom izvoza. U nekim slučajevima, ovo može biti potrebno pri djelimičnom vraćanju podataka iz dumpa.
  • Vraćanje baze podataka iz MySQL Dump datoteke

    Pogledajmo sada obrnuti proces vraćanja baze podataka iz dump datoteke. Ova akcija izvodi se pomoću mysql programa. Pogledajmo odmah primjer.

./mysql -u -p H < db_dump-file

2018-12-04T00:00Z

2018-12-11T00:00Z

Kada kreiramo dump datoteku sa mysqldump, ona sadrži veliku SQL skriptu za ponovno kreiranje sadržaja baze podataka. Stoga ga vraćamo pokretanjem klijenta komandna linija MySQL:

Mysql -uroot -p

(gdje je root naše admin korisničko ime za MySQL) i nakon povezivanja na bazu podataka potrebne su nam komande za kreiranje baze podataka i čitanje datoteke:

Kreirajte bazu podataka new_db; use new_db; \. dumpfile.sql

Detalji će se promijeniti ovisno o opcijama koje su korištene prilikom kreiranja datoteke dump-a.

2018-12-18T00:00Z

Samo trebate pokrenuti ovo:

mysql -p -u< db_backup.dump

Ako dump sadrži više baza podataka, trebali biste izostaviti naziv baze podataka:

mysql -p -u< db_backup.dump

Da pokrenete ove komande, otvorite komandnu liniju (na Windows) i cd u direktorijum u kojem se nalazi mysql.exe izvršnu datoteku mysql.exe (možda ćete morati malo da razmislite o tome, zavisiće od toga kako ste instalirali mysql, tj. samostalno ili kao deo paketa kao što je WAMP). Kada ste u ovom direktoriju, jednostavno unesite naredbu.

2018-12-25T00:00Z

Trebalo bi biti jednostavno kao da pokrenete ovo:

Mysql -u -p< db_backup.dump

Ako dump ima jednu bazu podataka, možda ćete morati dodati red na vrh datoteke:

KORISTI ;

Ako je to deponija mnogih baza podataka, izrazi upotrebe su već tamo.

Da pokrenete ove komande, otvorite komandnu liniju (na Windows) i cd u direktorijum gde mysql.exe sadrži izvršnu datoteku mysql.exe (možda ćete morati malo da razmislite o tome, zavisiće od toga kako ste instalirali mysql, tj. samostalno ili kao dio paketa kao što je WAMP). Kada ste u tom direktoriju, možete jednostavno upisati naredbu kao što sam učinio gore.

2019-01-01T00:00Z

Jednostruka naredba za vraćanje generiranog SQL-a iz mysqldump

Mysql -u -p E "izvor

2019-01-08T00:00Z

Koristeći dump datoteku od 200 MB kreiranu na Linuxu za vraćanje na Windows sa mysql 5.5, imao sam više uspeha With

Izvorni fajl.sql

timski pristup mysql strings nego koristeći

mysql< file.sql

pristup komandnoj liniji koji uzrokuje neku grešku iz 2006. "server je otišao" (na Windowsima)

Čudno, usluga kreirana tokom (mysql)instalacije se odnosi na my.ini fajl koji nije bio tamo. Kopirao sam "veliki" primjer fajla u my.ini, koji sam već izmijenio uz preporučeno povećanje.

Moje vrednosti

Max_allowed_packet = 64M interactive_timeout = 250 wait_timeout = 250

2019-01-15T00:00Z

As konkretan primjer prethodni odgovor:

Trebao sam da vratim rezervnu kopiju kako bih je mogao uvesti/prenijeti SQL Server. Instalirao sam samo MySql, ali ga nisam registrovao kao uslugu niti ga dodao na svoju putanju jer ne moram da ga pokrećem.

koristio sam Windows Explorer da stavim svoj dump fajl u C:\code\dump.sql. Zatim otvorite MySql iz stavke Start menija. Kreirao DB, a zatim pokrenuo izvornu naredbu s punom putanjom ovako:

Mysql> kreiraj bazu podataka temp mysql> koristi temp mysql> izvorni c:\code\dump.sql

Čudno je, ali prilično je teško pronaći ovu informaciju na internetu. Gomila svakojakih levičarskih preporuka. Ali u stvari, sve je jednostavno. Dump možete vratiti naredbom:

# mysql-u -p< mysql_dump.sql.

Umjesto toga, zamijenite korisničko ime, ja lično radim oporavak sa root-a. A u mysql_dump, sql, zapravo, dump je napravljen mysqldump korisnost. Opcija -p označava autorizaciju lozinkom; nakon što pritisnete enter, od vas će se tražiti lozinka. To je sve, zapravo. Dump možete napraviti naredbom:

# mysqldump-u korijen -p -f ime_baze podataka > datoteka_sa_dumpom.sql

Ovdje parametar -f database_name specificira ime baze podataka koju spremamo. Ako vam treba sve, mi to zamjenjujemo --sve-baze podataka. Ova opcija će označiti spremanje svih baza podataka na serveru. Kako ne biste svaki put unosili lozinku, možete je navesti direktno u naredbi (ovo je neophodno ako radite cron dump iz skripte), međutim, sa sigurnosne tačke gledišta, ovdje se postavljaju pitanja, posebno ako lozinka je root za mišiće. E sad, kad bi mišić bar shvatio md5 lozinke... Međutim, nije činjenica da on ne razumije, ja samo možda ne znam :)

Autor

Alex Razgibalov

Lud čovjek, neodređenih godina, uživa u zabludi progona. Patološki nepovjerljiv, sebičan, autoritaran. Sekundarne dijagnoze - programer i asistent. Posjeduje engleski jezik na nivou otprilike usranog razgovora. Takođe poznaje neke druge jezike. Zanima ga svi i sve, zbog čega je njegovo znanje u bilo kojoj oblasti površno i plitko. Lik je nekontrolisan. Snaga - 55 stepeni.

Od autora: Došao sam da posetim prijatelja, a njegova žena je bila histerična, papagaj je vrištao: "Mai-es-qu-el-dump." Sam prijatelj leži sa glavoboljom i maničnom željom da sazna šta se dešava MySQL oporavak sa deponije. Da sačuvamo glave ostatka "neznalica", živce njihovih žena i glasne žice papagaja, razmotrimo ovu temu detaljnije.

Opasnost "All inclusive"

Moj prijatelj, kao i mnogi početnici, koristi softverski paketi"Sve uključeno". Najčešći u RuNetu je džentlmenski set "Denver". I sa svojom „složenošću“ (uključuje lokalni server, ljuska za rad sa DBMS-om, MySQL server) on upravo tu „gospodu“ dovodi do ludila.

Denverov spisak uključuje samo nekoliko standardni uslužni programi za rad sa MySQL. I pošto svi mi savremeni ljudi, onda po informacije koje nedostaju (da bismo shvatili suštinu nečega) idemo na internet. Ali materijali objavljeni na internetu ne govore da je za izvršavanje određenih skupova naredbi potrebno prisustvo standardni paket MySQL specijalizovana komunalna preduzeća. Na primjer, da biste kreirali dump MySQL baze podataka, potreban vam je program MySQLDump.

Stoga, ako također koristite Denwer za obuku i testiranje vašeg koda, a upiti opisani u ovom materijalu neće se izvršavati na komandnoj liniji, idite na: D:\Webserver\usr\local\mysql-5.5\bin

I pogledajte koji su uslužni programi za rad sa DBMS serverom dostupni "na brodu" klijent mašina. Ponavljam još jednom, danas nam je potreban program MySQLDump.

Rad sa MySQLDump

Ovaj uslužni program je obična „izvršna“ datoteka, koju nakon preuzimanja treba staviti u mapu bin (put do nje je naznačen u prvom dijelu materijala). Ovo mala aplikacija omogućava rješavanje “globalnih” problema - vraćanje iz dumpa u MySQL, kreiranje sigurnosnih kopija i konfiguriranje parametara sigurnosne kopije.

Uslužni program nema sopstveni interfejs, tako da s njim radite kroz standardni CMD uključen standardni set Windows programi(pokrenuti preko Start menija). A sada korak po korak:

Prvo idemo na virtuelni disk (kreiran nakon pokretanja Apachea, koji je dio Denvera).

Ako ne koristite "džentlmenski" set, to ne znači da niste džentlmen. Samo trebate preskočiti ovaj korak uputstava.

Zatim, koristeći naredbu cd (promjena direktorija), odredite putanju do mape u kojoj je MySQL instaliran. U Denveru se ovaj direktorij nalazi ovdje: Z:\usr\local\mysql-5.5\bin

Kada zasebno instalirate sistem za upravljanje bazom podataka, ovaj folder se nalazi: C:\Program Files…

Pošto smo već na željenom (virtuelnom) disku, potrebno je samo navesti dio putanje nakon naredbe cd:

Provjerimo funkcionalnost aplikacije i napravimo MySQL dump baze podataka, koja se nalazi na našem serveru. Na primjer, baza podataka “wordpress”. Da bismo to učinili, koristit ćemo naredbu mysqldump istog imena kao i uslužni program. Evo njegove sintakse:

mysqldump -u korisničko ime -p lozinka ime_baza podataka > backup- baza podataka.sql

mysqldump - u korisničko ime - p lozinka ime_baza podataka > rezervna kopija - baza podataka . sql

Primjer korištenja naredbe:

mysqldump -uroot wordpress>Z:\home\localhost\dump\wp_copy.sql

mysqldump - uroot wordpress > Z:\home\localhost\dump\wp_copy. sql

Kao rezultat toga, dobili smo dump baze podataka WordPress stranice:

Šta je smetlište?

Ako ne znate ništa o MySQL dumpu baze podataka i teško vam je da pogodite o čemu se radi, onda ovaj odeljak za tebe. Dump je vrsta sigurnosne kopije baze podataka. Preciznije, datoteke kopiranja baze podataka (ovisno o vrsti i alatu za kreiranje) mogu sadržavati linije podataka određeni tip, a također uključuju SQL upite za rekonstrukciju izgubljenih informacija, njihove strukture i vrijednosti parametara.

Da ne bismo bili neosnovani, otvorimo kopiju wp_copy koju smo kreirali koristeći standardni Notepad. Nakon kratkog proučavanja njegovog sadržaja, vidjet ćemo da se gotovo u potpunosti sastoji od upita pomoću kojih možete ponovo kreirati strukturu tabela baze podataka i njihov sadržaj.

Testirajte oporavak

Ako vas ruke svrbe i sapun ne pomogne, onda ćemo provesti "probno pokretanje" uslužnog programa. Prvo, preko phpMyAdmin-a (da bismo ga učinili bržim) napravićemo probnu “Auto” bazu podataka sa dve tabele. Nazovimo jedan "automobil", a drugi "boja". Dodajte nekoliko redova podataka svakom radi jasnoće.

Sada napravimo MySQL dump baze podataka koja nas zanima. Rezervnu kopiju ćemo sačuvati na isto mjesto. Šifra zahtjeva:

mysqldump -uroot auto>Z:\home\localhost\dump\auto_copy.sql

mysqldump - uroot auto > Z:\home\localhost\dump\auto_copy. sql

Odlaskom u mapu dump, vidimo da je uslužni program kreirao kopiju "auto_copy".

Pravljenje dumpa baze podataka (backup) je veoma važno. Zato sam dao neke komentare sa primjerima za ovo odlična korisnost poput mysqldump.

mysqldump - uslužni program koji vam omogućava da izbacujete sadržaj baze podataka ili skup baza podataka za kreiranje rezervna kopija ili slanje podataka na drugi SQL server baze podataka (ne nužno MySQL server). Dump će sadržavati skup SQL naredbi za kreiranje i/ili popunjavanje tablica.

mysqldump-u korijen -p -f ime_baze podataka >

Ovom komandom pravimo rezervnu kopiju baze podataka pod imenom name_database za pogon C u datoteci mydb_backup_name_database.txt

Ne morate kreirati fajl; MySQL će ga sam kreirati.

mysql-u korijen -p -f ime_baze podataka< C:\mydb_backup_name_database.txt

Ovom naredbom uvozimo sigurnosne kopije podataka iz datoteke C:\mydb_backup_name_database.txt

Napomena: -f, --force je opcija koja specificira nastavak čak i ako se primi SQL greška, tj. ignorisati greške. Na primjer, ako identičan red već postoji u tablici.

Da biste izbjegli traženje lozinke, morate je napisati odmah nakon -p, odnosno bez razmaka. Ako je lozinka Pwd, tada bi primjer izgledao ovako:

mysqldump-u korijen -p Pwd-f ime_baze_podataka > C:\mydb_backup_name_database.txt

Ako često koristite ovu naredbu, onda je bolje kreirati zasebnog korisnika s potrebnim pravima kako biste smanjili vidljivost root lozinke

Hajde da razmotrimo više fina podešavanja mysqldump:

--baze podataka dozvoljava mysqldump da uključi naredbe CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME i USE DBNAME u skriptu za oporavak. Ovo će vam omogućiti da kreirate radne baze podataka od nule. To jest, bez korištenja --databases, pretpostavlja se da korisnik vraća jednu bazu podataka i eksplicitno specificira gdje bi vraćeni podaci trebali biti smješteni. Ako je rezervna kopija kreirana sa ciljem da se napravi potpuna radna kopija podataka, na primjer, na drugom MySQL serveru, onda morate koristiti ovaj ključ;

--sve-baze podataka omogućava vam da napravite kopije svih baza podataka koje postoje na datom MySQL serveru. Ako trebate da napravite kopije samo nekih baza podataka, samo ih trebate navesti odvojene razmakom kada pozivate mysqldump iz komandne linije (vidi gore);

Ključ --pomoć. Program mysqldump ima mnogo verzija. Pomoću ovog ključa možete vidjeti koje značajke podržava vaša verzija;

--add-drop-table- prekidač koji će primorati mysqldump da doda naredbu za ispuštanje tablice u rezultirajuću skriptu prije kreiranja tablica. Ovo će vam omogućiti da izbjegnete neke greške prilikom vraćanja baze podataka iz sigurnosne kopije. Naravno, morate uzeti u obzir da će tabele koje se nalaze u radnoj kopiji (ako tabele sa istim imenom postoje u rezervnoj kopiji) biti izbrisane iz glavne baze podataka i ponovo kreirane iz rezervne kopije pre vraćanja iz rezervne kopije;

--nema podataka. Koristeći ovaj ključ, možete brzo napraviti kopiju strukture tabele/baze podataka bez samih podataka. Na primjer, kreirali ste složenu tabelu i želite da sačuvate njenu strukturu za budućnost, ali vam ne trebaju sami podaci koji se nalaze u ovoj tabeli u rezervnoj kopiji;

--result-file=...- ovaj prekidač se može koristiti za preusmjeravanje izlaza na datoteku. Možete koristiti redovno Unix preusmjeravanje sa ">" naredbom, ili možete koristiti ovaj ključ. Ko šta voli;

Još jedan vrlo koristan savjet o korištenju mysqldump u hosting okruženju. U pravilu, prilikom korištenja hostinga korisniku se nameću određena ograničenja. Na primjer, ne možete posuditi više od određenog iznosa fizička memorija(RAM, RAM). mysqldump po defaultu stavlja sve podatke primljene od MySQL servera u memoriju, a zatim ih sve zapisuje na disk. Shodno tome, ako vam provajder dozvoli da pozajmite, na primjer, 30 MB memorije, a baza podataka koju kopirate pomoću mysqldump zauzima 50 MB, naravno, ovdje će se pojaviti greška - mysqldump neće moći ispravno raditi i srušit će se, o čemu će vas obavijestiti. Da biste "prisilili" mysqldump da zapiše podatke direktno na disk, umjesto da ih pohranjuje, čak i privremeno, u memoriju, koristite ključ --brzo. Ovo će riješiti problem.

Evo još par korisnih primjera:

mysqldump -u korijen -p Pwd-f --default-character-set=cp1251 DBNAME| gzip -c > ime datoteke.txt .gz

Takvu arhivu možete raspakovati naredbom:

gunzip filename.txt.gz

Da biste saznali kog datuma je napravljena sigurnosna kopija, možete napisati sljedeću naredbu:

mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME | gzip -c > `datum "+%Y-%m-%d"`.gz

a ako morate napraviti dumpove s različitim kodiranjem, onda je zgodno koristiti varijable:

set DBCHARACTER= utf8

set DBNAME= kršenje

mysqldump -u korijen -p Pwd-f --default-character-set=$ DBCHARACTER $DBNAME| bzip2 -c > sql. $DBNAME.`datum "+%Y-%m-%d"`.bz2

Ako želite automatizirati uklanjanje starih arhiva, pokušajte koristiti cron i naredbu find, koja se obično nalazi u unixu. Povremeno radi

nađi~/directory-with-archives -name "*.gz" -mtime +7 -exec rm -f () \;

Tako ćete izbrisati arhive koje su „starije“ od sedam dana.

Najbolji članci na ovu temu