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

Giới thiệu về Máy chủ Percona cho MongoDB 4.2

Khi chọn công nghệ cơ sở dữ liệu NoSQL, cần tính đến những cân nhắc quan trọng, chẳng hạn như hiệu suất, khả năng phục hồi, độ tin cậy và bảo mật. Các yếu tố chính này cũng phải phù hợp với việc đạt được các mục tiêu kinh doanh, ít nhất là trong chừng mực cơ sở dữ liệu có liên quan.

Nhiều công nghệ đã ra đời để cải thiện những khía cạnh này, và một tổ chức nên cải thiện các tùy chọn nổi bật và thử tích hợp chúng vào hệ thống cơ sở dữ liệu.

Công nghệ mới phải đảm bảo hiệu suất tối đa để nâng cao việc đạt được các mục tiêu kinh doanh với chi phí vận hành hợp lý nhưng có nhiều tính năng thao tác hơn như hệ thống cảnh báo và phát hiện lỗi.

Trong blog này, chúng ta sẽ thảo luận về phiên bản Percona của MongoDB và cách nó mở rộng sức mạnh của MongoDB theo nhiều cách.

Máy chủ Percona cho MongoDB là gì?

Để cơ sở dữ liệu hoạt động tốt, phải có một máy chủ cơ bản được thiết lập tối ưu để tăng cường các giao dịch đọc và ghi. Máy chủ Percona cho MongoDB là một phần mềm bổ sung mã nguồn mở miễn phí thay thế cho Phiên bản cộng đồng MongoDB, nhưng có thêm chức năng cấp doanh nghiệp. Nó được thiết kế với một số cải tiến lớn trên thiết lập máy chủ MongoDB mặc định.

Nó mang lại hiệu suất cao, cải thiện bảo mật và độ tin cậy để đạt hiệu suất tối ưu với việc giảm chi phí cho các mối quan hệ với nhà cung cấp phần mềm độc quyền.

Máy chủ Percona cho các Tính năng Nổi bật của MongoDB

MongoDB Community Edition là cốt lõi của máy chủ Percona vì nó đã tạo thành các tính năng quan trọng như lược đồ linh hoạt, giao dịch phân tán, tính quen thuộc của các tài liệu JSON và tính sẵn có cao. Bên cạnh đó, Percona Server cho MongoDB tích hợp các tính năng nổi bật sau cho phép nó đáp ứng các khía cạnh mà chúng tôi đã đề cập ở trên:

  • Bản sao lưu nóng
  • Mã hóa dữ liệu ở trạng thái nghỉ
  • Ghi nhật ký kiểm tra
  • Công cụ bộ nhớ Percona
  • Xác thực LDAP bên ngoài với SASL
  • Tích hợp HashiCorp Vault
  • Cấu hình truy vấn nâng cao

Sao lưu Nóng

Máy chủ Percona cho MongoDB tạo một bản sao lưu dữ liệu vật lý trên một máy chủ đang chạy trong nền mà không có bất kỳ sự suy giảm hoạt động đáng chú ý nào. Điều này có thể đạt được bằng cách chạy lệnh createBackup với tư cách là quản trị viên trên cơ sở dữ liệu quản trị và chỉ định thư mục sao lưu.

> use admin

switched to db admin

> db.runCommand({createBackup: 1, backupDir: "/my/backup/data/path"})

{ "ok" : 1 }

Khi bạn nhận được {"ok":1} thì sao lưu đã thành công. Ngược lại, nếu ví dụ bạn chỉ định một đường dẫn thư mục sao lưu trống, bạn có thể nhận được phản hồi lỗi, tức là:

{ "ok" : 0, "errmsg" : "Destination path must be absolute" }

Khôi phục bản sao lưu yêu cầu trước tiên người ta phải dừng phiên bản mongod, dọn dẹp thư mục dữ liệu, sao chép các tệp từ thư mục và sau đó khởi động lại dịch vụ mongod. Điều này có thể được thực hiện bằng cách chạy lệnh dưới đây

$ service mongod stop && rm -rf /var/lib/mongodb/* && cp --recursive /my/backup/data/path /var/lib/mongodb/ && service mongod start

Bạn cũng có thể lưu trữ bản sao lưu ở định dạng lưu trữ nếu sử dụng máy chủ Percona cho MongoDB 4.2.1-1

> use admin

> db.runCommand({createBackup: 1, archive: "path/to/archive.tar" })

Bạn cũng có thể sao lưu trực tiếp vào AWS S3 bằng cách sử dụng cài đặt mặc định hoặc với nhiều cấu hình hơn. Đối với bản sao lưu nhóm S3 mặc định:

> db.runCommand ({createBackup:1, s3:{bucket:"backup", path:"newBackup"}})

Mã hóa dữ liệu lúc còn lại

MongoDB phiên bản 3.2 đã giới thiệu mã hóa dữ liệu ở trạng thái nghỉ cho công cụ lưu trữ WiredTiger nhằm đảm bảo rằng các tệp dữ liệu chỉ có thể được giải mã và đọc bởi các bên có khóa giải mã. Mã hóa dữ liệu ở trạng thái nghỉ trong Máy chủ Percona cho MongoDB đã được giới thiệu trong phiên bản 3.6 để đi đôi với mã hóa dữ liệu ở giao diện nghỉ trong MongoDB. Tuy nhiên, phiên bản mới nhất không bao gồm hỗ trợ cho các dịch vụ quản lý khóa Amazon AWS và KIMP.

Mã hóa cũng có thể được áp dụng cho các tệp khôi phục khi dữ liệu ở trạng thái nghỉ được bật. Máy chủ Percona cho MongoDB sử dụng tùy chọn Mã hóaCipherMode với 2 chế độ mã hóa chọn lọc:

  1. AES256-CBC (chế độ mật mã mặc định)
  2. AES256-GCM

Bạn có thể mã hóa dữ liệu bằng lệnh dưới đây

$ mongod ... --encryptionCipherMode or 

$ mongod ... --encryptionCipherMode AES256-GCM

Chúng tôi sử dụng tùy chọn --ecryptionKeyFile để chỉ định đường dẫn đến tệp có chứa khóa mã hóa.

$ mongod ... --enableEncryption --encryptionKeyFile <fileName>

Ghi nhật ký Kiểm tra

Đối với mọi hệ thống cơ sở dữ liệu, người quản trị có nhiệm vụ theo dõi các hoạt động đang diễn ra. Trong Máy chủ Percona cho MongoDB, khi bật kiểm tra, máy chủ sẽ tạo tệp nhật ký kiểm tra chứ không phải tạo thông tin về các sự kiện người dùng khác nhau, chẳng hạn như ủy quyền và xác thực. Tuy nhiên, khởi động máy chủ với tính năng kiểm tra được bật, nhật ký sẽ không được hiển thị động trong thời gian chạy.

Đăng nhập Kiểm tra trong MongoDB Community Edition có thể có hai định dạng dữ liệu là JSON và BSON. Tuy nhiên, đối với Máy chủ Percona cho MongoDB, việc ghi nhật ký kiểm tra chỉ giới hạn ở tệp JSON. Máy chủ cũng chỉ ghi nhật ký các lệnh quan trọng trái với MongoDB ghi nhật ký mọi thứ. Vì quy trình lọc trong Percona không rõ ràng về cú pháp lọc, việc bật nhật ký kiểm tra mà không lọc sẽ cung cấp nhiều mục nhập hơn mà từ đó người ta có thể thu hẹp thành các thông số kỹ thuật riêng.

Percona Memory Engine

Đây là cấu hình đặc biệt của công cụ lưu trữ WiredTiger không lưu dữ liệu người dùng trên đĩa. Dữ liệu nằm đầy đủ và có sẵn trong bộ nhớ chính ngoại trừ dữ liệu chẩn đoán được ghi vào đĩa. Điều này làm cho việc xử lý dữ liệu nhanh hơn nhiều nhưng bạn phải đảm bảo có đủ bộ nhớ để chứa tập dữ liệu và máy chủ không được tắt. Người ta có thể chọn một công cụ lưu trữ để sử dụng bằng lệnh --storageEngine. Dữ liệu được tạo cho một công cụ lưu trữ không thể tương thích với các công cụ lưu trữ khác vì mỗi công cụ lưu trữ có mô hình dữ liệu riêng. Ví dụ để chọn công cụ lưu trữ trong bộ nhớ. Trước tiên, bạn dừng bất kỳ phiên bản mongod nào đang chạy và sau đó đưa ra các lệnh:

$ service mongod stop

$ mongod --storageEngine inMemory --dbpath <newDataDir>

Nếu bạn đã có một số dữ liệu với phiên bản Cộng đồng MongoDB mặc định của mình và bạn muốn chuyển sang Percona Memory Engine, chỉ cần sử dụng các tiện ích mongodumb và mongorestore bằng cách ra lệnh:

$ mongodump --out <dumpDir>

$ service mongod stop

$ rm -rf /var/lib/mongodb/*

$ sed -i '/engine: .*inMemory/s/#//g' /etc/mongod.conf

$ service mongod start

$ mongorestore <dumpDir>

Xác thực LDAP bên ngoài bằng SASL

Bất cứ khi nào máy khách thực hiện yêu cầu đọc hoặc ghi đối với phiên bản mongod MongoDB, trước tiên họ cần xác thực với cơ sở dữ liệu người dùng máy chủ MongoDB. Xác thực bên ngoài cho phép máy chủ MongoDB xác minh thông tin đăng nhập của máy khách (tên người dùng và mật khẩu) dựa trên một dịch vụ riêng biệt. Kiến trúc xác thực bên ngoài bao gồm:

  1. Máy chủ LDAP lưu trữ từ xa tất cả thông tin đăng nhập của người dùng
  2. Daemon SASL được sử dụng làm proxy cục bộ máy chủ MongoDB cho dịch vụ LDAP từ xa.
  3. Thư viện SASL:tạo dữ liệu xác thực cần thiết cho máy khách và máy chủ MongoDB.

Trình tự phiên xác thực

  • Máy khách được kết nối với phiên bản mongod đang chạy và tạo yêu cầu xác thực PLAIN bằng thư viện SASL.
  • Yêu cầu auth sau đó được gửi đến máy chủ dưới dạng lệnh Mongo đặc biệt, lệnh này sau đó sẽ được máy chủ mongod nhận cùng với tải trọng yêu cầu của nó.
  • Máy chủ tạo một số phiên SASL bắt nguồn từ thông tin đăng nhập của máy khách bằng cách sử dụng tham chiếu riêng của nó tới thư viện SASL.
  • Máy chủ mongod chuyển tải trọng auth tới thư viện SASL. Máy chủ này sẽ chuyển tải nó cho daemon saslauthd. Daemon chuyển nó tới LDAP và chờ phản hồi CÓ hoặc KHÔNG theo yêu cầu xác thực bằng cách kiểm tra xem người dùng có tồn tại hay không và mật khẩu đã gửi là chính xác.
  • Saslauthd chuyển phản hồi này tới máy chủ mongod thông qua thư viện SASL, sau đó sẽ xác thực hoặc từ chối yêu cầu.

Đây là minh họa cho quá trình này:

Để thêm người dùng bên ngoài vào máy chủ mongod:

> db.getSiblingDB("$external").createUser( {user : username, roles: [ {role: "read", db: "test"} ]} );

Tuy nhiên, người dùng bên ngoài không được gán vai trò trong cơ sở dữ liệu quản trị.

Tích hợp HashiCorp Vault

HashCorp Vault là sản phẩm được thiết kế để quản lý bí mật và bảo vệ dữ liệu nhạy cảm bằng cách lưu trữ an toàn và kiểm soát chặt chẽ việc truy cập vào thông tin bí mật. Với phiên bản Percona trước đó, khóa mã hóa dữ liệu lúc còn lại được lưu trữ cục bộ trên máy chủ bên trong tệp khóa. Việc tích hợp với HashCorp Vault bảo mật khóa mã hóa tốt hơn nhiều.

Cấu hình Truy vấn Nâng cao

Việc lập hồ sơ có tác động suy giảm đến hiệu suất cơ sở dữ liệu, đặc biệt là khi có quá nhiều truy vấn được đưa ra. Máy chủ Percona cho MongoDB có sẵn bằng cách hạn chế số lượng truy vấn được thu thập bởi trình biên dịch cơ sở dữ liệu, do đó giảm tác động của nó đến hiệu suất.

Kết luận

Máy chủ Percona cho MongoDB là cơ sở dữ liệu mã nguồn mở nâng cao và có khả năng mở rộng cao, có thể hoạt động như một ứng dụng thay thế tương thích cho MongoDB Community Edition nhưng với cú pháp và cấu hình tương tự. Nó tăng cường bảo mật dữ liệu mở rộng, đặc biệt là một lúc và cải thiện hiệu suất cơ sở dữ liệu thông qua việc cung cấp công cụ Máy chủ Percona, hạn chế tốc độ cấu hình trong số các tính năng khác.

Máy chủ Percona cho MongoDB được hỗ trợ đầy đủ bởi ClusterControl như một tùy chọn để triển khai.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ chữ

  2. Di chuyển MongoDB sang DynamoDB, Phần 2

  3. Các tài liệu phụ Mongoose so với lược đồ lồng nhau

  4. Tạo đối tượng ngày ISO trong javascript

  5. Làm cách nào để tìm giao điểm tập hợp của các tập hợp giữa các tài liệu trong một tập hợp duy nhất trong MongoDB?