Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Eksportuj bazę danych MySQL lub MariaDB

Regularne wykonywanie kopii zapasowej bazy danych to jeden z kluczowych kroków po uruchomieniu projektu. Częstotliwość tworzenia kopii zapasowych może wynosić raz dziennie lub tydzień. Codzienna kopia zapasowa jest preferowana w przypadku aplikacji, w których zmiany bazy danych są częstsze. W przypadku baz danych o wysokiej dostępności należy rozważyć odpowiednią konfigurację klastra zamiast skalowania pionowego. Ten samouczek wyjaśnia użycie mysqldump polecenie, aby wykonać kopię zapasową bazy danych. To samo polecenie można zautomatyzować, aby wykonać zaplanowane kopie zapasowe.

Notatki :Ten samouczek obejmuje tylko najczęściej używane opcje z mysqldump Komenda. Możesz również zapoznać się z oficjalną dokumentacją, aby poznać wszystkie możliwe opcje. Te same polecenia mogą być użyte do wykonania kopii zapasowej serwerów baz danych MySQL i MariaDB.

Lokalna kopia zapasowa

Kopia zapasowa - Ta sekcja wyjaśnia tworzenie lokalnej kopii zapasowej w pliku poprzez eksportowanie jednej lub wielu baz danych.

Uprawnienia - mysqldump wymaga wymienionych poniżej uprawnień do eksportu bazy danych. Konto użytkownika używanego do eksportu bazy danych musi mieć odpowiednie uprawnienia.

  • SELECT - aby zrzucić tabele
  • POKAŻ WIDOK – aby zrzucić widoki
  • TRIGGER - aby zrzucić wyzwalacze
  • LOCK TABLES - w przypadku, gdy opcja --single-transaction nie jest używana

Polecenie - Poniżej wymieniono użycie mysqldump polecenie, aby wykonać lokalną kopię zapasową zarówno dla systemów opartych na systemie Windows, jak i Linux, w tym Ubuntu. Potrójne kropki oznaczają, że można podać wiele wartości.

# Regular command - Usage - Windows, Linux
mysqldump [options] db_name [tbl_name ...] > <file path>
mysqldump [options] --databases db_name ... > <file path>
mysqldump [options] --all-databases > <file path>

Przykłady użycia zwykłego polecenia są wymienione poniżej. Te przykładowe polecenia używają użytkownika enterprise do wykonywania kopii zapasowych bazy danych przedsiębiorstwa . Nie ma potrzeby określania użytkownika i hasła w przypadku, gdy konto użytkownika korzysta z auth_socket algorytm logowania do serwera MySQL. Użytkownik systemu ma bezpośredni dostęp do bazy danych. Możesz zapoznać się z artykułem Jak używać natywnego hasła w MySQL 5.7 i Jak zainstalować MySQL 8 na Ubuntu, aby dowiedzieć się więcej o algorytmach haseł.

Notatki :Nie ma potrzeby używania opcji -p, w przypadku gdy żadne hasło nie jest przypisane do użytkownika.

Poniżej wymienione są przykłady tworzenia kopii zapasowej pojedynczej bazy danych z nazwą użytkownika, hostem i portem. Hasło nie należy podawać z tymi poleceniami ze względów bezpieczeństwa. Możesz określić hasło dla mysqldump w pliku konfiguracyjnym, który jest uważany za bezpieczną opcję dla cron Oferty pracy. Inną opcją jest użycie polecenia cat, aby użyć zaszyfrowanego hasła (podobnie jak Plesk), jak pokazano w przykładach. System poprosi o hasło, jeśli nie zostanie ono podane w poleceniu. Tych poleceń można użyć do wyeksportowania całej bazy danych lub pojedynczych lub wielu tabel.

# All tables - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise > enterprise.sql

# All tables - with username, with password - insecure
mysqldump -u enterprise -p'mypwd' enterprise > enterprise.sql

# All tables - with username, with password - Plesk way
mysqldump -u enterprise -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql

# All tables - with host, with port, with username, without password - prompts for password
mysqldump -h localhost -p 3306 -u enterprise -p enterprise > enterprise.sql

# Single table(user) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise [user] > enterprise.sql

# Multiple tables(user, profile) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise user profile > enterprise.sql

Poniżej wymienione są przykłady tworzenia kopii zapasowych wielu baz danych z nazwą użytkownika, hostem i portem.

# Multiple databases - with username, without password - prompts for password
mysqldump -u enterprise -p --databases enterprise vblog mshop > mydbs.sql

# Multiple databases - with username, with password
mysqldump -u enterprise -p'mypwd' --databases enterprise vblog mshop > mydbs.sql

Poniżej znajduje się przykład tworzenia kopii zapasowych wszystkich baz danych z nazwą użytkownika, hostem i portem.

# All databases - with username, without password - prompts for password
mysqldump -u enterprise -p --all-databases > mydbs.sql

# All databases - with username, with password
mysqldump -u enterprise -p'mypwd' --all-databases > mydbs.sql

Użytkownicy PowerShell w systemie Windows będą potrzebować innego polecenia, jak wspomniano poniżej.

# PowerShell on Windows
shell> mysqldump [options] db_name [tbl_name ...] --result-file=<file path>
shell> mysqldump [options] --databases db_name ... --result-file=<file path>
shell> mysqldump [options] --all-databases --result-file=<file path>

# Example
shell> mysqldump -u enterprise -p enterprise --result-file=mydump.sql

Wyżej wymienione polecenia wyeksportują wybraną bazę danych i tabele do lokalizacji pliku określonej w poleceniu.

Kopia zapasowa bazy danych

W tej sekcji wyjaśniono przenoszenie kopii zapasowej bazy danych do innej bazy danych używanej do celów tworzenia kopii zapasowej przy użyciu potoków powłoki. Możemy wyeksportować bazę danych do pliku lokalnego, a następnie użyć tego pliku do zaimportowania do innej bazy danych lub bezpośrednio wyeksportować do innej bazy danych za pomocą rur osłonowych.

Poniższe polecenie służy do wyeksportowania bazy danych bezpośrednio do innej bazy danych. Upewnij się również, że masz dostęp do obu serwerów przed wykonaniem polecenia.

# Export database to another database - Same server
mysqldump -u enterprise -p enterprise | mysql enterprise_backup

# Export database to another database - Different server
mysqldump -u enterprise -p enterprise | mysql -h host.example.com -p 3306 enterprise

W ten sposób możemy wyeksportować lub wykonać kopię zapasową bazy danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać łączną liczbę użytkowników dziennie w MySQL?

  2. Jak działa funkcja FROM_BASE64() w MySQL

  3. Jak mogę zaimportować bazę danych z MySQL z terminala?

  4. Używanie instrukcji IF w zapytaniu MySQL SELECT

  5. Czy istnieje RZECZYWISTA różnica wydajności między kluczami podstawowymi INT i VARCHAR?