Làm cách nào để tạo bản sao chỉ có quyền đọc trong mongodb?

Nó là một cơ sở dữ liệu định hướng tài liệu hiệu suất cao được cung cấp bởi cấu trúc NoSQL. Nó sử dụng các bộ sưu tập (bảng), mỗi bộ có nhiều tài liệu (bản ghi) & cho phép người dùng lưu trữ dữ liệu ở định dạng không liên quan.  

MongoDB lưu trữ dữ liệu của nó dưới dạng các đối tượng thường được xác định là tài liệu. Các tài liệu này được lưu trữ trong các bộ sưu tập, tương tự như cách các bảng hoạt động trong cơ sở dữ liệu quan hệ. MongoDB được biết đến với khả năng mở rộng, dễ sử dụng, độ tin cậy và không bắt buộc sử dụng một lược đồ cố định trong số tất cả các tài liệu được lưu trữ, mang lại cho chúng khả năng có các trường (cột) khác nhau.  

Để biết thêm thông tin về MongoDB, bạn có thể kiểm tra trang web chính thức tại đây

Tại sao sao chép?

Bản sao MongoDB là một tính năng cần thiết vì những lợi ích sau mà nó mang lại

  • Với nhiều bản sao dữ liệu được đặt trên một số máy chủ, Bản sao MongoDB cung cấp tính khả dụng cao (24*7) của dữ liệu
  • Bảo vệ dữ liệu tốt hơn vì lỗi của một máy chủ sẽ không dẫn đến mất dữ liệu.  
  • Trong trường hợp lỗi phần cứng và gián đoạn dịch vụ, có thể khắc phục sự cố nhanh chóng
  • Loại bỏ mọi thời gian chết cần thiết để bảo trì, chẳng hạn như sao lưu, xây dựng lại chỉ mục hoặc nén
  • Bộ bản sao trong suốt đối với ứng dụng của bạn.  
  • Đọc chia tỷ lệ (bản sao bổ sung để đọc)

Bản sao MongoDB là gì?

Nguồn hình ảnh. MongoDB

Bản sao MongoDB là quá trình cung cấp dữ liệu trên nhiều máy chủ dữ liệu. Sao chép dữ liệu đảm bảo an toàn dữ liệu không chỉ trong trường hợp lỗi một máy chủ mà còn trong trường hợp lỗi phần cứng. Bản sao lưu trữ nhiều bản sao dữ liệu trên nhiều máy chủ dữ liệu khác nhau, cho phép người dùng khôi phục dữ liệu bất cứ khi nào cần

MongoDB hỗ trợ sao chép với sự trợ giúp của Bộ bản sao. Các Bộ bản sao này là sự kết hợp của nhiều phiên bản MongoDB khác nhau, mỗi phiên bản có một nút chính và nhiều nút phụ. Nút phụ tự động sao chép các thay đổi được thực hiện cho nút chính, đảm bảo dữ liệu giống nhau được duy trì trên tất cả các máy chủ. Trong thời gian diễn ra quá trình chuyển đổi dự phòng hoặc khôi phục, cơ chế bầu cử sẽ chọn nút chính mới

Các tính năng chính của Nhân bản

  • khả năng mở rộng. Khi khối lượng dữ liệu tăng lên thì độ phức tạp của việc truy cập dữ liệu và làm việc với dữ liệu cũng tăng lên. Với bản sao tại chỗ, nhiều bản sao dữ liệu có sẵn, cho phép người dùng không chỉ tăng dự trữ dữ liệu mà còn khôi phục bất kỳ phiên bản nào trước đó trong trường hợp có bất kỳ lỗi hoặc lỗi nào
  • Hiệu suất. Khi dữ liệu có sẵn trên nhiều máy và máy chủ, nó không chỉ giúp việc truy cập dữ liệu dễ dàng hơn mà còn giúp việc khôi phục từ các lỗi không mong muốn và đột ngột dễ dàng hơn nhiều. sao chép đảm bảo tính khả dụng và bảo mật của dữ liệu mọi lúc
  • khả dụng. Với khả năng sao chép tại chỗ, không cần phải lo lắng về lỗi dữ liệu. Trong trường hợp nguồn dữ liệu chính của bạn bị lỗi, bạn có thể dễ dàng truy cập vào cùng một dữ liệu cập nhật từ nguồn dự trữ thứ cấp. Điều này thúc đẩy mạnh mẽ tính sẵn có của dữ liệu

Thiết lập Bản sao MongoDB có thể là một nhiệm vụ tốn thời gian và cần có chuyên môn kỹ thuật phù hợp để thực hiện quy trình theo cách thủ công. Điều này yêu cầu bạn phải theo dõi và xác minh rằng việc sao chép được thực hiện chính xác. Một giải pháp tiết kiệm và dễ dàng hơn là sử dụng công cụ ETL dựa trên đám mây như Hevo Data. Các trình kết nối dựng sẵn của Hevo cho phép bạn thiết lập Bản sao MongoDB cho cả Bản đồ MongoDB chung và MongoDB chỉ bằng vài cú nhấp chuột mà không phải viết một dòng mã nào

Các tính năng chính của Bộ bản sao

Một số tính năng chính của Replica Set MongoDB như sau

  • Bộ bản sao là một cụm gồm N nút với một số nút mang dữ liệu và một nút trọng tài
  • Với Bộ bản sao, bất kỳ nút nào cũng có thể là nút máy chủ chính
  • Bạn sẽ tự động chuyển đổi dự phòng và khôi phục với Bộ bản sao
  • Khi bạn thực hiện bất kỳ thao tác ghi nào với Bộ bản sao, nó sẽ chuyển đến nút máy chủ chính

Để biết thêm thông tin về thiết lập Bản sao MongoDB, bạn có thể kiểm tra tài liệu chính thức tại đây

Bản sao MongoDB hoạt động như thế nào

Bản sao MongoDB được quản lý bởi Bộ bản sao trong đó nhiều nút MongoDB được nhóm thành một đơn vị. Đối với Bản sao MongoDB, Bộ bản sao yêu cầu ít nhất 3 nút MongoDB. Ở đây, một nút sẽ được coi là nút chính sẽ thực hiện tất cả các thao tác ghi nhận được. Các nút khác sẽ trở thành nút phụ và chúng sẽ sao chép dữ liệu từ nút chính

Các nút phụ sẽ chỉ thực hiện các thao tác đọc, vì vậy, chúng có thể được định cấu hình thông qua ứng dụng khách MongoDB được hỗ trợ. Bất cứ khi nào nút chính không có sẵn để cung cấp yêu cầu dữ liệu, nút phụ sẽ cung cấp liên tục dữ liệu cần thiết. Trong trường hợp như vậy, việc lựa chọn nút chính được thực hiện thông qua một quy trình gọi là Bầu chọn bộ bản sao, trong đó nút phụ phù hợp nhất được chọn làm nút chính mới

Quá trình nhịp tim

Heartbeat là phương pháp tìm ra trạng thái hiện tại của các nút MongoDB trong một bộ bản sao. Ở đây, các nút thiết lập bản sao để ping lẫn nhau cứ sau hai giây. Nếu một nút không ping trong vòng 10 giây,  các nút khác trong bộ bản sao sẽ đánh dấu nút đó là không thể truy cập được.  

Tính năng này rất quan trọng đối với các quy trình chuyển đổi dự phòng tự động trong đó nút chính không thể truy cập được và không nhận được nhịp tim từ nút phụ trong khung thời gian được phân bổ. Sau đó, MongoDB sẽ tự động chỉ định một máy chủ phụ đóng vai trò là máy chủ chính

Cuộc bầu cử bộ bản sao

Lựa chọn bộ bản sao được sử dụng để tìm ra nút MongoDB nào sẽ là nút chính. Những lựa chọn này có thể xảy ra khi.  

  • Mất kết nối với nút chính được nhận dạng bởi quá trình nhịp tim.  
  • Khởi tạo bộ bản sao
  • Thêm một nút mới vào bộ bản sao hiện có
  • Bộ bản sao Bảo trì bằng cách sử dụng stepDown hoặc rs. phương pháp cấu hình lại

Trong quá trình bầu cử, nút đầu tiên đặt cờ yêu cầu bầu cử và tất cả các nút khác bỏ phiếu để chọn nút đó làm nút chính. Giả sử cài đặt cấu hình sao chép là giá trị mặc định, thời gian trung bình để hoàn tất quá trình lựa chọn là 12 giây

Một yếu tố quan trọng có thể ảnh hưởng đến thời gian cần thiết để hoàn thành lựa chọn là độ trễ mạng. Điều này có thể trì hoãn thao tác thiết lập lại trên nút chính mới của bản sao. Bộ bản sao không thể xử lý các thao tác ghi cho đến khi quá trình lựa chọn hoàn tất. Tuy nhiên, nếu truy vấn đọc được cấu hình để xử lý trên nút phụ, bạn có thể tạo giai đoạn đọc. MongoDB 3. 6 hỗ trợ các trình điều khiển kết nối cần được cấu hình để thử ghi lại theo yêu cầu

Xử lý độ trễ sao chép MongoDB

Một trong những vấn đề chính khi thực hiện Bản sao MongoDB là độ trễ hoặc độ trễ trong quá trình. Khi có sự chậm trễ trong quá trình sao chép sang nút phụ sau khi cập nhật lên nút chính trong bộ bản sao

Một số yếu tố được liệt kê bên dưới có thể làm tăng độ trễ Sao chép MongoDB

  • Độ trễ mạng. Nếu mạng không đủ để cung cấp nhu cầu cho quá trình sao chép, nó sẽ gây ra sự chậm trễ trong quá trình sao chép dữ liệu cho toàn bộ Bộ bản sao. Đó là một phương pháp hay để định tuyến lưu lượng truy cập của bạn trong một mạng ổn định với đủ băng thông
  • Thông lượng đĩa. Nếu các đĩa được sử dụng trong nút chính và nút phụ khác nhau như nút chính có SSD và nút phụ có ổ cứng thì sẽ có độ trễ trong quá trình ghi trên nút phụ
  • Khối lượng công việc nặng nhọc. Việc thực hiện các thao tác ghi nặng nề và kéo dài trên các nút chính sẽ dẫn đến sự chậm trễ trong quá trình sao chép. Luôn luôn là một cách tốt để định cấu hình chính xác Mối quan tâm ghi MongoDB
  • Hoạt động cơ sở dữ liệu. Một số truy vấn cơ sở dữ liệu mất nhiều thời gian hơn để thực hiện. Với sự trợ giúp của Trình lược tả cơ sở dữ liệu, người ta có thể xác định và tối ưu hóa các truy vấn

Sharding trong MongoDB là gì?

Nguồn hình ảnh. MongoDB

MongoDB mở rộng quy mô rất lớn bằng cách sử dụng một kỹ thuật được gọi là Sharding để xử lý khối lượng dữ liệu khổng lồ. MongoDB xử lý các yêu cầu lưu trữ dữ liệu bằng cách sử dụng khái niệm Sharding, bao gồm phân phối và lưu trữ dữ liệu trên nhiều máy khác nhau. Sharding cho phép MongoDB mở rộng quy mô theo chiều ngang và xử lý tải đọc-ghi dễ dàng

Sharding sử dụng ba thành phần

  • Mảnh vỡ. Là nơi lưu trữ dữ liệu
  • Máy chủ cấu hình. Các máy chủ này giúp ánh xạ dữ liệu từ một cụm thành một Phân đoạn, sau đó được sử dụng bởi các bộ định tuyến truy vấn để thực hiện các hoạt động dành riêng cho một Phân đoạn cụ thể.  
  • Máy chủ truy vấn. Các máy chủ này cho phép người dùng truy cập và thực hiện các thao tác trên MongoDB Shards mong muốn

Để biết thêm thông tin về Sharding trong MongoDB, bạn có thể kiểm tra tài liệu chính thức tại đây

Sao chép so với Sharding trong MongoDB

Sao chép đề cập đến việc thực hành sao chép dữ liệu từ nút máy chủ chính sang nút máy chủ phụ. Nó làm tăng tính khả dụng của dữ liệu và thúc đẩy sao lưu, trong trường hợp máy chủ chính của bạn bị lỗi. Nó sao chép dữ liệu trên mọi máy chủ

Sharding đề cập đến quá trình xử lý chia tỷ lệ theo chiều ngang trên nhiều máy chủ khác nhau bằng cách sử dụng khóa chung. Bạn sẽ sao chép dữ liệu một cách tổng thể bằng cách chia nhỏ các bản sao của các phần dữ liệu trên các bộ bản sao khác nhau. Tất cả các bộ bản sao này hoạt động cùng nhau để sử dụng tất cả dữ liệu

Khi phân đoạn và sao chép hoạt động cùng nhau, chúng được gọi là một cụm được chia sẻ. Mỗi phân đoạn được sao chép để duy trì tính khả dụng của dữ liệu giống nhau

Bộ bản sao MongoDB vs Cụm MongoDB

Bộ bản sao tạo nhiều bản sao của cùng một bản ghi thông qua nút bộ bản sao. Các mục tiêu cơ bản của bộ sao chép MongoDB như sau

  • sẵn có của dữ liệu
  • Chỉ định giải pháp sao lưu tích hợp

Làm việc theo cụm là khác nhau. Cụm MongoDB phân phối dữ liệu qua nhiều nút bằng khóa phân đoạn. Trong quá trình này, dữ liệu được chia thành nhiều tiêu đề. Chúng được gọi là phân đoạn và nó sao chép từng phân đoạn sang nút khác. Mục đích chính của cụm là hỗ trợ các bản ghi dữ liệu rất lớn và các hoạt động có thông lượng cao bằng cách chia tỷ lệ khối lượng công việc theo chiều ngang. Sự khác biệt chính giữa bộ bản sao và cụm là

  • Bộ bản sao sao chép toàn bộ tập dữ liệu.  
  • Các cụm phân phối khối lượng công việc và lưu trữ dữ liệu (phân đoạn) trên nhiều máy chủ.   

MongoDB cho phép người dùng tạo các cụm sharding để kết hợp hai tính năng này. Trong một cụm phân đoạn, mỗi phân đoạn được sao chép sang một máy chủ thứ cấp để cung cấp tính sẵn sàng và dự phòng dữ liệu cao

Các phương pháp sao chép dữ liệu MongoDB

Hevo Data, một Đường ống dẫn dữ liệu tự động, cung cấp cho bạn giải pháp đơn giản để thực hiện Sao chép MongoDB với giao diện không cần mã dễ sử dụng. Hevo được quản lý hoàn toàn và tự động hóa hoàn toàn quá trình không chỉ tải dữ liệu từ MongoDB mà còn làm phong phú dữ liệu và chuyển đổi dữ liệu thành dạng sẵn sàng phân tích mà không cần phải viết một dòng mã nào. Hevo cho phép bạn sao chép dữ liệu từ cả Generic MongoDB và MongoDB Atlas theo cách không bị mất dữ liệu

Đường ống dữ liệu chịu lỗi của Hevo cung cấp một cách nhanh hơn để di chuyển dữ liệu của bạn từ MongoDB và hơn 100 nguồn dữ liệu khác (bao gồm hơn 40 nguồn dữ liệu miễn phí) vào Kho dữ liệu, Cơ sở dữ liệu, Công cụ BI hoặc bất kỳ đích nào khác mà bạn chọn. Hevo sẽ chịu trách nhiệm hoàn toàn về quy trình sao chép dữ liệu, cho phép bạn tập trung vào các hoạt động kinh doanh chính

MongoDB cho phép người dùng sao chép dữ liệu của họ một cách thuận tiện bằng cách sử dụng Bộ bản sao và sử dụng chúng cho các mục đích khác nhau như thử nghiệm, phát triển, sản xuất, v.v. Phương pháp này trước tiên yêu cầu bạn tạo một Bộ bản sao MongoDB mới, sau đó chuyển đổi nó thành một Bản sao độc lập

MongoDB cho phép người dùng sử dụng khái niệm Sharding một cách thuận tiện, cho phép bạn sao chép dữ liệu trên nhiều máy chủ. Phương pháp này yêu cầu trước tiên bạn phải tạo một MongoDB Shard, sau đó chuyển đổi Shard độc lập thành một Shard Replica Set

Phương pháp thiết lập bản sao trong MongoDB

Trước khi tiếp tục với các kỹ thuật thiết lập Bản sao MongoDB, hãy đảm bảo các điều kiện tiên quyết sau

  • Kiến thức làm việc về MongoDB
  • MongoDB được cài đặt tại máy trạm chủ
  • Một ý tưởng chung về việc sử dụng dòng lệnh

Có nhiều cách để bạn có thể thực hiện Sao chép MongoDB

Phương pháp 1. Sao chép MongoDB bằng dữ liệu Hevo

MangoDB Replication: Hevo Logo | Hevo DataNguồn hình ảnh

Dữ liệu Hevo, Đường ống dẫn dữ liệu không mã, giúp bạn sao chép dữ liệu từ MongoDB sang Kho dữ liệu, Công cụ nghiệp vụ thông minh hoặc bất kỳ điểm đến nào khác mà bạn chọn theo cách hoàn toàn tự động và không gặp rắc rối

Hevo hỗ trợ sao chép dữ liệu từ cả phiên bản Chung & Atlas của MongoDB. Hơn nữa, với Hevo, bạn có thể Thăm dò ý kiến ​​dữ liệu của mình bằng OpLog của MongoDB hoặc thực hiện truyền dữ liệu theo thời gian thực bằng cách sử dụng Change Streams của MongoDB

Để tìm hiểu thêm, hãy xem tài liệu của Hevo về Bản sao MongoDB

Kiểm tra những gì làm cho Hevo tuyệt vời

  • Ánh xạ lược đồ tự động. Hevo loại bỏ nhiệm vụ quản lý lược đồ tẻ nhạt và tự động phát hiện lược đồ của dữ liệu đến từ MongoDB và sao chép nó vào lược đồ đích
  • Cài đặt nhanh. Hevo với các tính năng tự động, có thể được thiết lập trong thời gian tối thiểu. Hơn nữa, với giao diện người dùng tương tác và đơn giản, khách hàng mới sẽ cực kỳ dễ dàng thao tác và thực hiện các thao tác
  • Hevo được xây dựng để mở rộng quy mô. Khi số lượng nguồn và khối lượng dữ liệu của bạn tăng lên, Hevo sẽ mở rộng quy mô theo chiều ngang, xử lý hàng triệu bản ghi mỗi phút với rất ít độ trễ
  • Tải dữ liệu gia tăng. Hevo cho phép truyền dữ liệu đã được sửa đổi theo thời gian thực. Điều này đảm bảo sử dụng hiệu quả băng thông ở cả hai đầu

Với chuyển động dữ liệu theo thời gian thực liên tục, Hevo cho phép bạn sao chép dữ liệu MongoDB cùng với các nguồn dữ liệu khác của bạn và tải liền mạch dữ liệu đó đến đích bạn chọn với giao diện dễ cài đặt, không cần mã. Hãy dùng thử miễn phí quyền truy cập đầy đủ tính năng trong 14 ngày của chúng tôi

Bắt đầu với Hevo miễn phí

Phương pháp 2. Bản sao MongoDB bằng Bộ bản sao

Bạn có thể sử dụng các phương pháp sau để tạo và triển khai Bộ bản sao của mình

Tạo một bộ bản sao MongoDB mới

Bạn có thể thiết lập Bộ bản sao mới trong MongoDB bằng các bước sau

  •  
Bước 1. Bắt đầu các phiên bản MongoDB

Để bắt đầu phiên bản MongoDB, hãy chỉ định giá trị cổng cho phiên bản Mongo của bạn cùng với đường dẫn đến bản cài đặt MongoDB trên hệ thống của bạn. Sử dụng lệnh sau để kích hoạt phiên bản MongoDB của bạn

$ mongod --port 27017 --dbpath /var/lib/mongodb --replSet replicaSet1

MongoDB sử dụng cổng 27017 làm số cổng mặc định. Trong trường hợp người dùng không chỉ định số cổng, MongoDB sẽ tự động thiết lập kết nối với cổng mặc định

Tham số –repelset chỉ định tên của bộ bản sao sẽ lưu trữ các phiên bản MongoDB khác nhau. Ở đây, Bộ bản sao được gọi là replicaSet1

Bước 2. Định cấu hình Bộ bản sao

Một bộ bản sao chứa nhiều phiên bản giao tiếp với nhau. Để thiết lập liên lạc giữa chúng, bạn cần chỉ định tên máy chủ cùng với IP của chúng như sau

MongoDB Replication: Configuring the Replica Set | Hevo DataNguồn hình ảnh. đỏ mặt

Bạn cũng có thể kết nối chúng bằng cách sử dụng các dòng mã sau

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017

Để thiết lập kết nối hoàn chỉnh, bạn cần sử dụng các lệnh này một lần với mọi máy chủ bằng cách thay đổi máy chủ/nút theo yêu cầu

Bước 3. Kích hoạt bản sao trong MongoDB

Khi bạn đã thực hiện tất cả các cấu hình, bây giờ bạn cần mở Mongo Shell bằng phiên bản chính của mình và sử dụng lệnh khởi tạo như sau

rs.initiate()

Bây giờ bạn sẽ thấy đầu ra sau trên hệ thống của mình. Điều này chỉ ra rằng quá trình sao chép đã bắt đầu

MongoDB shell version v3.4.10
connecting to: mongodb://172.34.21.121:27017
MongoDB server version: 3.4.10
> rs.initiate()
{
"info2": "no configuration specified. Using a default configuration for the set",
"me" : "example:27017",
"ok" : 1

Đây là cách bạn có thể sử dụng rs. started() lệnh để bắt đầu quá trình sao chép. Bây giờ Mongo Shell sẽ thay đổi lời nhắc của nó thành tên của Bộ bản sao của bạn, replicaSet1

Bước 4. Thêm các phiên bản MongoDB vào các bộ bản sao

Khi bạn đã khởi tạo Bộ bản sao của mình, bây giờ bạn có thể bắt đầu thêm các phiên bản MongoDB khác nhau vào nó bằng lệnh add như sau

rs.add()

Ví dụ: nếu bạn muốn thêm nút-2 và nút-3 vào replicaSet1, bạn có thể sử dụng lệnh sau trong Mongo Shell của mình

rs.add('node-2:27017')
rs.add('node-3:27017')
MongoDB Replication: Adding Nodes | Hevo DataNguồn hình ảnh. Trung bình Samuel Addico

Đầu ra {'ok'. 1} chỉ ra rằng một phiên bản MongoDB đã được thêm thành công vào Bộ bản sao. Để kiểm tra trạng thái của bản sao, bạn có thể sử dụng lệnh trạng thái như sau.

rs.status()

Lệnh status sẽ tạo đầu ra sau nếu các phiên bản MongoDB đã được thêm thành công

MongoDB Replication: Status | Hevo DataNguồn hình ảnh. Trung bình Samuel Addico

Đây là cách bạn có thể thêm các phiên bản MongoDB vào Bộ bản sao của mình

Bước 5. Xóa Instances khỏi Replica Sets

Bộ bản sao MongoDB cũng cho phép người dùng xóa một hoặc nhiều phiên bản mà họ đã thêm vào bộ bản sao bằng cách sử dụng lệnh xóa. Để xóa một phiên bản cụ thể, trước tiên bạn cần tắt nó bằng lệnh sau

db.shutdownserver

Khi bạn đã tắt máy chủ, bạn cần kết nối với máy chủ chính của mình và sử dụng lệnh xóa như sau

________số 8

Ví dụ: nếu bạn muốn xóa phiên bản “nút-2” khỏi replicaSet1, bạn có thể sử dụng lệnh sau

rs.remove("node-2")
Bước 6. Kiểm tra quá trình sao chép

Bạn có thể kiểm tra quy trình bằng cách thêm tài liệu vào nút chính. Nếu sao chép hoạt động bình thường, tài liệu sẽ tự động được sao chép vào nút phụ

Đầu tiên, kết nối với nút chính và thêm tài liệu bằng lệnh insertOne như sau

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
0

Chuyển sang nút phụ của bạn, nút-2 bằng lệnh sau

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
1

Nếu quá trình sao chép diễn ra đúng cách, tài liệu trong nút chính của bạn sẽ tự động được sao chép sang nút phụ. Bạn có thể kiểm tra điều này bằng lệnh find như sau

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
2

Lệnh find sẽ truy cập cơ sở dữ liệu movies và bộ sưu tập release_year và xuất ra các tài liệu được lưu trữ như sau.  

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
3

Đầu ra ở trên chỉ ra rằng tài liệu đã được tự động sao chép vào nút phụ. Đây là cách bạn có thể dễ dàng thiết lập Bản sao MongoDB bằng Bộ bản sao và thực hiện các thao tác khác nhau trên chúng

Chuyển đổi một bộ bản sao độc lập sang MongoDB

MongoDB cho phép người dùng chuyển đổi các phiên bản MongoDB độc lập của họ thành Bộ bản sao. Các phiên bản độc lập được sử dụng trong quá trình thử nghiệm và phát triển, trong khi Bộ bản sao là một phần của giai đoạn sản xuất

Đầu tiên, tắt phiên bản mongod của bạn bằng lệnh sau

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
4

Khởi động lại phiên bản mongod của bạn. Bạn phải sử dụng tham số –repelSet trong lệnh của mình để chỉ định Bộ bản sao bạn sẽ sử dụng. Người dùng phải chỉ định tên của máy chủ cùng với IP duy nhất của họ trong lệnh của họ như sau

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
5

Kết nối Mongo Shell của bạn với phiên bản MongoDB của bạn và sử dụng lệnh khởi tạo để bắt đầu quá trình sao chép và chuyển đổi thành công phiên bản MongoDB độc lập của bạn thành Bộ bản sao

Bây giờ bạn có thể thực hiện tất cả các thao tác cơ bản như thêm phiên bản, xóa phiên bản, v.v. sử dụng các lệnh sau

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
6

Bạn thậm chí có thể kiểm tra trạng thái của bộ bản sao của mình bằng cách sử dụng rs. status() và rs. conf() các lệnh

Đây là cách bạn có thể chuyển đổi phiên bản MongoDB độc lập của mình thành Bộ bản sao MongoDB

Để biết thêm thông tin về cách tạo Bộ bản sao trong MongoDB, bạn có thể xem tài liệu chính thức tại đây

Phương pháp 3. Thiết lập bản sao MongoDB bằng cách sử dụng Sharding

MongoDB cho phép người dùng sử dụng khái niệm Sharding một cách thuận tiện, cho phép bạn sao chép dữ liệu trên nhiều máy chủ. Bạn có thể sử dụng các phương pháp sau để sao chép dữ liệu MongoDB của mình bằng Chia sẻ

Tạo một MongoDB Shard mới dưới dạng một bộ bản sao

Bạn có thể sao chép dữ liệu MongoDB của mình thành nhiều Phân đoạn khác nhau bằng các bước sau

Bước 1. Tạo máy chủ cấu hình cho MongoDB

Khởi chạy máy chủ MongoDB trên hệ thống của bạn và đăng nhập với tư cách siêu người dùng. Bạn có thể sử dụng lệnh sau để bắt đầu với tư cách là siêu người dùng

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
7

Khi bạn đã đăng nhập, bạn cần tạo các thư mục cần thiết cho ba Bộ bản sao của mình. Bạn có thể sử dụng các dòng mã sau để tạo chúng

Các lệnh cho máy chủ cấu hình

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
8

Các lệnh cho ReplicaSet1

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
9

Các lệnh cho ReplicaSet2

rs.initiate()
0

Các lệnh cho ReplicaSet3

rs.initiate()
1

Để tạo Máy chủ cấu hình, bạn cần sử dụng tham số –configsvr trong lệnh mongod cùng với đường dẫn cho cơ sở dữ liệu của bạn, giá trị cổng của nó và logpath. Sử dụng cú pháp sau cho lệnh mongod

rs.initiate()
2

Sử dụng các lệnh sau để tạo ba Máy chủ cấu hình

Lệnh cho máy chủ 1

rs.initiate()
3

Lệnh cho máy chủ 2

rs.initiate()
4

Lệnh cho máy chủ 3

rs.initiate()
5

Khi bạn đã tạo thành công Máy chủ cấu hình, bạn sẽ thấy đầu ra sau trên màn hình của mình

rs.initiate()
6

Đây là cách bạn có thể tạo Máy chủ cấu hình để thiết lập Bản sao MongoDB bằng cách sử dụng Sharding

Bước 2. Tạo Shard Server cho MongoDB

Để triển khai Bản sao MongoDB bằng cách sử dụng Sharding, bạn cần khởi động Máy chủ Shard của mình dưới dạng Bộ bản sao, sử dụng cơ chế Master-Slave

Để tạo Máy chủ Shard, bạn cần sử dụng tham số –shardsvr trong lệnh mongod cùng với đường dẫn cho cơ sở dữ liệu của bạn, giá trị cổng, logpath và tham số –repelSet để chỉ định Bộ bản sao. Sử dụng cú pháp sau cho lệnh mongod

rs.initiate()
7

Sử dụng các lệnh mongodb ba lần cho mỗi Bộ bản sao để khởi động Máy chủ Shard như sau

MongoDB Replication: Starting Shard Servers | Hevo DataNguồn hình ảnh. Bản thân
Bước 3. Khởi động Máy chủ để khởi tạo Bản sao MongoDB

Khi bạn đã tạo Máy chủ Shard của mình, bây giờ bạn cần định cấu hình mọi Shard. Bắt đầu bằng cách sao chép Bộ bản sao đầu tiên sử dụng cổng 27010 bằng cách sử dụng lệnh mongo như sau

rs.initiate()
8

Sử dụng lệnh bắt đầu để bắt đầu quá trình Sao chép và sau đó thêm các phiên bản MongoDB của bạn vào Bộ bản sao bằng chức năng thêm như sau

rs.initiate()
9

Để kiểm tra xem các phiên bản MongoDB đã được thêm thành công vào bộ Bản sao hay chưa, hãy sử dụng lệnh status như sau

rs.status()

Thực hiện thao tác tương tự cho cả ReplicaSet2 và ReplicaSet 3 như sau

MongoDB Replication: Configuring Replica SetNguồn hình ảnh. Bản thân

Khi bạn đã thêm Bộ bản sao của mình, bạn cần liên kết chúng lại với nhau. Bạn có thể làm điều này như sau

MongoDB Replication: Linking Replica SetsNguồn hình ảnh. Bản thân

Đây là cách bạn khởi động Máy chủ cấu hình và phân đoạn để khởi tạo Bản sao MongoDB.  

Bước 4. Thêm phân đoạn vào máy chủ phân đoạn MongoDB

Để bắt đầu quá trình Sharding, bạn cần khởi động máy chủ mongos của mình và thêm các Phân đoạn khác nhau vào Máy chủ phân đoạn. Sử dụng lệnh sau để khởi động máy chủ mongos

MongoDB shell version v3.4.10
connecting to: mongodb://172.34.21.121:27017
MongoDB server version: 3.4.10
> rs.initiate()
{
"info2": "no configuration specified. Using a default configuration for the set",
"me" : "example:27017",
"ok" : 1
1

Để thêm Phân đoạn, bạn sẽ cần sử dụng hàm addShard và chuyển Bộ bản sao của mình làm tham số

MongoDB shell version v3.4.10
connecting to: mongodb://172.34.21.121:27017
MongoDB server version: 3.4.10
> rs.initiate()
{
"info2": "no configuration specified. Using a default configuration for the set",
"me" : "example:27017",
"ok" : 1
2

Bạn có thể kiểm tra trạng thái của Shards như sau

MongoDB shell version v3.4.10
connecting to: mongodb://172.34.21.121:27017
MongoDB server version: 3.4.10
> rs.initiate()
{
"info2": "no configuration specified. Using a default configuration for the set",
"me" : "example:27017",
"ok" : 1
3

Điều này sẽ tạo ra đầu ra sau

MongoDB Replication: Adding Shards StatusNguồn hình ảnh. Bản thân

Đây là cách bạn có thể thêm Phân đoạn vào Máy chủ Phân đoạn của mình

Bước 5. Kiểm tra quá trình sao chép

Để kiểm tra quá trình Sao chép, hãy tạo một cơ sở dữ liệu mới để lưu trữ một số tài liệu. Tạo cơ sở dữ liệu có tên movies và bộ sưu tập có tên movie_info và thêm tài liệu vào đó như sau.  

MongoDB shell version v3.4.10
connecting to: mongodb://172.34.21.121:27017
MongoDB server version: 3.4.10
> rs.initiate()
{
"info2": "no configuration specified. Using a default configuration for the set",
"me" : "example:27017",
"ok" : 1
4

Bây giờ kích hoạt Sharding cho cơ sở dữ liệu phim như sau

MongoDB shell version v3.4.10
connecting to: mongodb://172.34.21.121:27017
MongoDB server version: 3.4.10
> rs.initiate()
{
"info2": "no configuration specified. Using a default configuration for the set",
"me" : "example:27017",
"ok" : 1
5

Khi bạn đã bật Sharding cho cơ sở dữ liệu, bạn cần bật nó cho bộ sưu tập. Bạn có thể làm như sau

MongoDB shell version v3.4.10
connecting to: mongodb://172.34.21.121:27017
MongoDB server version: 3.4.10
> rs.initiate()
{
"info2": "no configuration specified. Using a default configuration for the set",
"me" : "example:27017",
"ok" : 1
6

Thêm một vài tài liệu và sử dụng lệnh trạng thái như sau

MongoDB shell version v3.4.10
connecting to: mongodb://172.34.21.121:27017
MongoDB server version: 3.4.10
> rs.initiate()
{
"info2": "no configuration specified. Using a default configuration for the set",
"me" : "example:27017",
"ok" : 1
7

Từ đầu ra được tạo bởi lệnh này, bạn có thể dễ dàng thấy trong số 49999 tài liệu, mỗi Bộ bản sao chứa một số lượng nhất định

Đây là cách bạn có thể sử dụng Sharding để thiết lập Bản sao MongoDB

Chuyển đổi một Shard Standalone thành Shard Replica Set

MongoDB cho phép người dùng chuyển đổi Shard độc lập của họ thành Bộ bản sao Shard. Các phiên bản độc lập được sử dụng trong quá trình thử nghiệm và phát triển, trong khi Bộ bản sao là một phần của giai đoạn sản xuất

Đầu tiên, tắt phiên bản mongod của bạn bằng lệnh sau

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
4

Bây giờ hãy khởi động lại phiên bản Shard của bạn. Bạn phải sử dụng tham số –repelSet trong lệnh của mình để chỉ định Bộ bản sao MongoDB (có thể giống với tên của Phân đoạn MongoDB) mà bạn sẽ sử dụng. Người dùng phải chỉ định tên của máy chủ cùng với IP duy nhất của họ trong lệnh của họ như sau

MongoDB shell version v3.4.10
connecting to: mongodb://172.34.21.121:27017
MongoDB server version: 3.4.10
> rs.initiate()
{
"info2": "no configuration specified. Using a default configuration for the set",
"me" : "example:27017",
"ok" : 1
9

Kết nối Mongo Shell của bạn với phiên bản MongoDB của bạn để bắt đầu Sharding phiên bản MongoDB của bạn và sử dụng lệnh bắt đầu để bắt đầu quá trình Sao chép và chuyển đổi thành công phiên bản độc lập Shard của bạn thành Bộ bản sao Shard

Bây giờ bạn có thể thực hiện tất cả các thao tác cơ bản như thêm phiên bản, xóa phiên bản, v.v. sử dụng các lệnh sau

mongo –host node-2 –port 27017
mongo –host node-3 –port 27017
6

Bạn thậm chí có thể kiểm tra trạng thái của Bộ bản sao của mình bằng cách sử dụng rs. trạng thái () và rs. lệnh conf()

Sau khi Bộ bản sao của bạn hoạt động, bạn có thể truy xuất thông tin về Phân đoạn bằng cách kết nối Mongo Shell với một trong các phiên bản mongos như sau

rs.add()
1

Thay thế trường tên bằng tên Phân đoạn của bạn. Nếu bạn đang sử dụng cùng tên với Bộ bản sao của mình, bạn có thể sử dụng trực tiếp hoặc bạn có thể sử dụng sh. status() và ghi lại tên Shard từ phần Shards như sau

rs.add()
2

Khi bạn có thông tin về Phân đoạn của mình, bạn cần cập nhật thông tin đó lên máy chủ lưu trữ của mình. Bạn có thể làm điều này bằng cách sử dụng lệnh sau

rs.add()
3

Thay thế tham số “replica-set” bằng tên của Bộ bản sao của bạn và tham số thành viên bằng bất kỳ thành viên nào của Bộ bản sao đó. Ví dụ: nếu bạn đang sử dụng ShardA làm Bộ bản sao của mình, bạn có thể viết lệnh của mình như sau

rs.add()
4

Lưu cài đặt cấu hình của bạn bằng lệnh sau

rs.add()
5

Thực hiện thao tác tương tự cho tất cả Shard độc lập của bạn và đặt tên riêng cho từng Shard. Đây là cách bạn có thể chuyển đổi phiên bản Shard độc lập của mình thành Bộ bản sao Shard và thực hiện Sao chép MongoDB

Để biết thêm thông tin về cách sử dụng MongoDB Shards, bạn có thể xem tài liệu chính thức tại đây

Phần kết luận

Bài viết này hướng dẫn bạn cách thiết lập Bản sao MongoDB một cách dễ dàng và trả lời tất cả các câu hỏi của bạn về nó. Nó cung cấp một giới thiệu ngắn gọn về các khái niệm khác nhau liên quan đến nó & giúp người dùng hiểu chúng tốt hơn và sử dụng chúng để thực hiện sao chép và phục hồi dữ liệu theo cách hiệu quả nhất có thể bằng các phương pháp khác nhau

Tuy nhiên, những phương pháp này có thể là một thách thức đặc biệt đối với người mới bắt đầu vì nó khá tốn công sức và đòi hỏi chuyên môn kỹ thuật chuyên sâu

Hevo là giải pháp thay thế Không cần mã cho Bản sao MongoDB và giúp sao chép dữ liệu từ MongoDB, MongoDB Atlas tới bất kỳ đích nào bạn chọn. Hevo phục vụ hơn 100 nguồn dữ liệu (bao gồm hơn 40 nguồn miễn phí) và có thể thực hiện sao chép MongoDB một cách liền mạch trong thời gian thực

Kiến trúc chịu lỗi của Hevo đảm bảo sao chép nhất quán và an toàn cho dữ liệu MongoDB của bạn. Nó sẽ làm cho cuộc sống của bạn dễ dàng hơn và sao chép dữ liệu không gặp rắc rối

Tìm hiểu thêm về hevo

Bạn muốn thử Hevo?

Tại sao bạn không chia sẻ kinh nghiệm thiết lập Bản sao MongoDB trong các nhận xét?

MongoDB có đọc bản sao không?

Từ góc độ ứng dụng khách, liệu phiên bản MongoDB có đang chạy dưới dạng một máy chủ hay không (i. e. "độc lập") hoặc bộ bản sao trong suốt. Tuy nhiên, MongoDB cung cấp các cấu hình đọc và ghi bổ sung cho các bộ bản sao .

Bản sao được đọc trong MongoDB là gì?

Bản sao có quyền đọc chỉ đơn giản là một phiên bản của cơ sở dữ liệu cung cấp dữ liệu được sao chép từ oplog ; .

Làm cách nào để tạo một bộ bản sao trong MongoDB?

Quan trọng .
Tắt phiên bản mongod độc lập
Khởi động lại phiên bản. Sử dụng tùy chọn --replSet để chỉ định tên của bộ bản sao mới. .
Kết nối mongosh với cá thể mongod
Sử dụng rs. started() để bắt đầu bộ bản sao mới. rs

Làm cách nào để sao chép dữ liệu trong MongoDB?

Bạn có thể sao chép dữ liệu MongoDB của mình thành nhiều Phân đoạn khác nhau bằng các bước sau. .
Bước 1. Tạo máy chủ cấu hình cho MongoDB
Bước 2. Tạo Shard Server cho MongoDB
Bước 3. Khởi động Máy chủ để khởi tạo Bản sao MongoDB
Bước 4. Thêm phân đoạn vào máy chủ phân đoạn MongoDB
Bước 5. Kiểm tra quá trình sao chép