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
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ưumysqldump --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ưumysqldump --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ưumysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
6 hoặcmysqldump --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ệumysqldump --host=dbfmylast --user=root --port=3306 --p --all-databases > D:\backup_all_databases.sql
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
9Tiế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
3mysqldump để 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
5mysqldump --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 sakilamysqldump --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
7mysqldump --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ệpmysqldump để 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 saumysqldump --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 sakilamysqldump --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
1Trướ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ệumysql --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
4Ghi 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 đâymysql> 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