MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mẹo lưu trữ bản sao lưu MongoDB trên đám mây

Khi nói đến sao lưu và lưu trữ dữ liệu, các bộ phận CNTT phải chịu áp lực đáp ứng các thỏa thuận cấp độ dịch vụ chặt chẽ hơn, cung cấp nhiều báo cáo tùy chỉnh hơn và tuân thủ các yêu cầu tuân thủ mở rộng trong khi tiếp tục quản lý các tác vụ lưu trữ và sao lưu hàng ngày. Không nghi ngờ gì nữa, máy chủ cơ sở dữ liệu lưu trữ một số thông tin có giá trị nhất của doanh nghiệp bạn. Đảm bảo sao lưu cơ sở dữ liệu đáng tin cậy để ngăn mất dữ liệu trong trường hợp xảy ra sự cố hoặc lỗi phần cứng là một hộp kiểm quan trọng.

Nhưng làm thế nào để biến nó thành DR thực sự khi tất cả dữ liệu của bạn nằm trong một trung tâm dữ liệu duy nhất hoặc thậm chí các trung tâm dữ liệu ở gần vị trí địa lý? Hơn nữa, cho dù đó là máy chủ 24x7 được tải nhiều hay môi trường có khối lượng giao dịch thấp, bạn sẽ cần thực hiện sao lưu theo quy trình liền mạch mà không làm gián đoạn hiệu suất của máy chủ trong môi trường sản xuất.

Trong blog này, chúng tôi sẽ xem xét bản sao lưu MongoDB lên đám mây. Đám mây đã thay đổi ngành công nghiệp sao lưu dữ liệu. Do mức giá phải chăng, các doanh nghiệp nhỏ hơn có giải pháp ngoại vi để sao lưu tất cả dữ liệu của họ.

Chúng tôi sẽ chỉ cho bạn cách thực hiện sao lưu MongoDB an toàn bằng các dịch vụ mongo cũng như các phương pháp khác mà bạn có thể sử dụng để mở rộng các tùy chọn khôi phục sau thảm họa cơ sở dữ liệu của mình.

Nếu máy chủ hoặc điểm đến sao lưu của bạn nằm trong cơ sở hạ tầng lộ thiên như đám mây công cộng, nhà cung cấp dịch vụ lưu trữ hoặc được kết nối qua mạng WAN không đáng tin cậy, bạn cần phải suy nghĩ về các hành động bổ sung trong chính sách sao lưu của mình. Có một số cách khác nhau để thực hiện sao lưu cơ sở dữ liệu cho MongoDB và tùy thuộc vào loại sao lưu, thời gian khôi phục, kích thước và các tùy chọn cơ sở hạ tầng sẽ khác nhau. Vì nhiều giải pháp lưu trữ đám mây chỉ đơn giản là lưu trữ với các giao diện người dùng API khác nhau, nên bất kỳ giải pháp sao lưu nào cũng có thể được thực hiện với một chút tập lệnh. Vậy chúng tôi có những lựa chọn nào để làm cho quá trình diễn ra suôn sẻ và an toàn?

Mã hóa sao lưu MongoDB

Bảo mật phải là trọng tâm của mọi hành động mà nhóm CNTT thực hiện. Luôn luôn là một ý kiến ​​hay để thực thi mã hóa để tăng cường bảo mật cho dữ liệu sao lưu. Một trường hợp sử dụng đơn giản để triển khai mã hóa là nơi bạn muốn đẩy bản sao lưu vào bộ nhớ sao lưu ngoại vi nằm trong đám mây công cộng.

Khi tạo một bản sao lưu được mã hóa, một điều cần lưu ý là thường mất nhiều thời gian hơn để khôi phục. Bản sao lưu phải được giải mã trước khi có bất kỳ hoạt động khôi phục nào. Với một tập dữ liệu lớn, điều này có thể gây ra một số sự chậm trễ cho RTO.

Mặt khác, nếu bạn đang sử dụng khóa cá nhân để mã hóa, hãy đảm bảo cất giữ khóa ở nơi an toàn. Nếu khóa cá nhân bị thiếu, bản sao lưu sẽ vô dụng và không thể khôi phục được. Nếu khóa bị đánh cắp, tất cả các bản sao lưu đã tạo sử dụng cùng một khóa sẽ bị xâm phạm vì chúng không còn được bảo mật. Bạn có thể sử dụng GnuPG hoặc OpenSSL phổ biến để tạo khóa riêng tư hoặc khóa công khai.

Để thực hiện mã hóa MongoDBdump bằng GnuPG, hãy tạo khóa riêng tư và làm theo trình hướng dẫn tương ứng:

$ gpg --gen-key

Tạo một bản sao lưu MongoDBdump thuần túy như bình thường:

$ mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz
Mã hóa tệp kết xuất và xóa bản sao lưu thuần túy cũ hơn:
$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz

$ rm -f db1.tar.gz
GnuPG sẽ tự động thêm phần mở rộng .gpg vào tệp được mã hóa. Để giải mã,

chỉ cần chạy lệnh gpg với cờ --decrypt:

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
Để tạo MongoDBdump được mã hóa bằng OpenSSL, người ta phải tạo khóa cá nhân và khóa công khai:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Khóa riêng tư này (dump.priv.pem) phải được giữ ở nơi an toàn để giải mã trong tương lai. Đối với Mongodump, một bản sao lưu được mã hóa có thể được tạo bằng cách chuyển nội dung đến openssl, chẳng hạn như

mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz | openssl smime -encrypt -binary -text -aes256

-out database.sql.enc -outform DER dump.pub.pem
Để giải mã, chỉ cần sử dụng khóa riêng (dump.priv.pem) cùng với cờ -decrypt:

openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out db1.tar.gz

MongoDB Backup Compression

Trong thế giới sao lưu cơ sở dữ liệu đám mây, nén là một trong những người bạn tốt nhất của bạn. Nó không chỉ có thể tiết kiệm không gian lưu trữ mà còn có thể giảm đáng kể thời gian cần thiết để tải xuống / tải lên dữ liệu.

Ngoài tính năng lưu trữ, chúng tôi cũng đã thêm hỗ trợ nén bằng gzip. Điều này được phơi bày khi giới thiệu một tùy chọn dòng lệnh mới “--gzip” trong cả mongodump và mongorestore. Nén hoạt động cho cả các bản sao lưu được tạo bằng cách sử dụng thư mục và chế độ lưu trữ, đồng thời giảm mức sử dụng dung lượng ổ đĩa.

Thông thường, kết xuất MongoDB có thể có tốc độ nén tốt nhất vì nó là một tệp văn bản phẳng. Tùy thuộc vào công cụ nén và tỷ lệ, một MongoDBdump được nén có thể nhỏ hơn tới 6 lần so với kích thước sao lưu ban đầu. Để nén bản sao lưu, bạn có thể chuyển đầu ra MongoDBdump tới một công cụ nén và chuyển hướng nó đến tệp đích

Có một bản sao lưu nén có thể giúp bạn tiết kiệm tới 50% kích thước bản sao lưu ban đầu, tùy thuộc vào tập dữ liệu.

mongodump --db country --gzip --archive=country.archive

Giới hạn Thông lượng Mạng

Một lựa chọn tuyệt vời để sao lưu đám mây là giới hạn băng thông phát trực tuyến mạng (Mb / s) khi thực hiện sao lưu. Bạn có thể đạt được điều đó với công cụ pv. Tiện ích pv đi kèm với tùy chọn sửa đổi dữ liệu -L RATE, --rate-limit RATE giới hạn việc truyền tải xuống tối đa là RATE byte mỗi giây. Ví dụ dưới đây sẽ giới hạn nó ở 2MB / s.

$ pv -q -L 2m

Chuyển bản sao lưu MongoDB lên đám mây

Bây giờ khi bản sao lưu của bạn được nén và bảo mật (mã hóa), nó đã sẵn sàng để chuyển.

Google Cloud

Công cụ dòng lệnh gsutil được sử dụng để quản lý, giám sát và sử dụng nhóm lưu trữ của bạn trên Google Cloud Storage. Nếu bạn đã cài đặt tiện ích gcloud, bạn đã cài đặt gsutil. Nếu không, hãy làm theo hướng dẫn cho bản phân phối Linux của bạn tại đây.

Để cài đặt gcloud CLI, bạn có thể làm theo quy trình sau:

curl https://sdk.cloud.google.com | bash
Khởi động lại trình bao của bạn:
exec -l $SHELL
Chạy gcloud init để khởi tạo môi trường gcloud:
gcloud init
Với công cụ dòng lệnh gsutil được cài đặt và xác thực, hãy tạo một nhóm lưu trữ khu vực có tên MongoDB-backup-Storage trong dự án hiện tại của bạn.
gsutil mb -c regional -l europe-west1 gs://severalnines-storage/

Creating gs://MongoDB-backups-storage/

Amazon S3

Nếu bạn không sử dụng RDS để lưu trữ cơ sở dữ liệu của mình, rất có thể bạn đang thực hiện sao lưu của riêng mình. Nền tảng AWS của Amazon, S3 (Amazon Simple Storage Service) là một dịch vụ lưu trữ dữ liệu có thể được sử dụng để lưu trữ các bản sao lưu cơ sở dữ liệu hoặc các tệp quan trọng khác của doanh nghiệp. Bạn có thể sử dụng dịch vụ này để bảo mật dữ liệu của mình.

Trong khi các bản sao lưu có thể được tải lên thông qua giao diện web, giao diện dòng lệnh s3 chuyên dụng có thể được sử dụng để thực hiện việc đó từ dòng lệnh và thông qua các tập lệnh tự động hóa sao lưu. Nếu các bản sao lưu được lưu giữ trong thời gian rất dài và thời gian khôi phục không phải là vấn đề đáng lo ngại, thì các bản sao lưu có thể được chuyển sang dịch vụ Amazon Glacier, cung cấp dung lượng lưu trữ dài hạn rẻ hơn nhiều. Các tệp (đối tượng amazon) được lưu trữ một cách hợp lý trong một thùng phẳng khổng lồ có tên là bucket. S3 trình bày một giao diện REST cho bên trong của nó. Bạn có thể sử dụng API này để thực hiện các hoạt động CRUD trên nhóm và đối tượng, cũng như để thay đổi quyền và cấu hình trên cả hai.

Phương thức phân phối chính cho AWS CLI trên Linux, Windows và macOS là pip, một trình quản lý gói cho Python. Hướng dẫn có thể được tìm thấy tại đây.

aws s3 cp severalnines.sql s3://severalnine-sbucket/MongoDB_backups
Theo mặc định, S3 cung cấp độ bền đối tượng 11 9 giây. Có nghĩa là nếu bạn lưu trữ 1.000.000.000 (1 tỷ) đồ vật trong đó, thì trung bình cứ 10 năm bạn có thể mất 1 đồ vật. Cách S3 đạt được con số 9 giây ấn tượng đó là bằng cách tự động sao chép đối tượng trong nhiều Vùng khả dụng mà chúng ta sẽ nói đến trong một bài đăng khác. Amazon có các trung tâm dữ liệu khu vực trên khắp thế giới.

Microsoft Azure Storage

Nền tảng đám mây công cộng của Microsoft, Azure, có các tùy chọn lưu trữ với giao diện dòng điều khiển. Thông tin có thể được tìm thấy ở đây. Azure CLI đa nền tảng, mã nguồn mở cung cấp một tập hợp các lệnh để làm việc với nền tảng Azure. Nó cung cấp nhiều chức năng được thấy trong cổng Azure, bao gồm cả quyền truy cập dữ liệu phong phú.

Việc cài đặt Azure CLI khá đơn giản, bạn có thể xem hướng dẫn tại đây. Dưới đây, bạn có thể tìm thấy cách chuyển bản sao lưu của mình sang bộ nhớ Microsoft.

az storage blob upload --container-name severalnines --file severalnines.gz.tar --name severalnines_backup

Bộ nhớ Kết hợp cho Bản sao lưu MongoDB

Với ngành công nghiệp lưu trữ đám mây công cộng và riêng tư đang phát triển, chúng tôi có một danh mục mới được gọi là lưu trữ kết hợp. Cách tiếp cận điển hình là giữ dữ liệu trên ổ đĩa cục bộ trong thời gian ngắn hơn trong khi lưu trữ sao lưu đám mây sẽ được giữ trong thời gian dài hơn. Nhiều khi yêu cầu lưu giữ bản sao lưu lâu hơn xuất phát từ các nghĩa vụ pháp lý đối với các ngành khác nhau (như viễn thông phải lưu trữ siêu dữ liệu kết nối). Cách tiếp cận như vậy xuất phát từ nhu cầu lưu trữ các bản sao lưu cục bộ gần đây để khôi phục nhanh (RTO thấp hơn), cũng như các mục tiêu liên tục trong kinh doanh.

Khía cạnh quan trọng của việc sử dụng tài nguyên hiệu quả là có các bản sao lưu dự phòng riêng biệt. Dữ liệu được lưu trữ cục bộ trên các ổ đĩa dự phòng sẽ được lưu giữ trong thời gian ngắn hơn trong khi lưu trữ sao lưu đám mây sẽ được lưu giữ trong thời gian dài hơn. Nhiều khi yêu cầu lưu giữ bản sao lưu lâu hơn xuất phát từ các nghĩa vụ pháp lý đối với các ngành khác nhau (chẳng hạn như viễn thông phải lưu trữ siêu dữ liệu kết nối).

Các nhà cung cấp dịch vụ đám mây như Google Cloud Services, Microsoft Azure và Amazon S3 đều cung cấp bộ nhớ hầu như không giới hạn, làm giảm nhu cầu không gian cục bộ. Nó cho phép bạn lưu giữ các tệp sao lưu của mình lâu hơn, miễn là bạn muốn và không lo ngại về dung lượng ổ đĩa cục bộ.

Quản lý sao lưu ClusterControl - Bộ nhớ kết hợp

Khi lập lịch sao lưu với ClusterControl, mỗi phương pháp sao lưu đều có thể định cấu hình với một tập hợp các tùy chọn về cách bạn muốn thực hiện sao lưu. Điều quan trọng nhất đối với lưu trữ đám mây kết hợp sẽ là:

  • Điều chỉnh mạng
  • Mã hóa bằng quản lý khóa tích hợp
  • Nén
  • Khoảng thời gian lưu giữ cho các bản sao lưu cục bộ
  • Khoảng thời gian lưu giữ cho các bản sao lưu trên đám mây

ClusterControl các tính năng sao lưu nâng cao cho đám mây, nén song song, giới hạn băng thông mạng, mã hóa , v.v. Công ty của bạn có thể tận dụng khả năng mở rộng của đám mây và định giá tùy ý cho nhu cầu lưu trữ ngày càng tăng. Bạn có thể thiết kế chiến lược sao lưu để cung cấp cả bản sao cục bộ trong trung tâm dữ liệu để khôi phục ngay lập tức và một cổng liền mạch đến các dịch vụ lưu trữ đám mây từ AWS, Google và Azure.

TLS và AES 256 nâng cao Các tính năng nén và mã hóa-bit hỗ trợ các bản sao lưu an toàn chiếm ít dung lượng hơn đáng kể trên đám mây.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 3 cách sắp xếp tài liệu trong MongoDB

  2. Cập nhật đường dẫn 'x' sẽ tạo ra xung đột tại 'x'

  3. Mongo, tìm qua danh sách id

  4. Mongoose - tìm các tài liệu phụ theo tiêu chí

  5. Làm cách nào để tạo DB cho vùng chứa MongoDB khi khởi động?