Làm cách nào bạn có thể sao lưu toàn bộ cơ sở dữ liệu bằng Mysqldump?

Bài viết cung cấp tổng quan về các loại sao lưu có sẵn trong MySQL và mô tả các ví dụ hướng dẫn cách sử dụng tiện ích dòng lệnh mysqldump để sao lưu cơ sở dữ liệu, bảng, dữ liệu hoặc lược đồ và để khôi phục cơ sở dữ liệu MySQL

Ngoài ra, bạn có thể xem cách tạo bản sao lưu cơ sở dữ liệu bằng MySQL Workbench và cách thực hiện tác vụ tương tự đơn giản và nhanh chóng bằng công cụ kết xuất MySQL có sẵn trong dbForge Studio dành cho MySQL

nội dung

Các loại sao lưu trong MySQL

Trong MySQL, có nhiều loại sao lưu khác nhau. Lựa chọn chiến lược sao lưu nào tùy thuộc vào một số yếu tố, ví dụ: kích thước dữ liệu, phần cứng bạn sử dụng, hiệu suất bạn muốn đạt được, dung lượng lưu trữ của cơ sở dữ liệu, v.v. Ngoài ra, bạn nên xem xét sẽ mất bao nhiêu thời gian để khôi phục bản sao lưu

MySQL hỗ trợ các loại sao lưu sau

  • Sao lưu logic xuất ra một cấu trúc cơ sở dữ liệu trong một. sql bằng cách tạo các câu lệnh CREATE hoặc INSERT. Sau đó, tệp này có thể được khôi phục với sự trợ giúp của tiện ích mysqldump. Loại này chỉ sao lưu dữ liệu không có chỉ mục nên dung lượng nhỏ. Tuy nhiên, tùy chọn khôi phục của nó chậm hơn so với các tùy chọn thay thế, bởi vì nó phải thực hiện từng câu lệnh một
  • Sao lưu vật lý sao chép các tệp cơ sở dữ liệu ở cùng định dạng mà chúng được lưu trữ trên đĩa. Nó nhanh hơn loại logic nhưng chỉ có thể được khôi phục cho máy chủ MySQL từ cùng một công cụ cơ sở dữ liệu
  • Sao lưu nhất quán sao chép các tệp vào thời điểm chính xác – chỉ sau khi máy chủ ngừng chạy hoặc bị khóa

Nếu có thể xảy ra một số gián đoạn trong quá trình sao chép, các bản sao lưu có thể được chia thành các loại sau

  • Sao lưu lạnh chặn quyền truy cập vào dữ liệu trong quá trình sao lưu và không cho phép thực hiện bất kỳ thay đổi nào đối với dữ liệu. Nó đơn giản, nhanh chóng và không ảnh hưởng đến hiệu suất
  • Sao lưu nóng sao chép tệp trong khi cơ sở dữ liệu đang chạy. Người dùng có thể đọc và thao tác dữ liệu
  • Sao lưu ấm tạo một bản sao cơ sở dữ liệu trong khi nó đang chạy. Người dùng có thể đọc nhưng không thể ghi dữ liệu trong quá trình sao lưu

Cho dù dữ liệu nên được sao chép toàn bộ hay một phần, các bản sao lưu có thể được phân loại thành

  • Sao lưu toàn bộ sao chép tất cả dữ liệu từ cơ sở dữ liệu. Nó có thể là logic hoặc vật lý. Bản sao lưu đầy đủ có thể được khôi phục trên một máy chủ khác
  • Sao lưu khác biệt sao chép tất cả các thay đổi đã được thực hiện kể từ lần sao lưu đầy đủ mới nhất. Sao lưu vi sai chỉ có thể được khôi phục sau khi sao lưu đầy đủ được khôi phục
  • Sao lưu gia tăng sao chép tất cả các thay đổi dữ liệu được thực hiện kể từ lần sao lưu trước đó [đầy đủ hoặc chênh lệch]

Sao lưu cơ sở dữ liệu MySQL bằng lệnh mysqldump

Để sao lưu cơ sở dữ liệu MySQL, bạn có thể sử dụng công cụ của bên thứ ba hoặc thực thi lệnh mysqldump từ dòng lệnh

mysqldump là một tiện ích dòng lệnh được sử dụng để tạo bản sao lưu cơ sở dữ liệu logic MySQL. Nó tạo ra một. tệp sql chứa một tập hợp các câu lệnh SQL. Tệp này có thể được sử dụng để tạo bảng, đối tượng và/hoặc chèn dữ liệu đã được sao chép từ cơ sở dữ liệu. Với tiện ích này, bạn có thể kết xuất các bảng, một hoặc một số cơ sở dữ liệu hoặc toàn bộ máy chủ với tất cả các cơ sở dữ liệu và bảng cùng với các đối tượng của chúng hoặc di chuyển chúng sang một máy chủ khác

Ngoài ra, tiện ích mysqldump có thể xuất kết xuất sang định dạng tệp CSV hoặc XML. Cần lưu ý rằng mysqldump không thể kết xuất cơ sở dữ liệu hoặc dữ liệu để tách. tập tin sql

Để khôi phục cơ sở dữ liệu, tiện ích sẽ thực thi tất cả các câu lệnh SQL để tạo lại các bảng và điền dữ liệu vào chúng, điều này đòi hỏi rất nhiều thời gian

Cú pháp cơ bản của lệnh mysqldump bao gồm các tham số sau

mysqldump -u [user name] –p [password] -h [host name] [options] [database_name] [tablename] > [dumpfilename.sql]
  • -u [hoặc --user=[username]] là tên người dùng để kết nối với máy chủ MySQL
  • mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
    0 là mật khẩu cho tên người dùng bạn sử dụng để kết nối với máy chủ
  • mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
    1 [
    mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
    2 ] là tên của máy chủ bạn muốn kết nối để kết xuất dữ liệu từ đó
  • mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
    3 là các tham số bổ sung để định cấu hình sao lưu
  • mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
    4 là tên của cơ sở dữ liệu bạn muốn sao lưu
  • mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
    5 là tên bảng mà bạn muốn sao lưu
  • mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
    6 hoặc
    mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
    7 là các tham số biểu thị quá trình sao lưu cơ sở dữ liệu [>] hoặc khôi phục [ D:\backup_all_databases.sql8 là đường dẫn đến tệp kết xuất chứa bản sao lưu cơ sở dữ liệu

Ghi chú. Theo quy định, 

mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
9 nằm trong thư mục cài đặt Máy chủ MySQL. Ví dụ: đối với MySQL 8. 0, đường dẫn đến thư mục là C. \Tệp chương trình\MySQL\MySQL Server 8. 0\bin. Vì vậy, chúng tôi khuyên bạn nên thêm thư mục này vào lệnh
mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
9

Tiếp theo, chúng ta hãy xem xét kỹ hơn các ví dụ mô tả cách sao lưu cơ sở dữ liệu MySQL bằng tiện ích dòng lệnh mysqldump

Đối với mục đích demo, chúng tôi sẽ kết nối với máy chủ từ xa dbfmylast. Đó là lý do tại sao chúng tôi sẽ thêm một số thông tin bổ sung vào lệnh

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
1, chẳng hạn như tham số
mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
2 và
mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
3

mysqldump để sao lưu tất cả cơ sở dữ liệu

Ví dụ cho thấy cách sử dụng

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
1 để sao lưu tất cả cơ sở dữ liệu MySQL trên máy chủ. Các tập lệnh của cơ sở dữ liệu được xuất sang. sql mà sau này bạn có thể sử dụng để di chuyển cơ sở dữ liệu sang một máy chủ mới. Để biết thêm thông tin, hãy xem Sao lưu tất cả cơ sở dữ liệu máy chủ MySQL hoặc chỉ những cơ sở dữ liệu cần thiết

Để tạo bản sao lưu của tất cả cơ sở dữ liệu, hãy thực hiện lệnh sau bằng cách thêm tham số

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
5

mysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql

Điều này sẽ tạo bản sao lưu của tất cả các cơ sở dữ liệu với cấu trúc và dữ liệu của chúng vào backup_all_databases. tập tin sql

mysqldump chỉ sao lưu dữ liệu

Nếu bạn muốn sao lưu dữ liệu mà không có cấu trúc cơ sở dữ liệu, hãy thực hiện lệnh với tham số

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
6. Ví dụ: kết xuất dữ liệu cho cơ sở dữ liệu sakila

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql

Tệp sẽ xuất tập lệnh chỉ chứa dữ liệu bảng kết xuất

mysqldump để chỉ sao lưu cấu trúc

Có thể có trường hợp bạn cần xuất cơ sở dữ liệu hoặc cấu trúc bảng mà không có dữ liệu. Để hoàn thành việc đó, hãy chạy lệnh với tham số

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
7

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-data sakila > D:\backup_database_structure_only.sql

Lệnh

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
1 chỉ xuất cấu trúc bảng vào tệp

mysqldump để sao lưu tất cả các bảng trong cơ sở dữ liệu

Lệnh

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
1 có thể tạo bản sao lưu của tất cả hoặc các bảng cụ thể trong cơ sở dữ liệu bằng cách thêm tên bảng đã chọn vào lệnh. Hãy nhớ rằng tên của các bảng nên được phân tách bằng dấu cách. Ví dụ: kết xuất các bảng danh mục, thành phố và quốc gia bằng cách chạy lệnh sau

mysqldump --host=dbfmylast --user=root --port=3306 -p sakila city country category > D:\backup_selected_tables.sql

Đầu ra như sau

mysqldump để sao lưu một bảng

Để sao lưu một bảng duy nhất trong cơ sở dữ liệu, hãy cho biết tên của bảng cụ thể trong lệnh

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
1. Ví dụ: kết xuất bảng kiểm kê từ cơ sở dữ liệu sakila

mysqldump --host=dbfmylast --user=root --port=3306 -p sakila inventory > D:\backup_single_table.sql

Tập lệnh sao lưu chỉ xuất cấu trúc và dữ liệu cho bảng kiểm kê

MySQL Workbench để sao lưu cơ sở dữ liệu

Trong phần này, chúng ta sẽ kiểm tra cách tạo bản sao lưu cơ sở dữ liệu bằng công cụ MySQL Workbench

Để tạo bản sao lưu cơ sở dữ liệu, hãy làm như sau

1. Trên bảng Quản trị, nhấp vào Xuất dữ liệu. Tài liệu Quản trị – Xuất dữ liệu mở ra

2. Trên tab Chọn đối tượng > Bảng để xuất, hãy chọn lược đồ sakila

3. Trong Tùy chọn Xuất, hãy chọn Xuất sang Thư mục Dự án Kết xuất nếu bạn muốn các bảng cơ sở dữ liệu được lưu trữ riêng biệt. sql hoặc Export to Self-Contained File để lưu trữ kết xuất cơ sở dữ liệu trong một tệp duy nhất. tập tin sql

4. Để tạo tệp sao lưu, hãy nhấp vào Bắt đầu xuất. Trên thanh tiến trình, bạn có thể xem dữ liệu đã được xuất sang tệp đã chỉ định

Ghi chú. Với MySQL Workbench, không thể tự động hóa hoặc lên lịch sao lưu cơ sở dữ liệu

Cách sao lưu cơ sở dữ liệu bằng dbForge Studio cho MySQL

Bây giờ, hãy xem việc tạo bản sao lưu cơ sở dữ liệu bằng dbForge Studio cho MySQL dễ dàng và nhanh như thế nào. Nó là một công cụ MySQL GUI đa năng để phát triển, quản lý và điều hành cơ sở dữ liệu MariaDB và MySQL. IDE này có thể tăng năng suất, tối ưu hóa hiệu suất truy vấn, so sánh và đồng bộ hóa cơ sở dữ liệu một cách hiệu quả, tự động hóa và lên lịch sao lưu cơ sở dữ liệu

Với công cụ sao lưu MySQL, được tích hợp trong dbForge Studio cho MySQL, bạn có thể sao lưu và khôi phục cơ sở dữ liệu MySQL một cách hiệu quả và nhanh nhất

Để tạo bản sao lưu cho cơ sở dữ liệu, hãy mở công cụ và kết nối với máy chủ MySQL. Trong Database Explorer, nhấp chuột phải vào cơ sở dữ liệu bạn muốn sao lưu và chọn Sao lưu và khôi phục > Sao lưu cơ sở dữ liệu

Trong Trình hướng dẫn sao lưu cơ sở dữ liệu mở ra, hãy chỉ định kết nối, cơ sở dữ liệu, vị trí lưu trữ tệp đầu ra và đặt tên cho tệp này

Trên tab Nội dung sao lưu, chọn xem bạn muốn sao lưu cấu trúc cơ sở dữ liệu hay dữ liệu hay cả hai, rồi chọn các đối tượng cơ sở dữ liệu

Trên tab Tùy chọn, đặt các tùy chọn bổ sung sẽ xử lý quá trình sao lưu

Nếu bạn muốn định cấu hình hành vi xử lý lỗi và các tùy chọn ghi nhật ký, hãy chuyển sang tab Xử lý lỗi và thiết lập các tùy chọn. Để khởi chạy sao lưu cơ sở dữ liệu, hãy nhấp vào Sao lưu. Sau khi quá trình hoàn tất, bạn sẽ thấy thông báo tương ứng và có thể đóng trình hướng dẫn

Khôi phục cơ sở dữ liệu trong MySQL từ tệp

Bây giờ, hãy khôi phục cơ sở dữ liệu sakila từ. tệp đầu ra sql bằng cách sử dụng tiện ích

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-create-info sakila > D:\backup_data_only.sql
1

Trước tiên, bạn cần tạo một cơ sở dữ liệu trống trên máy chủ mục tiêu và khôi phục cơ sở dữ liệu bằng cách sử dụng lệnh

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-data sakila > D:\backup_database_structure_only.sql
2 để tạo một lược đồ có dữ liệu

mysql --host=dbfmylast --user=root --port=3306 -p sakila < D:\dumps\sakila.sql

trong đó

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-data sakila > D:\backup_database_structure_only.sql
3 là cơ sở dữ liệu trống sẽ chứa cấu trúc cơ sở dữ liệu có dữ liệu sau khi nhập từ tệp sao lưu
mysqldump --host=dbfmylast --user=root --port=3306 -p --no-data sakila > D:\backup_database_structure_only.sql
4

Ghi chú. Nếu có một cơ sở dữ liệu có cùng tên trên máy chủ đích, thì trước tiên, bạn cần bỏ nó và sau đó tạo một cơ sở dữ liệu trống

Để xem danh sách các bảng nằm trong cơ sở dữ liệu sakila, hãy thực hiện lệnh

mysqldump --host=dbfmylast --user=root --port=3306 -p --no-data sakila > D:\backup_database_structure_only.sql
2 sau đây

mysql> use sakila;
...
mysql> show tables;

Kết luận

Trong bài viết, chúng tôi đã đề cập đến các loại sao lưu trong MySQL, cung cấp các ví dụ về cách sao lưu tất cả cơ sở dữ liệu, dữ liệu hoặc cấu trúc cơ sở dữ liệu và bảng, cũng như cách khôi phục cơ sở dữ liệu bằng tiện ích mysqldump. Ngoài ra, chúng tôi đã kiểm tra cách tạo bản sao lưu cơ sở dữ liệu bằng MySQL Workbench và dbForge Studio cho MySQL

Tải xuống phiên bản dùng thử miễn phí 30 ngày để đánh giá các tính năng của dbForge Studio dành cho MySQL. Sau khi nó hết hạn, hãy xem xét việc mua giấy phép đầy đủ của công cụ để tăng gấp đôi năng suất của bạn trong quá trình sao lưu/khôi phục cơ sở dữ liệu MySQL cũng như các hoạt động quản lý và phát triển cơ sở dữ liệu khác. Ngoài ra, bạn có thể xem video hướng dẫn này

Làm cách nào để sao lưu và khôi phục cơ sở dữ liệu MySQL bằng lệnh mysqldump?

Sao lưu Cơ sở dữ liệu MySQL bằng mysqldump qua Dòng lệnh .
-u [database_username]. Tên người dùng để kết nối với máy chủ MySQL
-p [cơ sở dữ liệu_mật khẩu]. Mật khẩu của tên người dùng cơ sở dữ liệu
[tên cơ sở dữ liệu]. Tên của cơ sở dữ liệu mà bạn muốn sao lưu

Làm thế nào bạn có thể sao lưu cơ sở dữ liệu?

Để sao lưu cơ sở dữ liệu của bạn, hãy làm theo các bước sau. .
Khởi chạy SQL Server Management Studio [SSMS] và kết nối với phiên bản SQL Server của bạn
Mở rộng nút Cơ sở dữ liệu trong Object Explorer
Bấm chuột phải vào cơ sở dữ liệu, di chuột qua Nhiệm vụ và chọn Sao lưu
Trong Đích, hãy xác nhận rằng đường dẫn cho bản sao lưu của bạn là chính xác

Loại sao lưu nào được thực hiện bởi Mysqldump?

Sao lưu logic được thực hiện với máy chủ MySQL đang chạy. Máy chủ không được đưa vào ngoại tuyến. Các công cụ sao lưu hợp lý bao gồm chương trình mysqldump và SELECT. Câu lệnh INTO OUTFILE

Lệnh nào được sử dụng để kết xuất toàn bộ cơ sở dữ liệu?

Lệnh mysqldump cho phép bạn chỉ định một hoặc nhiều cơ sở dữ liệu để sao lưu. Như bạn có thể thấy từ cú pháp bên dưới, bạn phải chỉ định đối số --databases hoặc -B theo sau là danh sách cơ sở dữ liệu trong cùng một dòng. Ghi chú. Phương pháp này sao lưu mọi cơ sở dữ liệu được chỉ định vào một tệp sao lưu

Chủ Đề