Sikkerhedskopiering og gendannelse af MySQL-databaser (Windows-version)

Side opdateret :
Dato for oprettelse af side :

Driftsmiljø

MySQL
  • MySQL 8.0 Community Edition
Windows
  • Windows 11

Forudsætninger

MySQL
  • MySQL 8,0
Windows
  • Windows 11
  • Windows 10
Windows Server
  • Windows Server 2022
  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2

forudsætning

  • En database til MySQL er installeret.
  • Den database, der skal sikkerhedskopieres, findes allerede.
  • Du har indstillet miljøvariabler, så du kan køre mysql fra kommandoprompten.

Hvad er typerne af sikkerhedskopier?

Selvom det ikke diskuteres detaljeret her, har MySQL følgende typer sikkerhedskopier:

BackupkommandoerBackup datatyperBemærkninger
Mysqldump Logiske sikkerhedskopier En ældgammel backupmetode. GUI'en bruger også dette
MySQL-pumpe Logiske sikkerhedskopier Forbedret version af mysqldump
MySQL Shell Instance Dump Utility og Dump Loading Utility Logiske sikkerhedskopier Den seneste logiske backup i øjeblikket
Percona XtraBackup Fysiske sikkerhedskopier Tredjepartssupport til fysisk sikkerhedskopiering
KLON PLUGIN Fysiske sikkerhedskopier MySQL officielle fysiske sikkerhedskopier. Du skal dog tilføje et plug-in.

Sikkerhedskopiering af databaser med GUI (MySQL Workbench)

Hvis du vil fungere sikkert i GUI'en uden at bruge kommandoer, kan du sikkerhedskopiere med MySQL Workbench. Den type backup, der udføres af MySQL Workbench, vil være "mysqldump".

Start MySQL Workbench.

Vælg den forbindelse, der indeholder den database, du vil sikkerhedskopiere.

Når databasen skal sikkerhedskopieres, skal du vælge fanen Administration i navigatoren til venstre og derefter vælge Dataeksport.

Skærmbilledet Dataeksport åbnes. Skærmen er rimelig bred, så udvid vinduet, indtil du kan se knappen "Start eksport" nederst til højre.

Vælg først de databaser, du vil sikkerhedskopiere. Du kan også vælge mere end én.

I "Objekter, der skal eksporteres" kan du også vælge at sikkerhedskopiere procedurer og udløsere. Dette felt er valgfrit.

I "Eksportindstillinger" kan du vælge følgende to muligheder.

Type Beskrivelse
Eksporter for at dumpe projektmappe Skriv til en bestemt mappe som en tabel- eller procedurefil.
Eksporter til selvstændig fil Integrer alt i en enkelt fil og output.

Det betyder ikke noget, hvilken vej du udsender. Ovenstående valg er let at fjerne, hvis du kun vil gendanne en bestemt tabel. Valget nedenfor udsendes til en enkelt fil, hvilket gør det nemmere at flytte og administrere filer som en databaseenhed. I dette tilfælde har jeg valgt følgende.

Når du har indstillet indstillingerne, skal du klikke på knappen "Start eksport" i nederste højre hjørne for at starte eksporten.

Eksporten starter og fuldføres.

Hvis du udsender det som en enkelt fil, vil det se sådan ud:

Hvis du eksporterer til en mappe, vil den se sådan ud:

Gendannelse af en database med GUI (MySQL Workbench)

Åbn MySQL Workbench, vælg en forbindelse, vælg fanen Administration fra navigatoren til venstre, og vælg Dataimport/gendannelse. Som der står "Import / Restore", kan du oprette en ny database fra den eksporterede fil eller overskrive den originale database.

Udvid vinduet, indtil du ser knappen "Start import" i nederste højre hjørne.

Vælg "Importindstillinger" i henhold til det eksporterede filformat. Da jeg eksporterede som en enkelt fil denne gang, valgte jeg "Import fra selvstændig fil" nedenfor og specificerede den eksporterede fil.

Vælg det skema (database), du vil gendanne. Du kan gendanne til en eksisterende database eller gendanne den som en ny database fra knappen "Ny" til højre.

Når du har angivet specifikationerne, skal du klikke på knappen "Start import" nederst til højre for at starte restaureringen.

Når gendannelsen er fuldført, skal du sørge for, at dine data er tilbage.

Opret en konto til sikkerhedskopiering af database efter kommando

Der er ikke noget problem, hvis du udfører en enkelt kommando og sikkerhedskopierer den, men for eksempel, hvis du forbereder kommandoen som en fil på forhånd og udfører den, skal du skrive adgangskoden i almindelig tekst, så det er sikrere at oprette en separat konto til sikkerhedskopiering.

Nogle af de tilladelser, der kræves til sikkerhedskopiering, kan øges eller mindskes afhængigt af de krævede oplysninger.

  • HÆNDELSE
  • LÅS BORDE
  • MARKERE
  • VIS VISNING

Hvis du opretter det med en kommando, vil det se sådan ud. Brug kommandolinjeværktøjet MySQL.

create user '<ユーザー名>'@'<ホスト名>' identified by '<パスワード>';
GRANT EVENT, LOCK TABLES, SELECT, SHOW VIEW ON <データベース名>.* TO '<ユーザー名>'@'<ホスト名>';
flush privileges;

eksempel

create user 'backup_user'@'localhost' identified by 'password';
GRANT EVENT, LOCK TABLES, SELECT, SHOW VIEW ON test_database.* TO 'backup_user'@'localhost';
flush privileges;

Mappetilladelser til backupdestinationen

Tilladelserne til den mappe, hvor sikkerhedskopifilen er gemt, skal indstilles på samme måde som tilladelserne til udførelse af kommandoen. Hvis du kører kommandoen med administratorrettigheder, behøver du ikke angive yderligere tilladelser til mappen.

Sikkerhedskopiering af en database med kommandoen (mysqldump)

Der er flere backup ved kommando, men denne gang vil vi sikkerhedskopiere med "mysqldump", som har været brugt i lang tid og er stabil.

Højreklik på Start-menuen for at starte Terminal (kommandoprompt). Bemærk, at det ikke er "MySQL 8.0 Command Line Client".

Du kan sikkerhedskopiere det med følgende kommando:

mysqldump -u <ユーザー名> -p<パスワード> --no-tablespaces --single-transaction --triggers --routines --events --default-character-set=utf8 <データベース名> > "<バックアップファイルパス>"

eksempel

mysqldump -u backup_user -ppassword --no-tablespaces --single-transaction --triggers --routines --events --default-character-set=utf8 test_database > "C:\Temporary\Backup.sql"

  • --default-character-set=utf8 Hvis du angiver den samme tegnkode, som når du sikkerhedskopierer i GUI'en, vil den være den samme som ved sikkerhedskopiering i GUI'en. På denne måde kan du også importere det i GUI.
  • Medtag ikke mellemrum mellem adgangskodefeltet og -p adgangskoden.
  • Hvis du også vil udskrive oplysninger om tabelplads, --no-tablespaces skal du fjerne . I så fald skal tilladelserne for den kørende bruger være . PROCESS

Der oprettes en sikkerhedskopifil på det angivne sted.

Gendannelse af en database med kommandoen (mysqldump)

Filerne, der sikkerhedskopieres af mysqldump, er i et format, der kan udføres i SQL, så alt hvad du skal gøre er at udføre mål-SQL. Jeg tror, at de fleste gendannelser udføres manuelt, så der er ikke noget problem, hvis du kører det som root-kontoen.

Hvis du vil køre det fra en kommando, skal du køre det ved kommandoprompten i stedet for PowerShell. Dette skyldes, at symbolet ikke kan bruges i < PowerShell.

Kør følgende kommando:

mysql -u root -p<root のパスワード> <データベース名> < <バックアップした SQL のファイルパス>

eksempel

mysql -u root -ppassword test_database < C:\Temporary\Backup.sql

Automatiske sikkerhedskopier af databaser

For Windows er det almindeligt at bruge Task Scheduler. Opret først en batchfil. Opret en flagermusfil, indtast indholdet, som det blev sikkerhedskopieret af kommandoen, og gem det. Tegnkodning gemmes med Shift-JIS. Placeringen og filnavnet på batchfilen er vilkårlig.

Tilmeld dig Task Scheduler. Højreklik på Start-menuen, og vælg Computeradministration.

I menuen til venstre skal du vælge Computeradministration > Systemværktøjer > Opgavestyring > Opgavestyringbibliotek. Vælg "Opret opgave..." i menuen til højre.

Konfigurer fanen Generelt. "Navn" vises på listen over opgaver, så indtast et navn, der er let at forstå. I sikkerhedsindstillingerne skal du markere "Kør uanset om brugeren er logget på eller ej".

På fanen "Trigger" kan du indstille, hvornår sikkerhedskopieringen skal udføres. Indstil denne indstilling i henhold til din handling.

På fanen "Operation" skal du indstille den til at starte den batchfil, du lige har oprettet.

Når du har indstillet hver enkelt, skal du bekræfte med OK-knappen.

Indtast din adgangskode for at registrere dig for at køre under den angivne konto.

Kontroller derefter, om sikkerhedskopien udføres på det angivne tidspunkt.