Hướng dẫn how does mongodb replica set work? - bộ bản sao mongodb hoạt động như thế nào?

Tổng quan

Show
  • Làm thế nào để sao chép hoạt động trong MongoDB?
  • Làm cách nào để kích hoạt sao chép trong MongoDB
  • Làm thế nào để MongoDB phát hiện độ trễ sao chép?
  • Sự khác biệt giữa sao chép và chia rẽ là gì?
  • Lợi ích của việc nhân rộng là gì?
  • Sao chép có ảnh hưởng đến độ trễ không?

Làm thế nào để sao chép hoạt động trong MongoDB?

Làm cách nào để kích hoạt sao chép trong MongoDB

Làm thế nào để MongoDB phát hiện độ trễ sao chép?

Sự khác biệt giữa sao chép và chia rẽ là gì?

Lợi ích của việc nhân rộng là gì?

Sao chép có ảnh hưởng đến độ trễ không?

Hướng dẫn how does mongodb replica set work? - bộ bản sao mongodb hoạt động như thế nào?

Sao chép tồn tại chủ yếu để cung cấp dự phòng dữ liệu và tính sẵn sàng cao. Chúng tôi duy trì độ bền của dữ liệu bằng cách giữ nhiều bản sao hoặc bản sao của dữ liệu đó trên các máy chủ bị cô lập về mặt vật lý. Đó là sự sao chép của Viking: Quá trình tạo dữ liệu dự phòng để hợp lý hóa và bảo vệ tính khả dụng và độ bền của dữ liệu.

Sao chép cho phép bạn tăng tính khả dụng của dữ liệu bằng cách tạo nhiều bản sao dữ liệu của bạn trên các máy chủ. Điều này đặc biệt hữu ích nếu máy chủ gặp sự cố hoặc nếu bạn bị gián đoạn dịch vụ hoặc lỗi phần cứng.


Nếu dữ liệu của bạn chỉ nằm trong một cơ sở dữ liệu, bất kỳ sự kiện nào trong số này sẽ khiến việc truy cập dữ liệu không thể. Nhưng nhờ sao chép, các ứng dụng của bạn có thể trực tuyến trong trường hợp lỗi máy chủ cơ sở dữ liệu, đồng thời cung cấp các tùy chọn khắc phục và sao lưu thảm họa.

  • Với MongoDB, bản sao đạt được thông qua một bộ bản sao. Các hoạt động của nhà văn được gửi đến máy chủ chính (nút), áp dụng các hoạt động trên các máy chủ thứ cấp, sao chép dữ liệu.

  • Nếu máy chủ chính bị lỗi (thông qua sự cố hoặc lỗi hệ thống), một trong những máy chủ thứ cấp sẽ tiếp quản và trở thành nút chính mới thông qua bầu cử. Nếu máy chủ đó trở lại trực tuyến, nó sẽ trở thành thứ cấp một khi nó hoàn toàn phục hồi, hỗ trợ nút chính mới.

  • Làm cách nào để kích hoạt sao chép trong MongoDB?

  • Để bắt đầu, bạn sẽ cần cài đặt MongoDB trên ba nút trở lên. Mỗi nút trong cụm sẽ cần có khả năng giao tiếp với các nút khác qua một cổng tiêu chuẩn (27017 theo mặc định). Ngoài ra, mỗi thành viên bộ bản sao cần phải có một tên máy chủ có thể giải quyết được từ các tên khác.

Tổng quan: Kết nối mạng

Thiết lập một mạng riêng ảo. Đảm bảo rằng cấu trúc liên kết mạng của bạn định tuyến tất cả lưu lượng giữa các thành viên trong một trang web trên mạng khu vực địa phương.

Định cấu hình kiểm soát truy cập để ngăn các kết nối từ các máy khách không xác định đến bộ bản sao.

mongod --auth --replSet "rs0" --bind_ip localhost,<hostname(s)|ip address(es)>

Định cấu hình các quy tắc kết nối mạng và tường lửa để các gói đến và đi chỉ được phép trên cổng MongoDB mặc định và chỉ từ trong triển khai của bạn. Xem các cân nhắc ràng buộc IP.

Đảm bảo rằng mỗi thành viên của một bộ bản sao có thể truy cập bằng cách giải quyết DNS hoặc tên máy chủ.

Để biết thêm chi tiết, hãy xem: Ghi chú sản xuất trong tài liệu và bảo mật của chúng tôi.

mongo -u $USERNAME -p $PASSWORD

1: Bắt đầu từng thành viên của bộ bản sao với các tùy chọn thích hợp.

Ví dụ sau đây chỉ định tên bộ bản sao và liên kết IP thông qua các tùy chọn dòng lệnh --replSet và --________ 6:

Đối với <hostname(s)|ip address(es)>, chỉ định (các) tên máy chủ và/hoặc địa chỉ IP cho phiên bản Mongod của bạn rằng các máy khách từ xa (bao gồm các thành viên khác của bộ bản sao) có thể sử dụng để kết nối với phiên bản.

rs.initiate({
  _id :  "rs0",
  members: [
    { _id:  0, host:  "mongodb0.example.net:27017" },
    { _id:  1, host:  "mongodb1.example.net:27017" },
    { _id:  2, host:  "mongodb2.example.net:27017" }
  ]
})

2: Kết nối vỏ Mongo với một trong các trường hợp Mongod.

Từ cùng một cỗ máy nơi một trong những người Mongod đang chạy, hãy khởi động vỏ Mongo. Để kết nối với Mongod, nghe localhost trên cổng mặc định của 27017, chỉ cần phát hành:

Tùy thuộc vào cách bạn đã cài đặt MongoDB và thiết lập môi trường của mình, bạn có thể cần chỉ định đường dẫn đến nhị phân Mongo.

    rs.conf()

3: Bắt đầu bộ bản sao.

{
   "_id" : "rs0",
   "version" : 1,
   "protocolVersion" : NumberLong(1),
   "members" : [
      {
         "_id" : 0,
         "host" : "mongodb0.example.net:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {

         },
         "slaveDelay" : NumberLong(0),
         "votes" : 1
      },
      {
         "_id" : 1,
         "host" : "mongodb1.example.net:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {

         },
         "slaveDelay" : NumberLong(0),
         "votes" : 1
      },
      {
         "_id" : 2,
         "host" : "mongodb2.example.net:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {

         },
         "slaveDelay" : NumberLong(0),
         "votes" : 1
      }

   ],
   "settings" : {
      "chainingAllowed" : true,
      "heartbeatIntervalMillis" : 2000,
      "heartbeatTimeoutSecs" : 10,
      "electionTimeoutMillis" : 10000,
      "catchUpTimeoutMillis" : -1,
      "getLastErrorModes" : {

      },
      "getLastErrorDefaults" : {
         "w" : 1,
         "wtimeout" : 0
      },
      "replicaSetId" : ObjectId("585ab9df685f726db2c6a840")
   }
}

Từ Shell Mongo, chạy full rs.initiate({...}) trên thành viên bộ bản sao 0. Lệnh này khởi tạo bộ bản sao và chỉ nên chạy trên thành viên bộ bản sao đầu tiên. Trên các nút tiếp theo, bạn có thể chạy lệnh mà không cần tham số - chỉ rs.initiate().

MongoDB bắt đầu một bộ bản sao, sử dụng cấu hình bộ bản sao mặc định.

Làm thế nào để MongoDB phát hiện độ trễ sao chép?

4: Xem cấu hình bộ bản sao.

Sử dụng

mongo -u $USERNAME -p $PASSWORD
0 để hiển thị đối tượng Cấu hình SET bản sao:

  • Đối tượng Cấu hình SET bản sao giống như sau:
    This returns the

    mongo -u $USERNAME -p $PASSWORD
    2 value for each member, which shows the time when the last oplog entry was written to the secondary server.

    Độ trễ sao chép có thể là do một số điều, bao gồm:

  • Độ trễ mạng: Kiểm tra ping và traceroute của bạn để xem liệu có sự cố định tuyến mạng hoặc mất gói không. Xem: Tài liệu chéo Ping, bộ khắc phục sự cố Bộ bản sao. Check your ping and traceroute to see if there is a network routing issue or packet loss. See: ping diagonistic documentation, troubleshooting replica sets.

  • Thông lượng đĩa: Đôi khi máy chủ thứ cấp không thể xóa dữ liệu vào đĩa nhanh như chính. Điều này là phổ biến trên các hệ thống nhiều người thuê, đặc biệt nếu hệ thống truy cập các thiết bị đĩa qua mạng IP. Các công cụ cấp hệ thống, như VMSTAT hoặc IOSTAT có thể giúp bạn tìm hiểu thêm. Xem: Ghi chú sản xuất, Mongostat. Sometimes the secondary server is unable to flush data to disk as rapidly as the primary. This is common on multi-tenant systems, especially if the system accesses disk devices over an IP network. System-level tools, like vmstat or iostat can help you find out more. See: production notes, mongostat.

  • Đồng thời: Các hoạt động chạy dài trên chính có thể chặn các bản sao. Thiết lập mối quan tâm ghi của bạn để các hoạt động viết không thể trả lại nếu sao chép có thể theo kịp với tải. Ngoài ra, kiểm tra các truy vấn chậm và các hoạt động chạy dài thông qua trình hồ sơ cơ sở dữ liệu. Xem: Viết mối quan tâm. Long-running operations on the primary can block replications. Set up your write concern so that write operations don’t return if replication can’t keep up with the load. Alternatively, check slow queries and long-running operations via the database profiler. See: Write Concern.

  • Mối quan tâm ghi thích hợp: Nếu chính yêu cầu một lượng lớn ghi (do hoạt động tải số lượng lớn hoặc nhập dữ liệu khá lớn), các thứ hai có thể không thể theo kịp các thay đổi trên oplog. Cân nhắc đặt mối quan tâm viết của bạn cho phần lớn số người khác để đảm bảo rằng các hoạt động lớn được sao chép đúng cách. If the primary requires a large amount of writes (due to a bulk load operation or a sizable data ingestion), the secondaries may not be able to keep up with the changes on the oplog. Consider setting your write concern to “majority” in order to ensure that large operations are properly replicated.

Sự khác biệt giữa sao chép và chia rẽ là gì?

  • Sao chép: Nút máy chủ chính sao chép dữ liệu lên các nút máy chủ thứ cấp. Điều này có thể giúp tăng tính khả dụng của dữ liệu và hoạt động như một bản sao lưu, trong trường hợp nếu máy chủ chính không thành công. The primary server node copies data onto secondary server nodes. This can help increase data availability and act as a backup, in case if the primary server fails.

  • Sharding: Xử lý tỷ lệ ngang trên các máy chủ bằng cách sử dụng phím Shard. Điều này có nghĩa là thay vì sao chép dữ liệu một cách toàn diện, thu hẹp các bản sao của dữ liệu (hoặc Shards Shards) trên nhiều bộ bản sao. Các bản sao này làm việc cùng nhau để sử dụng tất cả các dữ liệu. Handles horizontal scaling across servers using a shard key. This means that rather than copying data holistically, sharding copies pieces of the data (or “shards”) across multiple replica sets. These replica sets work together to utilize all of the data.

Hãy nghĩ về nó như một chiếc bánh pizza. Với bản sao, bạn đang tạo một bản sao của một chiếc bánh pizza hoàn chỉnh trên mỗi máy chủ. Với Sharding, bạn đã gửi các lát pizza đến một số bộ bản sao khác nhau. Kết hợp với nhau, bạn có quyền truy cập vào toàn bộ bánh pizza.

Sao chép và chia rẽ có thể làm việc cùng nhau để tạo thành một thứ gọi là cụm mảnh vỡ, trong đó mỗi mảnh vỡ được nhân rộng lần lượt để bảo tồn cùng một mức độ cao.

Lợi ích của việc nhân rộng là gì?

Tái tạo có một số lợi ích. Nó làm tăng tính khả dụng và độ tin cậy của dữ liệu nhờ có nhiều bản sao trực tiếp dữ liệu của bạn.

Sao chép cũng hữu ích trong trường hợp xảy ra sự kiện như lỗi phần cứng hoặc sự cố máy chủ. Thay vì chịu thời gian chết (hoặc, thậm chí tệ hơn, mất hoàn toàn dữ liệu của bạn), bản sao đảm bảo dữ liệu của bạn được bảo vệ một cách an toàn trên nhiều máy chủ. Nếu bạn đã phân phối các nhóm phân tích, bạn có thể hợp tác hiệu quả trong các dự án kinh doanh thông minh.

Sao chép có ảnh hưởng đến độ trễ không?

Sao chép không ảnh hưởng đến việc đọc hoặc ghi độ trễ cho các máy chủ chính. Độ trễ của ứng dụng có thể được cải thiện trong trường hợp đọc dữ liệu từ các nút thứ cấp được đặt tại bản sao, miễn là bạn có thể hiển thị dữ liệu cuối cùng của khách hàng.

Sự kết luận

Thay vì phải định cấu hình và quản lý mọi thứ tự mình, bạn luôn có thể sử dụng Atlas MongoDB. Nó hợp lý hóa và tự động hóa các bộ bản sao của bạn, làm cho quá trình dễ dàng cho bạn. MongoDB Atlas cũng có thể triển khai các bộ bản sao bị che khuất toàn cầu với một vài cú nhấp chuột, cho phép địa phương dữ liệu, khắc phục thảm họa và triển khai đa khu vực.


Nội dung liên quan:

  • Cách tạo cơ sở dữ liệu trong MongoDB
  • Hướng dẫn dành cho người mới bắt đầu: Cơ bản MongoDB
  • Tài liệu nhúng trong MongoDB
  • Ví dụ về việc sử dụng MongoDB

Làm thế nào để bản sao đặt kết nối với MongoDB?

Để kết nối với triển khai bộ bản sao, chỉ định tên máy chủ và số cổng của từng phiên bản, được phân tách bằng dấu phẩy và tên đặt bản sao làm giá trị của tham số bản sao trong chuỗi kết nối. Trong ví dụ sau, tên máy chủ là host1, host2 và host3 và số cổng đều là 27017.specify the hostname and port numbers of each instance, separated by commas, and the replica set name as the value of the replicaSet parameter in the connection string. In the following example, the hostnames are host1 , host2 , and host3 , and the port numbers are all 27017 .

Bộ bản sao có nghĩa là gì?

Bản sao là một quá trình chạy nhiều phiên bản của POD và giữ cho số lượng pod được chỉ định không đổi.Mục đích của nó là duy trì số lượng phiên bản POD được chỉ định chạy trong một cụm tại bất kỳ thời điểm nào để ngăn người dùng mất quyền truy cập vào ứng dụng của họ khi POD bị lỗi hoặc không thể truy cập được.a process that runs multiple instances of a Pod and keeps the specified number of Pods constant. Its purpose is to maintain the specified number of Pod instances running in a cluster at any given time to prevent users from losing access to their application when a Pod fails or is inaccessible.

Cụm và bản sao được đặt trong MongoDB là gì?

Một cụm Atlas MongoDB là một tập hợp cấu hình bạn cung cấp cho Atlas để nó có thể thiết lập các máy chủ MongoDB cho bạn. Một bản sao MongoDB là một tập hợp con trong ATLAS.Ví dụ: trong khi tạo một cụm Atlas, họ sẽ hỏi bạn rằng bạn có muốn một bản sao, cụm bị che khuất, v.v. Hence, a MongoDB ReplicaSet is a feature subset in Atlas. For example, while creating an Atlas Cluster, they will ask you whether you want a replicaset, sharded cluster, etc.

Số lượng nút tối đa trong bản sao MongoDB là bao nhiêu?

MongoDB hỗ trợ bản sao nào?MongoDB hỗ trợ các bộ bản sao, có thể có tối đa 50 nút.50 nodes.