Säkerhetskopiera och återställa MySQL-databaser för Windows
Miljö för driftbekräftelse
- MySQL (på engelska)
-
- MySQL 8.0 Community Edition
- Windows
-
- Windows 11 (på engelska)
Erforderlig miljö
- MySQL (på engelska)
-
- MySQL 8.0
- Windows
-
- Windows 11 (på engelska)
- Windows 10 (på engelska)
- Windows Server
-
- Windows Server 2022
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
förutsättning
- MySQL-databasen måste vara installerad
- Databasen som ska säkerhetskopieras finns redan
- Konfigurera miljövariabler och låt dig köra MySQL från kommandotolken
Om typer av säkerhetskopiering
Jag kommer inte att gå in på detaljer här, men MySQL har följande typer av säkerhetskopior:
Säkerhetskopieringskommando | Säkerhetskopiera datatyp | Kommentarer |
---|---|---|
mysqldump | Logisk säkerhetskopiering | En gammal metod för säkerhetskopiering. Användargränssnittet använder också detta |
mysqlpump | Logisk säkerhetskopiering | Förbättrad version av mysqldump |
MySQL Shell Instance Dump Utility och Dump Loading Utility | Logisk säkerhetskopiering | Som en logisk backup är det den senaste för tillfället |
Percona XtraBackup | Fysisk säkerhetskopiering | Produkter från tredje part som möjliggör fysisk säkerhetskopiering |
CLONE PLUGIN | Fysisk säkerhetskopiering | MySQL officiell fysisk säkerhetskopiering. Ytterligare plugins krävs dock |
Säkerhetskopiera en databas med ett GUI (MySQL Workbench)
Om du vill arbeta säkert i GUI utan att använda kommandon kan du utföra en säkerhetskopiering i MySQL Workbench. Den typ av säkerhetskopiering som utförs i MySQL Workbench är "mysqldump".
Starta MySQL Workbench.
Välj anslutningen till den databas som du vill säkerhetskopiera.
När databasen ska säkerhetskopieras väljer du fliken Administration i Navigatören till vänster och väljer Dataexport.
Skärmen Dataexport öppnas. Skärmen är ganska stor, så expandera fönstret tills du ser knappen "Starta export" i det nedre högra hörnet.
Välj först den databas som du vill säkerhetskopiera. Du kan också välja fler än en.
I "Objekt att exportera" kan du välja om du vill säkerhetskopiera procedurer, triggers etc. också. Det här alternativet är valfritt.
I "Exportalternativ" kan du välja mellan följande två alternativ:
Beskrivning av typer | |
---|---|
Exportera till dumpa projektmapp | Utdata som en tabell eller procedur-för-procedur-fil i en viss mapp. |
Exportera till fristående fil | Bädda in allt i en enda fil och mata ut den. |
Det spelar ingen roll vilken du matar ut. Om du väljer ovan är det enkelt eftersom du enkelt kan ta bort det om du bara vill återställa en specifik tabell. Följande markeringar matas ut till en enda fil, vilket gör det enklare att flytta och hantera filer som en databasenhet. Den här gången har jag valt ut följande.
När du har konfigurerat klickar du på Starta export knappen längst ner till höger för att börja exportera.
Exporten startar och slutförs.
Om du matar ut i en enda fil kommer den att se ut så här:
Om du exporterar till en mapp kommer den att se ut så här:
Återställa en databas med ett grafiskt användargränssnitt (MySQL Workbench)
Öppna MySQL Workbench, välj dina anslutningar, välj fliken Administration från Navigatören till vänster och välj Dataimport/Återställ. Eftersom det står "Importera/återställ" kan du skapa en ny databas från den exporterade filen eller skriva över den ursprungliga databasen.
Expandera fönstret tills du ser knappen "Starta import" i det nedre högra hörnet.
Välj "Importalternativ" enligt det exporterade filformatet. Eftersom jag exporterade den som en enda fil den här gången har jag valt "Importera från fristående fil" nedan och angett den exporterade filen.
Välj det schema (databas) som ska återställas. Du kan återställa till en befintlig databas, eller så kan du återställa den som en ny databas från knappen "ny" till höger.
När du har angett klickar du på knappen "Starta import" i det nedre högra hörnet för att starta återställningen.
Se till att dina data är tillbaka när återställningen är klar.
Skapa ett konto för säkerhetskopiering av databasen via kommandot
Det är inga problem om du vill köra ett kommando för att säkerhetskopiera en gång, men om du till exempel förbereder ett kommando som en fil i förväg och kör det måste du skriva lösenordet i klartext, så det är säkrare att skapa ett separat konto för att köra säkerhetskopieringen.
De behörigheter som krävs för säkerhetskopiering är följande, men kan öka eller minska beroende på vilken information som krävs.
- HÄNDELSE
- LÅS BORD
- UTVALD
- VISA VYN
Om du skapar den med ett kommando kommer den att se ut så här: Kör det med kommandoradsverktyget MySQL.
create user '<ユーザー名>'@'<ホスト名>' identified by '<パスワード>';
GRANT EVENT, LOCK TABLES, SELECT, SHOW VIEW ON <データベース名>.* TO '<ユーザー名>'@'<ホスト名>';
flush privileges;
exempel
create user 'backup_user'@'localhost' identified by 'password';
GRANT EVENT, LOCK TABLES, SELECT, SHOW VIEW ON test_database.* TO 'backup_user'@'localhost';
flush privileges;
Mappbehörigheter för destination för säkerhetskopiering
Behörigheterna för mappen där säkerhetskopian lagras måste ställas in på samma behörighet som behörigheten att utföra kommandot. Om du vill köra kommandon med administratörsbehörighet behöver du inte ange några ytterligare behörigheter för mappen.
Säkerhetskopiera en databas med kommandot (mysqldump)
Det finns flera kommandobackuper, men den här gången kommer jag att säkerhetskopiera med den gamla och stabila "mysqldump".
Högerklicka på Start-menyn och starta Terminal (kommandotolken). Observera att det inte är en "MySQL 8.0 Command Line Client".
Du kan säkerhetskopiera den med följande kommando:
mysqldump -u <ユーザー名> -p<パスワード> --no-tablespaces --single-transaction --triggers --routines --events --default-character-set=utf8 <データベース名> > "<バックアップファイルパス>"
exempel
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
kommer att vara samma teckenkod som när den säkerhetskopieras i GUI. Detta gör att du kan importera dem till GUI också.- Lägg inte till ett mellanslag mellan lösenordsfältet
-p
och lösenordet.- Om du också vill mata ut tabellutrymmesinformation,
--no-tablespaces
avmarkera . I så fall krävs behörigheterPROCESS
för körningsanvändaren.
En säkerhetskopia kommer att skapas på den angivna platsen.
Återställa en databas med kommandot (mysqldump)
Filerna som säkerhetskopieras med mysqldump är i ett format som kan köras i SQL, så du behöver bara köra mål-SQL. Jag tror att återställningen ofta görs manuellt, så det är okej att köra den på root-kontot.
Om du vill köra den från ett kommando kör du den i kommandotolken i stället för PowerShell. Det beror <
på att PowerShell inte tillåter symboler.
Kör följande kommando:
mysql -u root -p<root のパスワード> <データベース名> < <バックアップした SQL のファイルパス>
exempel
mysql -u root -ppassword test_database < C:\Temporary\Backup.sql
Automatisk säkerhetskopiering av databasen
För Windows är det vanligt att använda en schemaläggare. Börja med att skapa en batchfil. Skapa en bat-fil, ange innehållet som det säkerhetskopierades med kommandon och spara det. Spara teckenkoder med Shift-JIS. Platsen och filnamnet för kommandofilen kan vara godtyckliga.
Registrera dig hos schemaläggaren. Högerklicka på Start-menyn och välj "Hantera dator".
I den vänstra menyn väljer du Datorhantering > Systemverktyg > Schemaläggaren > Bibliotek för schemaläggaren. Välj Skapa uppgift på menyn till höger.
Ställ in fliken Allmänt. "Namnet" kommer att visas i uppgiftslistan, så sätt ett namn som är lätt att förstå. I säkerhetsalternativen markerar du "Kör oavsett om användaren är inloggad eller inte".
Fliken Utlösare anger när säkerhetskopieringen ska utföras. Denna inställning bör ställas in enligt din operation.
På fliken Åtgärder anger du att den batchfil som du just skapade ska starta.
När du har ställt in var och en av dem, bekräfta dem med OK-knappen.
Ange ditt lösenord för att registrera dig för att köra på det angivna kontot.
Kontrollera nu om säkerhetskopieringen kommer att köras vid den angivna tiden.