MongoDB sao lưu cơ sở dữ liệu lớn

Phổ biến đối với cả doanh nghiệp và công ty mới thành lập, MongoDB là một cơ sở dữ liệu hoàn toàn phù hợp cho các ứng dụng web cần mở rộng quy mô khi cơ sở người dùng tăng lên. MongoDB khác với cơ sở dữ liệu quan hệ truyền thống vì nó sử dụng các đối tượng giống như json để lưu trữ dữ liệu, thay vì các bảng trong cơ sở dữ liệu quan hệ.  

Trong bài đăng này, chúng ta sẽ học cách sao lưu và khôi phục cơ sở dữ liệu MongoDB. Trong tất cả các sản phẩm phần mềm đều có tính năng nhập và xuất, theo thuật ngữ cơ sở dữ liệu, tính năng này xử lý định dạng mà con người có thể đọc được. Mặt khác, các hoạt động sao lưu và khôi phục sử dụng dữ liệu cụ thể của MongoDB, dữ liệu này bảo toàn các thuộc tính MongoDB.   

Vì vậy, khi di chuyển cơ sở dữ liệu, chúng ta nên sao lưu và khôi phục hơn là nhập và xuất. Nhưng chúng ta cũng nên nhớ rằng hệ thống nguồn và hệ thống đích của chúng ta cần phải tương thích, có nghĩa là cả hai phải là Windows hoặc cả hai phải là hệ thống dựa trên Linux như Ubuntu/Mac.  

điều kiện tiên quyết

Chúng tôi đang sử dụng Windows 10 trong hướng dẫn này. Vui lòng đảm bảo rằng bạn đã tải xuống Máy chủ cộng đồng MongoDB và cài đặt nó. Đây là một thiết lập rất dễ dàng và bạn sẽ tìm thấy rất nhiều bài viết hay trên internet trình bày chi tiết về điều này. Vui lòng đảm bảo rằng bạn đã thêm nó vào biến Môi trường trong PC của mình.  

Cân nhắc dự phòng

Trong môi trường sản xuất, các bản sao lưu hoạt động như một ảnh chụp nhanh cơ sở dữ liệu tại một điểm nhất định. Cơ sở dữ liệu lớn và phức tạp không thành công hoặc có thể bị tấn công. Nếu điều đó xảy ra, chúng tôi có thể sử dụng tệp sao lưu cuối cùng để khôi phục cơ sở dữ liệu về điểm trước khi không thành công. Đây là một số yếu tố cần được xem xét khi thực hiện khôi phục.  

1. Mục tiêu điểm phục hồi

Chúng ta nên biết mục tiêu của điểm khôi phục, có nghĩa là chúng ta sẵn sàng mất bao nhiêu dữ liệu trong quá trình sao lưu và khôi phục. Ưu tiên sao lưu liên tục cho dữ liệu quan trọng như thông tin ngân hàng và nên thực hiện sao lưu nhiều lần trong ngày. Mặt khác, nếu dữ liệu không thay đổi thường xuyên thì bạn có thể thực hiện sao lưu 6 tháng một lần.  

2. Mục tiêu thời gian phục hồi

Điều này cho biết quá trình khôi phục có thể được thực hiện nhanh như thế nào. Trong quá trình khôi phục, ứng dụng sẽ ngừng hoạt động một thời gian; .  

3. Cách ly cơ sở dữ liệu và ảnh chụp nhanh

Điều này đề cập đến khoảng cách giữa máy chủ cơ sở dữ liệu chính và máy chủ dự phòng. Nếu họ đủ gần tôi. e. , trong cùng một tòa nhà, thì thời gian phục hồi sẽ giảm. Tuy nhiên, trong trường hợp xảy ra sự kiện vật lý như hỏa hoạn, có khả năng nó đã bị phá hủy cùng với cơ sở dữ liệu chính

4. Quá trình phục hồi

Chúng ta phải luôn kiểm tra các bản sao lưu của mình trong các máy chủ thử nghiệm để xem chúng có hoạt động không, trong trường hợp khôi phục là bắt buộc.  

5. Bộ nhớ khả dụng

Sao lưu cơ sở dữ liệu thường chiếm nhiều dung lượng và trong hầu hết các trường hợp, nó sẽ không bao giờ được yêu cầu. Vì vậy, chúng ta nên cố gắng giảm thiểu dung lượng đã sử dụng trên đĩa bằng cách lưu trữ cơ sở dữ liệu vào một tệp zip.  

6. Sự phức tạp của việc triển khai

Chiến lược sao lưu phải dễ cài đặt và phải được tự động hóa để chúng tôi không phải nhớ thực hiện sao lưu sau các khoảng thời gian đều đặn.  

Hiểu những điều cơ bản

Điều đầu tiên mà chúng ta nên biết là MongoDB sử dụng các định dạng json và bson(binary json) để lưu trữ dữ liệu. Vì vậy, những người có kiến ​​thức nền về JavaScript có thể liên quan đến các đối tượng cho json, có một cặp khóa-giá trị. Ngoài ra, json là định dạng ưu tiên mà chúng tôi nhận hoặc gửi dữ liệu đến một điểm cuối API.  

Bạn có thể kiểm tra dữ liệu json của cơ sở dữ liệu MongoDB trong bất kỳ công cụ hoặc trình chỉnh sửa trực tuyến nào. Ngay cả ứng dụng Windows nổi tiếng Notepad++ cũng có trình xem json.  

Đây là ảnh chụp nhanh về tài liệu json trông như thế nào

Back Up, Restore, and Migrate a MongoDB Database

Như chúng ta có thể thấy từ ví dụ ở trên, json rất thuận tiện để làm việc, đặc biệt là đối với các nhà phát triển. Nhưng nó không hỗ trợ tất cả các loại dữ liệu có sẵn trong bson. Vì vậy, để sao lưu và khôi phục, chúng ta nên sử dụng bson nhị phân.  

Điều thứ hai cần lưu ý là MongoDB sẽ tự động tạo cơ sở dữ liệu và tên bộ sưu tập nếu chúng không tồn tại trong quá trình khôi phục.  

Thứ ba, vì MongoDB là một cơ sở dữ liệu dựa trên tài liệu nên trong nhiều trường hợp sử dụng, chúng tôi lưu trữ một lượng lớn dữ liệu trong một bộ sưu tập, chẳng hạn như toàn bộ bài đăng của một bài báo. MongoDB cũng được sử dụng rộng rãi trong cơ sở dữ liệu lớn và dữ liệu lớn. Vì vậy, việc đọc và chèn dữ liệu có thể tiêu tốn rất nhiều dung lượng CPU, bộ nhớ và ổ đĩa. Chúng ta nên luôn chạy các bản sao lưu trong những giờ không cao điểm như ban đêm.  

Như đã đề cập trước đó, chúng ta có thể sử dụng các hàm nhập và xuất để sao lưu và khôi phục cơ sở dữ liệu MongoDB, nhưng chúng ta nên sử dụng các lệnh như mongodump và mongorestore để sao lưu và khôi phục tương ứng.  

Sao lưu MongoDB

Trước tiên, chúng tôi sẽ đề cập đến việc sao lưu cơ sở dữ liệu MongoDB. Đối với điều này, chúng tôi sử dụng lệnh mongodump.   

Đầu tiên hãy mở dấu nhắc lệnh của Windows và đi đến vị trí đã cài đặt MongoDB. Nếu bạn đã chọn cài đặt mặc định, trong khi cài đặt MongoDB thông qua cửa sổ bật lên, nó sẽ được cài đặt ở một vị trí như

C:\Program Files\MongoDB\Server\4.4\bin 

Số phiên bản có thể thay đổi nếu bạn đang đọc blog này trong tương lai. Ngoài ra, xin lưu ý rằng bạn nên chạy dấu nhắc lệnh trong chế độ Quản trị viên. Vì vậy, khi chúng tôi mở dấu nhắc lệnh, chúng tôi cần thay đổi thư mục thành thư mục bin MongoDB bằng cách đưa ra lệnh bên dưới.  

cd C:\Program Files\MongoDB\Server\4.4\bin
Back Up, Restore, and Migrate a MongoDB Database

Bây giờ, hãy nhập mongod và nhấn Enter. Nó sẽ hiển thị một số văn bản json.

Back Up, Restore, and Migrate a MongoDB Database

Bây giờ, chúng tôi có thể sao lưu vào bất kỳ vị trí nào. Đối với bài đăng này, tôi đang sao lưu trên Máy tính để bàn của mình trong thư mục Sao lưu mà tôi đã tạo thông qua dòng lệnh

Back Up, Restore, and Migrate a MongoDB Database

Bây giờ, chúng ta phải chạy lệnh mongodump, nhưng lệnh này cũng phải có trong thư mục bin của MongoDB. Nếu không có, chúng tôi cần tải xuống từ đó và cài đặt.  

Back Up, Restore, and Migrate a MongoDB DataBack Up, Restore, and Migrate a MongoDB Databasebase
Sau đó, sao chép toàn bộ tệp exe từ bản tải xuống vào thư mục MongoDB bin. Back Up, Restore, and Migrate a MongoDB Database

Sao lưu MongoDB không có tùy chọn 

Bây giờ, hãy chạy lệnh mongodump từ thư mục bin. Ở đây, chúng tôi không đưa ra bất kỳ đối số nào nên việc sao lưu toàn bộ cơ sở dữ liệu sẽ được thực hiện trong cùng thư mục bin

Back Up, Restore, and Migrate a MongoDB Database

MongoDB Sao lưu vào một thư mục đầu ra

Bây giờ, hãy chạy lệnh mongodump từ thư mục bin. Ở đây, đối số –out chỉ định thư mục mà bản sao lưu dữ liệu sẽ được duy trì. Trong trường hợp của chúng tôi, chúng tôi đang cung cấp thư mục Sao lưu mà chúng tôi đã tạo trước đó trên Màn hình

mongodump --out C:\Users\pc\Desktop\Backup 
Back Up, Restore, and Migrate a MongoDB Database

Bây giờ, hãy chuyển đến màn hình nền và bạn có thể tìm thấy bản sao lưu đã được tạo trong thư mục Sao lưu của chúng tôi.

Back Up, Restore, and Migrate a MongoDB Database

MongoDB Sao lưu cơ sở dữ liệu cụ thể

MongoDB cũng cho phép chúng tôi sao lưu một cơ sở dữ liệu cụ thể từ một tập hợp các cơ sở dữ liệu trong mongodump bằng tùy chọn –db. Tôi có một cơ sở dữ liệu 'ví dụ', vì vậy để chỉ sao lưu cơ sở dữ liệu đó, tôi sẽ sử dụng lệnh bên dưới

mongodump --db example --out C:\Users\pc\Desktop\Backup 

Như bạn có thể thấy trong kết quả bên dưới, chỉ có cơ sở dữ liệu mẫu được sao lưu.  

Back Up, Restore, and Migrate a MongoDB Database

MongoDB Sao lưu một bộ sưu tập cụ thể

Bây giờ, nếu chúng tôi chỉ muốn sao lưu một bộ sưu tập cụ thể, chúng tôi cần sử dụng tùy chọn –collection và đặt tên cho bộ sưu tập. Ngoài ra, xin lưu ý rằng tên cơ sở dữ liệu là bắt buộc trong trường hợp này, vì MongoDB cần biết cơ sở dữ liệu nào cần tìm kiếm trong bộ sưu tập. Tôi có một bộ sưu tập sản phẩm trong cơ sở dữ liệu mẫu, vì vậy để chỉ sao lưu, tôi sẽ sử dụng lệnh bên dưới.  

mongodump --db example --out C:\Users\pc\Desktop\Backup –collection products 

Vì bạn có thể thấy trong kết quả bên dưới, chỉ bộ sưu tập sản phẩm từ cơ sở dữ liệu mẫu được sao lưu.  

Back Up, Restore, and Migrate a MongoDB Database

Sao lưu MongoDB từ các phiên bản MongoDB từ xa

Chúng tôi cũng có thể lấy bản sao lưu từ các phiên bản MongoDB từ xa. Tôi có rất nhiều cơ sở dữ liệu MongoDB cho các dự án cá nhân của mình trên bản đồ MongoDB, đây là cơ sở dữ liệu Đám mây miễn phí cho MongoDB. Để nhận bản sao lưu của cơ sở dữ liệu từ xa, chúng ta phải sử dụng chuỗi kết nối có tham số –uri. Tôi đã sử dụng lệnh dưới đây.  

mongodump --uri "mongodb+srv://xxxx:[email protected]/xxxxxDB?retryWrites=true&w=majority" --out C:\Users\pc\Desktop\Backup 

Bạn có thể thấy bản sao lưu của phiên bản từ xa trong kết quả đầu ra bên dưới.  

Back Up, Restore, and Migrate a MongoDB Database

Quy trình sao lưu MongoDB

Chúng ta nên cố gắng thực hiện quy trình sao lưu tự động nhất có thể. Một trong những cách tốt nhất là sử dụng cron job để nó có thể chạy hàng ngày. Như đã thảo luận trước đó, tốt nhất là chạy sao lưu vào ban đêm khi cơ sở dữ liệu ít tải nhất.  

Thiết lập một công việc định kỳ dễ dàng hơn trên Linux hoặc Mac vì tương đương với Windows của nó không tốt bằng. Ngoài ra, bạn có thể cài đặt MongoDB trong WSL2 cho Windows hỗ trợ Ubuntu

Giả sử rằng đối với máy chủ Linux có phiên bản MongoDB đang chạy, bạn muốn chạy bản sao lưu lúc 04. 04h hàng ngày. Đối với điều này, bạn nên mở trình chỉnh sửa cron trong thiết bị đầu cuối, bằng cách chạy lệnh bên dưới trong thiết bị đầu cuối

sudo crontab –e 

Bây giờ, trong trình chỉnh sửa cron, bạn cần thêm một lệnh như bên dưới cho trường hợp của chúng tôi.  

4 4 * * * mongodump --out /var/backups/mongobackups/`date +"%m-%d-%y"`

Khôi phục và di chuyển cơ sở dữ liệu MongoDB

Khi khôi phục cơ sở dữ liệu MongoDB từ bản sao lưu, chúng tôi sẽ có thể lấy bản sao chính xác của thông tin MongoDB, bao gồm cả các chỉ mục. Chúng tôi khôi phục MongoDB bằng cách sử dụng lệnh mongorestore, lệnh này chỉ hoạt động với bản sao lưu nhị phân do mongodump tạo ra.  

Bây giờ, chúng tôi đã sao lưu cơ sở dữ liệu ví dụ trước đó và nó nằm trong thư mục Sao lưu của chúng tôi. Chúng tôi sẽ sử dụng lệnh dưới đây để khôi phục nó. Trong các đối số, trước tiên chúng ta sẽ chỉ định tên của cơ sở dữ liệu với tùy chọn –db. Sau đó với –drop, chúng tôi đảm bảo rằng cơ sở dữ liệu ví dụ đầu tiên bị loại bỏ. Và trong đối số cuối cùng, chúng tôi chỉ định đường dẫn sao lưu của chúng tôi

________số 8

Bây giờ, nếu chúng tôi đăng ký trong thiết bị đầu cuối, chúng tôi đã khôi phục cơ sở dữ liệu mẫu của mình đúng cách

Back Up, Restore, and Migrate a MongoDB Database

Phần kết luận

Trong bài viết này, chúng ta đã tìm hiểu về sao lưu và khôi phục MongoDB. Chúng tôi đã tìm hiểu các tùy chọn khác nhau để tạo bản sao lưu, lý do và khi nào cần sao lưu. tiếp tục học

Làm cách nào để sao lưu cơ sở dữ liệu trong MongoDB?

Bạn có thể tạo bản sao lưu triển khai MongoDB bằng cách tạo bản sao các tệp dữ liệu cơ bản của MongoDB . Nếu ổ đĩa nơi MongoDB lưu trữ các tệp dữ liệu của nó hỗ trợ ảnh chụp nhanh tại thời điểm, bạn có thể sử dụng các ảnh chụp nhanh này để tạo bản sao lưu của hệ thống MongoDB tại một thời điểm chính xác.

MongoDB xử lý dữ liệu lớn như thế nào?

MongoDB xử lý phân tích dữ liệu theo thời gian thực theo cách hiệu quả nhất, do đó phù hợp với Dữ liệu lớn. Chẳng hạn, lập chỉ mục không gian địa lý cho phép phân tích dữ liệu GPS trong thời gian thực. Bên cạnh cấu hình bảo mật cơ bản, MongoDB còn có một công cụ xác thực dữ liệu JSON bổ sung để đảm bảo chỉ những dữ liệu hợp lệ mới được đưa vào cơ sở dữ liệu.

Chúng tôi có thể thực hiện sao lưu gia tăng trong MongoDB không?

Mongo Backup là một công cụ bên ngoài thực hiện sao lưu toàn bộ và gia tăng . Bản sao lưu được lưu trữ trên hệ thống tệp và được nén bằng thuật toán lz4. Sao lưu toàn bộ được thực hiện bằng cách thực hiện sao chép hệ thống tệp của dbPath và kết xuất oplog một phần được sử dụng để sao lưu gia tăng.

Chúng ta nên sử dụng thành phần MongoDB nào để sao lưu cơ sở dữ liệu?

Tiện ích mongodump sao lưu dữ liệu bằng cách kết nối với một mongod đang chạy. Tiện ích có thể tạo bản sao lưu cho toàn bộ máy chủ, cơ sở dữ liệu hoặc bộ sưu tập hoặc có thể sử dụng truy vấn để sao lưu chỉ một phần của bộ sưu tập.