Hvordan dumpe en MySQL-database. Opprette en sikkerhetskopi av CMS Joomla-databasen

MySQL database dump er kjent for alle webmastere. Dette er ikke overraskende, fordi denne prosedyren utføres som en del av en sikkerhetskopi eller overføring av en database til en annen hosting.

Derfor er det viktig for enhver webutvikler å vite hvordan man dumper en MySQL-database. Hva det er? Dette er en fil som inneholder instruksjoner for SQL-språk, på grunn av dette opprettes en nøyaktig kopi av databasen din både i innhold og struktur. For hvilke situasjoner bør du dumpe MySQL-databasen:

  • Overføring av en database til en annen server

En dump kan være nødvendig hvis du planlegger å overføre databasen til en annen hosting. Med dens hjelp kan du gjenskape uten problemer eksakt kopi gammel base data.

  • Database backup

Virtuell nettside hosting, som inkluderer daglig backup. Regelmessig sikkerhetskopiering av data vil spare deg for mye krefter og nerver i tilfelle uforutsette situasjoner. Et mislykket eksperiment med et nettsted eller en serverkrasj kan føre til tap av hele databasen, og bare en rettidig dump vil hjelpe deg i denne situasjonen. Naturligvis kan den ikke lagres på samme server som hoveddatabasen, fordi ellers vil du miste all informasjon uten mulighet for gjenoppretting.

Hvordan dumpe en MySQL-database?

Eksistere ulike måter lage en dump, og så vil vi se på hovedalternativene:

  • Lage en dump ved hjelp av MySQL-konsollen

I dette tilfellet, for å opprette en databasedump, bruk kommandolinjen eller MySQL-konsoll, hvor du må skrive inn kommandoen mysqldump -uuser -ppass db_name > file_to_save. I dette tilfellet er bruker navnet på databasebrukeren med tilstrekkelige rettigheter til å lage en dump, pass er passordet for databasen, db_name er navnet på den ønskede databasen, og i stedet for file_to_save må du spesifisere navnet på filen hvor dumpen vil bli lagret.

Etter å ha skrevet inn kommandoen riktig, vil en fil med filtypen .sql vises på den angitte plasseringen, som er en databasedump. Denne metoden er den mest universelle og populære blant brukere av Unix-systemer, for eksempel Ubuntu, hvis du plutselig trenger å overføre MySQL til en annen server. I samme tilfelle, hvis du ikke vet konsollkommandoer, trenger du ekstra programvare.

  • Lage en databasedump ved hjelp av phpMyAdmin

Hvis du foretrekker å bruke tilleggsprogramvare, kan du dumpe databasen bruker PHP ved å bruke for eksempel phpMyAdmin. For å gjøre dette, følg disse trinnene:

  1. Logg på phpMyAdmin.
  2. Plukke ut det nødvendige grunnlaget data fra den generelle listen.
  3. Logg på den valgte databasen.
  4. Etter autorisasjon vil venstre kolonne inneholde selve databasen og tjenesteinformasjon som er relatert til den. Nå må du velge databasen på nytt.
  5. Gå til "Eksporter"-fanen, og aktiver deretter noen innstillinger, nemlig:

    Legg til DROPPTABELL/VISNING/PROSEDYRE/FUNKSJON/HENDELSE

    Dette alternativet lar deg gjenopprette i fremtiden uten frykt. MySQL-database fra dump. Alle bord som har samme navn, vil først bli slettet, det vil si at dpop-kommandoen vil bli utført, og deretter erstattet med lignende fra dumpen din. Som et resultat vil du beskytte deg selv mot å lage dupliserte tabeller og, som et resultat, feil drift av databasen.

    Pakke med glidelås

    Aktivering av dette alternativet vil sikre at DB-dumpen din blir arkivert, og du vil ende opp med en fil med filtypen .zip. Dette lar deg raskt og riktig lagre dumpen selv med lav tilkoblingshastighet.

  6. Du mottar en klar til bruk databasedump. Hvis alt ble gjort riktig, vil du ha et arkiv som inneholder en fil med filtypen .sql - en dump av databasen du trenger.

Nå vet du hvordan du gjør MySQL-dump, hvis du plutselig trenger å overføre databasen til en annen server, eller det oppstår en annen situasjon når en sikkerhetskopi av databasen kan være nyttig. Selvfølgelig er det mange flere måter å lage en dump på, i tillegg til de som er beskrevet ovenfor. Men selv besittelse av de fleste enkle alternativer Og regelmessig brukå bruke dem i praksis vil tillate deg å føle deg mer selvsikker i enhver uforutsett situasjon, fordi det vil være nok å bare distribuere en MySQL-dump og raskt gjenopprette alle databaser.

Hvis du bestemmer deg for å kjøpe en dedikert server fra vårt firma, vil du få 100 GB for ekstern server sikkerhetskopier, hvor du kan konfigurere automatisk sikkerhetskopiering av nettsteder og databaser. I dette tilfellet vil du alltid ha en ny MySQL-dump.

I tilfelle du fortsatt har problemer med å opprette en dump og endre en server eller hosting, kan du kontakte RigWEBs tekniske støttepersonell, og de vil svare på alle spørsmålene dine innenfor deres kompetanse. Hvis du av en eller annen grunn ikke kan gjøre dette selv, vil våre spesialister overføre nettstedet ditt fra en annen hosting til vår gratis. Vi vil også sørge for regelmessige sikkerhetskopier og rettidig levering aktuelle kopier av dataene dine om nødvendig. Ved å bruke profesjonell hosting RigWEB kan du være sikker på maksimal beskyttelse av prosjektet ditt mot eventuelle overraskelser!

Hei, nå skal vi se på teknologien Oracle datapumpe, som vi kan eksportere data til en dump og importere data fra en dump til Oracle DBMS. Denne teknologien innebærer bruk av verktøy expdp Og impdp, som erstatter de tradisjonelle exp og imp, og i dag vil vi lære hvordan du bruker dem til å lage en databasedump og importere data fra denne dumpen.

Som du sikkert allerede har gjettet, nå vi vil snakke om Oracle DBMS, nemlig om Oracle Data Pump-teknologien, og vi begynner selvfølgelig med en oversikt over denne teknologien.

Hva er Oracle Data Pump?

Oracle datapumpe er en teknologi som lar deg eksportere og importere data og metadata til et DBMS Oracle Database til et spesielt dump-filformat.

Denne teknologien dukket først opp i versjon 10g og er inkludert i alle påfølgende versjoner av Oracle Database. For å eksportere og importere data før Oracle Data Pump, dvs. Før versjon 10g ble de tradisjonelle verktøyene exp og imp brukt, hvis funksjoner ble beholdt i versjon 10 og høyere for kompatibilitetsformål. Funksjon av Oracle Datapumpe er at eksport og import av data skjer på serversiden, en dmp-fil genereres på filsystem server, samt den største fordelen med Oracle Data Pump over tradisjonell måte Dataeksport og import gjør det raskere å laste opp og laste ned data.

I Oracle Data Pump er det opprettet nye serververktøy expdp og impdp for eksport og import av data. Dump-filformatet (dmp) som brukes av disse verktøyene er inkompatibelt med formatet som brukes av exp og imp.

Expdp– et verktøy for å eksportere data til Oracle-databasen til en dump.

Impdp– et verktøy for å importere data til Oracle-databasen fra en dump.

Expdp- og impdp-verktøyene støtter flere driftsmoduser:

  • Full – eksport og import av hele databasen;
  • Skjema - eksport og import av utvalgte skjemaer;
  • Tabell - eksport og import av utvalgte tabeller;
  • Tablespace - eksport og import av utvalgte tabellplasser;
  • Transportable Tablespace - eksporter og importer tabellplasser for overføring til en annen server.

For å se detaljert informasjon (beskrivelse av parametere) for disse verktøyene, kjør dem med help=y-parameteren, for eksempel

Merk! Lansering av verktøy i operasjonssalen Windows-system kjører fra kommandolinjen. Hvis systemkatalogen bin Oracle DBMS er ikke lagt til miljøvariabel Path, så må du kjøre verktøyene fra denne katalogen, dvs. ved først å gå inn i det (for eksempel ved å bruke cd-kommandoen). For å demonstrere eksemplene nedenfor bruker jeg Oracle Database Express Edition 11g Release 2 installert på Windows 7-operativsystemet.

Eksempel på å lage en Oracle-databasedump ved hjelp av expdp

For å lage dumps i Oracle ved hjelp av expdp-verktøyet, må du først bestemme deg for den logiske katalogen du vil eksportere dumpene til, dvs. hvor de skal lagres. Du kan bruke standard DATA_PUMP_DIR-katalogen, men hvis du vil, kan du opprette en ny, separat katalog spesielt for dine formål. La oss lage en egen katalog for våre oppgaver med eksport og import av data, og samtidig lære hvordan du lager slike kataloger.

Først lager vi en katalog i filsystemet, for eksempel opprettet jeg D:\OracleEX\ExportImport.

Deretter lager vi en katalog i Oracle, for dette åpner vi SQL*Plus eller SQLDeveloper og kjører følgende kommando ( Jeg lanserte den i SQL*Plus og kalte katalogen ExportImport).

OPPRETT KATALOG ExportImport AS "D:/OracleEX/ExportImport";


For å se hvilke kataloger som allerede er opprettet, kan du bruke følgende spørring.

VELG katalognavn, katalogbane FRA dba_kataloger;

La oss nå gå videre til eksport direkte. Jeg utførte alle handlinger på vegne av Oracle-systembrukeren.

Dumper hele databasen

For å lage en komplett databasedump, kjør følgende kommando i kommandolinje

Expdp system/Pa$$w0rd FULL=Y directory=ExportImport dumpfile=DumpFull.dmp logfile=ExportFull.log


  • FULL=Y – en parameter som indikerer at vi utfører en fullstendig databaseeksport;
  • directory=ExportImport – parameteren spesifiserer katalogen som vi skal eksportere dumpfilen til;
  • dumpfile=DumpFull.dmp – parameter for å spesifisere navnet på dumpfilen;
  • logfile=ExportFull.log – parameter for å spesifisere navnet på dataeksportloggfilen.

Dumping fra et enkelt databaseskjema

I de fleste tilfeller vil du sannsynligvis trenge å eksportere et separat, valgt databaseskjema, og ikke hele databasen. For å laste ned skjemaet, spesifiser SCHEMAS-parameteren.

Expdp system/Pa$$w0rd SCHEMAS=OracleUser directory=ExportImport dumpfile=DumpSCHEMAS.dmp logfile=ExportSCHEMAS.log


SCHEMAS=OracleUser – parameter der vi spesifiserer skjemaet som skal eksporteres, i vårt tilfelle OracleUser.

Opprette en dump basert på individuelle databasetabeller

Noen ganger trenger vi bare å eksportere én eller noen få tabeller, for dette kan vi bruke TABLES-parameteren. I eksemplet nedenfor eksporterer vi OracleTable i OracleUser-skjemaet.

Expdp system/Pa$$w0rd TABLES=OracleUser.OracleTable directory=ExportImport dumpfile=DumpTABLES.dmp logfile=ExportTABLES.log


TABLES=OracleUser.OracleTable er parameteren der vi spesifiserer tabellen som skal eksporteres ( eller flere tabeller atskilt med komma).

Eksempel på import av data fra en Oracle-dump ved hjelp av impdp

La oss nå gå videre til å importere data fra dumpen. Som du husker, har vi impdp-verktøyet for disse formålene.

Importerer et skjema fra en dump

For å importere hele skjemaet, kjør impdp-verktøyet med SCHEMAS-parameteren. Hvis du allerede har laget et skjema som du skal importere, må du først slette det. For å slette et skjema, bruk følgende spørring i SQL*Plus eller SQLDeveloper

DROP BRUKER OracleUser CASCADE;


Etter dette, for å importere skjemaet, kjør impdp-verktøyet med følgende parametere

Impdp system/Pa$$w0rd SCHEMAS=OracleUser directory=ExportImport dumpfile=DumpSCHEMAS.dmp logfile=ImportSCHEMAS.log


  • system/Pa$$w0rd er brukerens login og passord i DBMS;
  • SCHEMAS=OracleUser – en parameter som indikerer at vi ønsker å importere et spesifikt skjema ( i vårt tilfelle OracleUser);
  • directory=ExportImport – parameteren spesifiserer katalogen der datadumpfilen er plassert;
  • dumpfile=DumpSCHEMAS.dmp – parameter for å spesifisere navnet på dumpfilen;
  • logfile=ImportSCHEMAS.log – parameter for å spesifisere navnet på dataimportloggfilen.

Importerer tabeller fra en dump

Hvis du vil importere en eller flere tabeller, kan du bruke parameteren TABLES, akkurat som ved eksport. Hvis tabellen eller tabellene allerede er opprettet, dvs. eksisterer, må de enten slettes manuelt (DROP TABLE) eller spesifiseres i parameteren TABLE_EXISTS_ACTION, som kan ha følgende verdier:

  • HOPPE - la det eksisterende bordet være som det er og gå videre til neste bord;
  • APPEND - legg til rader i tabellen;
  • TRUNCATE - slett alle linjer og legg til nye fra dumpen;
  • ERSTATT - slett tabellen og lag den med dataene fra dumpen.

Som et eksempel, la oss kjøre impdp med TABLE_EXISTS_ACTION=REPLACE for å overskrive en eksisterende tabell.

Impdp system/Pa$$w0rd TABLES=OracleUser.OracleTable directory=ExportImport dumpfile=DumpTABLES.dmp logfile=ImportTABLES.log TABLE_EXISTS_ACTION=ERSTATT


Det var alt for meg, jeg håper materialet var nyttig for deg, bye!

Før du gjenoppretter SQL-dumpen. alle brukere som eier objekter eller har rettigheter til objekter i den dumpede databasen må allerede eksistere. Hvis de ikke er der, vil det under gjenoppretting være feil ved gjenoppretting av objekter med de opprinnelige eierne og/eller rettighetene. (Noen ganger er dette hva du vil, men vanligvis ikke). Som standard, hvis en SQL-feil oppstår, vil psql-programmet fortsette å kjøre. Det kan være lurt å kjøre psql med ON_ERROR_STOP-variabelen satt for å endre denne virkemåten og tvinge psql til å avslutte med exit-kode 3 hvis det oppstår en SQL-feil: psql --set ON_ERROR_STOP=på dbname< файл_дампа

Uansett vil du bare ha en delvis gjenopprettet database. Alternativt kan du spesifisere at hele dumpen skal gjenopprettes i én transaksjon, slik at gjenopprettingen enten blir fullstendig fullført eller fullstendig mislykket. Denne modusen kan spesifiseres ved å bruke kommandolinjealternativene -1 eller --single-transaction for psql. Når du bruker denne modusen, vær forsiktig, selv en liten feil kan føre til at gjenopprettingsprosessen rulles tilbake, som har pågått i flere timer. Dette kan imidlertid være å foretrekke manuell rengjøring kompleks database etter en delvis gjenopprettet dump.

Evnen til pg_dump og psql til å skrive og lese fra pipelines gjør mulig opprettelse dump en database direkte fra en server til en annen, for eksempel: pg_dump -h server1 db_name | psql -h server2 db_navn

Viktig: Dumpene som pg_dump lager er i forhold til template0 . Det betyr at eventuelle språk, prosedyrer mv. lagt til via template1 vil også bli dumpet når pg_dump kjøres. Som et resultat, når du gjenoppretter, hvis du brukte en spesielt modifisert mal1, bør du opprette en tom database fra template0, som vist i eksempelet ovenfor.

Etter bedring sikkerhetskopi, er det lurt å kjøre ANALYSE på hver database slik at spørringsoptimereren får statistikken den trenger; se avsnitt 23.1.3 og avsnitt 23.1.5 for detaljer. For å lære mer om hvordan du laster ned effektivt store volumer data i PostgreSQL, se avsnitt 14.4.

For veldig store databaser kan det hende du må kombinere splitt med en av de to andre metodene.

Å lage en databasedump (backup) er veldig viktig. Det er derfor jeg kom med noen kommentarer med eksempler for et så utmerket verktøy som mysqldump.

mysqldump - et verktøy som lar deg dumpe innholdet i en database eller et sett med databaser for å lage en sikkerhetskopi eller sende data til en annen SQL-databaseserver (ikke nødvendigvis en MySQL-server). Dumpen vil inneholde et sett med SQL-kommandoer for å lage og/eller fylle ut tabeller.

mysqldump-u rot -p -f navnedatabase >

Med denne kommandoen tar vi en sikkerhetskopi av databasen under navnet name_database til stasjon C i filen mydb_backup_name_database.txt

Du trenger ikke å lage filen; MySQL vil lage den selv.

mysql-u rot -p -f navnedatabase< C:\mydb_backup_name_database.txt

Med denne kommandoen importerer vi sikkerhetskopidata fra filen C:\mydb_backup_name_database.txt

Merk: -f, --force er et alternativ som spesifiserer å fortsette selv om en SQL-feil mottas, dvs. ignorere feil. For eksempel hvis en identisk rad allerede finnes i tabellen.

For å unngå å spørre om et passord, må du skrive det umiddelbart etter -p, det vil si uten mellomrom. Hvis passordet Pwd, da vil eksemplet se slik ut:

mysqldump-u rot -s Pwd-f navnedatabase > C:\mydb_backup_navn_database.txt

Hvis du ofte bruker denne kommandoen, da er det bedre å opprette en egen bruker med de nødvendige rettighetene for å redusere synligheten til root-passordet

La oss vurdere mer fine innstillinger mysqldump:

--databaser lar mysqldump inkludere CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME og USE DBNAME-kommandoer i gjenopprettingsskriptet. Dette vil tillate deg å lage fungerende databaser fra bunnen av. Det vil si at uten å bruke --databases, antas det at brukeren gjenoppretter en enkelt database og spesifiserer eksplisitt hvor de gjenopprettede dataene skal plasseres. Hvis det opprettes en sikkerhetskopi med mål om å lage en fullstendig fungerende kopi av dataene, for eksempel på en annen MySQL-server, må du bruke denne nøkkelen;

--alle-databaser lar deg lage kopier av alle databaser som finnes på en gitt MySQL-server. Hvis du trenger å lage kopier av bare noen databaser, trenger du bare å spesifisere dem atskilt med et mellomrom når du kaller mysqldump fra kommandolinjen (se ovenfor);

Nøkkel --hjelp. Mysqldump-programmet har mange versjoner. Du kan se hvilke funksjoner som støttes spesifikt av din versjon ved å bruke denne nøkkelen;

--legg til-slipp-tabell- en bryter som vil tvinge mysqldump til å legge til en drop table-kommando til det resulterende skriptet før du oppretter tabeller. Dette vil tillate deg å unngå noen feil når du gjenoppretter en database fra en sikkerhetskopi. Selvfølgelig må du ta hensyn til at tabellene ligger i arbeidskopi(hvis tabeller med samme navn finnes i sikkerhetskopien), før de gjenopprettes fra sikkerhetskopien, vil de bli slettet fra hoveddatabasen og gjenskapt fra sikkerhetskopien;

--ingen data. Ved å bruke denne nøkkelen kan du raskt lage en kopi av tabell-/databasestrukturen uten selve dataene. Du har for eksempel laget en kompleks tabell og ønsker å lagre strukturen for fremtiden, men du trenger ikke selve dataene som er i denne tabellen i en sikkerhetskopi;

--resultatfil=...- denne bryteren kan brukes til å omdirigere utdata til en fil. Du kan bruke vanlig Unix-omdirigering med ">"-kommandoen, eller du kan bruke denne nøkkelen. Hvem liker hva;

En annen veldig nyttige råd om bruk av mysqldump i et vertsmiljø. Som regel, ved bruk av hosting, pålegges brukeren noen begrensninger. Du kan for eksempel ikke låne mer enn et visst beløp fysisk hukommelse(RAM, RAM). mysqldump legger som standard alle data mottatt fra MySQL-serveren i minnet, og skriver deretter alt til disk. Følgelig, hvis leverandøren lar deg låne for eksempel 30 MB minne, og databasen som du kopierer med bruker mysqldump, tar opp 50MB, selvfølgelig vil det oppstå en feil her - mysqldump vil ikke kunne fungere korrekt og avsluttes unormalt, noe den vil informere deg om. For å "tvinge" mysqldump til å skrive data direkte til disk, i stedet for å lagre dem, selv midlertidig, i minnet, bruk nøkkelen --rask. Dette vil løse problemet.

Her er et par flere nyttige eksempler:

mysqldump -u rot -s Pwd-f --default-character-set=cp1251 DBNAME| gzip -c > filnavn.txt .gz

Du kan pakke ut et slikt arkiv med kommandoen:

gunzip filnavn.txt.gz

For å vite hvilken dato sikkerhetskopieringen ble laget, kan du skrive følgende kommando:

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

og hvis du må lage dumps med forskjellige kodinger, er det praktisk å bruke variabler:

sett DBKARAKT= utf8

sett DBNAME= brudd

mysqldump -u rot -s Pwd-f --default-character-set=$ DBKARAKT $DBNAME| bzip2 -c > sql. $DBNAME.`dato "+%Y-%m-%d"`.bz2

Hvis du vil automatisere fjerning av gamle arkiver, prøv å bruke cron og find-kommandoen, som vanligvis finnes i unix. Kjører med jevne mellomrom

finne~/katalog-med-arkiver -navn "*.gz" -mtime +7 -exec rm -f () \;

Dermed vil du slette arkiver som er "eldre" enn syv dager.

Filen som inneholder innholdet i databasen er databasedumpen. Med dens hjelp er det mulig å gjenopprette fra bunnen av. I hovedsak er det bare en kopi. Men hvorfor ikke kalle det det, en kopi av databasen.

Databasen er lagret i forskjellige filer. Det avhenger av typen operativsystem, på versjonen av databasestyringssystemet osv. Derfor er det ganske vanskelig å finne alle filene til en database i systemet og overføre den til en annen. Fyllingen tjener til å lette denne oppgaven.

Formålet med fyllingen

Hvorfor flytte databasen?

  • Å lage sikkerhetskopier før du gjør grunnleggende endringer i strukturen på nettstedet. For eksempel ble en tredjepartskomponent installert, som et resultat av nettstedet ble ubrukelig og krever rask bedring verkene hans. Det er her en databasekrasjdump kommer inn i bildet.
  • Et nettsted opprettes som regel først på en lokal maskin under virtuell server, og deretter overføres den til hosting. Og hvis problemet med filer er mer eller mindre klart, så er ikke overføring av databasen en så åpenbar løsning. Og her igjen trenger du en databasedump.

Hvordan bruke dump. Vi vil vurdere en standardoppgave for webprogrammering: vi må overføre et nettsted opprettet på en lokal maskin til hosting. Hvordan overføre en MySql-database? Det er et phpMyAdmin-verktøy. Som regel må den installeres av leverandøren, og Denver må inkludere den. Du kan bruke den direkte i nettleseren, fordi den er skrevet i PHP.

Metode én

  • I nettleseren din, gå til phpMyAdmin-siden for den nødvendige databasen.
  • Gå til Eksporter-fanen på siden som åpnes.
  • Velg de nødvendige parameterne. Hvis du krysser av for "Legg til DROP DATABASE"-elementet, vil følgende skje når dumpen returneres tilbake til serveren: hvis en database med samme navn allerede eksisterer på serveren, vil den først bli slettet, og først deretter en eksportert en vil bli opprettet.
  • Komprimer filen ved hjelp av en arkiver for å redusere størrelsen på den nedlastede filen.
  • Hvis alt er riktig kontrollert, klikk OK.
  • Etter en stund vil et vindu dukke opp som ber deg laste ned databasedumpen.
  • For å eksportere en database til ny hosting, må du gå til Import-fanen, velg den resulterende dumpfilen og klikk OK.

Hvis operasjonen er vellykket, vises en melding som indikerer at databaseeksporten var vellykket. Ellers vil en feilmelding vises nedenfor.

Metode to

Den består av å importere en database fra kommandolinjen.

  • På kommandolinjen skriv inn: mysqdump min database - -user=brukernavn –passord>=mitt passord>my_dump.sql
  • Databasefilen vises. Fyllingen er klar.
  • For å gjenopprette en database fra en dump, må du kjøre kommandoen: Mysql -u brukernavn -p database

Etter å ha lest denne artikkelen, kan du finne ut hvordan du lager en dump selv.