Hướng dẫn how does replica set connect to mongodb? - làm thế nào để thiết lập bản sao kết nối với mongodb?

Trên trang này

  • Sự dư thừa và tính khả dụng của dữ liệu
  • Sao chép trong MongoDB
  • Sao chép không đồng bộ
  • Chuyển đổi dự phòng tự động
  • Đọc hoạt động
  • Giao dịch
  • Thay đổi luồng
  • Tính năng bổ sung

Một bản sao được đặt trong MongoDB là một nhóm các quy trình mongod duy trì cùng một tập dữ liệu. Bộ bản sao cung cấp dự phòng và tính sẵn sàng cao, và là cơ sở cho tất cả các triển khai sản xuất. Phần này giới thiệu sự sao chép trong MongoDB cũng như các thành phần và kiến ​​trúc của các bộ bản sao. Phần này cũng cung cấp các hướng dẫn cho các nhiệm vụ phổ biến liên quan đến các bộ bản sao.

Sao chép cung cấp dự phòng và tăng tính khả dụng của dữ liệu. Với nhiều bản sao dữ liệu trên các máy chủ cơ sở dữ liệu khác nhau, sao chép cung cấp mức độ dung sai lỗi chống lại việc mất một máy chủ cơ sở dữ liệu.

Trong một số trường hợp, sao chép có thể cung cấp công suất đọc tăng lên vì khách hàng có thể gửi các hoạt động đọc đến các máy chủ khác nhau. Duy trì các bản sao của dữ liệu trong các trung tâm dữ liệu khác nhau có thể tăng dữ liệu địa phương và tính khả dụng cho các ứng dụng phân tán. Bạn cũng có thể duy trì các bản sao bổ sung cho các mục đích chuyên dụng, chẳng hạn như khắc phục thảm họa, báo cáo hoặc sao lưu.

Một bộ bản sao là một nhóm các phiên bản mongod duy trì cùng một tập dữ liệu. Một bộ bản sao chứa một số nút mang dữ liệu và tùy chọn một nút Trọng tài. Trong số các nút mang dữ liệu, một và chỉ một thành viên được coi là nút chính, trong khi các nút khác được coi là nút thứ cấp.

Nút chính nhận được tất cả các hoạt động ghi. Một bộ bản sao chỉ có thể có một khả năng chính có khả năng xác nhận ghi với mối quan tâm viết { w: "majority" }; Mặc dù trong một số trường hợp, một trường hợp Mongod khác có thể tin tưởng một cách thoáng qua cũng là chính. [1] Bản ghi chính tất cả các thay đổi đối với các tập dữ liệu của nó trong nhật ký hoạt động của nó, tức là oplog. Để biết thêm thông tin về hoạt động nút chính, xem Bản sao đặt chính.

Hướng dẫn how does replica set connect to mongodb? - làm thế nào để thiết lập bản sao kết nối với mongodb?

Các thứ hai sao chép oplog chính của chính và áp dụng các hoạt động vào các tập dữ liệu của chúng sao cho các tập dữ liệu của thứ hai phản ánh tập dữ liệu của chính. Nếu chính không có sẵn, một phụ đủ điều kiện sẽ tổ chức một cuộc bầu cử để tự chọn chính nó chính. Để biết thêm thông tin về các thành viên thứ cấp, xem Bản sao đặt thành viên thứ cấp.

Trong một số trường hợp (chẳng hạn như bạn có một hạn chế chính và phụ nhưng chi phí cấm thêm một phụ khác), bạn có thể chọn thêm một phiên bản mongod vào một bản sao được đặt làm trọng tài. Một trọng tài tham gia vào các cuộc bầu cử nhưng không giữ dữ liệu (nghĩa là không cung cấp dự phòng dữ liệu). Để biết thêm thông tin về Trọng tài viên, xem Bản sao đặt Trọng tài.

Một trọng tài sẽ luôn là một trọng tài trong khi một chính có thể từ chức và trở thành thứ cấp và một thứ cấp có thể trở thành chính trong một cuộc bầu cử.

Thứ hai sao chép oplog của chính và áp dụng các hoạt động vào bộ dữ liệu của họ không đồng bộ. Bằng cách có các bộ dữ liệu của các công ty thứ hai phản ánh tập dữ liệu của chính, bộ bản sao có thể tiếp tục hoạt động mặc dù thất bại của một hoặc nhiều thành viên.

Để biết thêm thông tin về cơ học sao chép, xem Bản sao đặt Oplog và bản sao đặt đồng bộ hóa dữ liệu.

Bắt đầu từ Phiên bản 4.2 (cũng có sẵn bắt đầu từ 4.0.6), các thành viên phụ của một bộ bản sao hiện các mục OPLOG đã mất nhiều thời gian hơn so với ngưỡng hoạt động chậm để áp dụng. Những thông điệp oplog chậm này:

  • Được đăng nhập cho các thứ hai trong diagnostic log

  • Được ghi lại dưới thành phần REPL với văn bản applied op: took ms.

  • Không phụ thuộc vào các mức nhật ký (ở cấp hệ thống hoặc thành phần)

  • Không phụ thuộc vào mức độ hồ sơ.

  • Có thể bị ảnh hưởng bởi slowOpSampleRate, tùy thuộc vào phiên bản MongoDB của bạn:

    • Trong MongoDB 4.2 và trước đó, các mục oplog chậm này không bị ảnh hưởng bởi slowOpSampleRate. MongoDB ghi nhật ký tất cả các mục oplog chậm bất kể tỷ lệ mẫu.

    • Trong MongoDB 4.4 trở lên, các mục Oplog chậm này bị ảnh hưởng bởi slowOpSampleRate

Profiler không nắm bắt các mục oplog chậm.

Độ trễ sao chép đề cập đến lượng thời gian cần thiết để sao chép (nghĩa là sao chép) một thao tác ghi trên sơ cấp thành thứ cấp. Một số giai đoạn chậm trễ nhỏ có thể được chấp nhận, nhưng các vấn đề quan trọng xuất hiện khi độ trễ sao chép tăng lên, bao gồm cả việc xây dựng áp lực bộ đệm trên chính.

Bắt đầu từ MongoDB 4.2, quản trị viên có thể giới hạn tốc độ chính áp dụng chính của nó với mục tiêu giữ độ trễ

db.serverStatus( { mirroredReads: 1 } )

2 theo giá trị tối đa có thể định cấu hình

db.serverStatus( { mirroredReads: 1 } )

3

Theo mặc định, điều khiển dòng chảy là

db.serverStatus( { mirroredReads: 1 } )

4

Ghi chú

Để điều khiển dòng chảy tham gia, cụm sao chép/phân chia phải có: featureCompitionVersion (FCV) của

db.serverStatus( { mirroredReads: 1 } )

5 và đọc Mối quan tâm

db.serverStatus( { mirroredReads: 1 } )

6. Nghĩa là, điều khiển dòng được kích hoạt không có hiệu lực nếu FCV không phải là

db.serverStatus( { mirroredReads: 1 } )

5 hoặc nếu đọc phần lớn mối quan tâm bị vô hiệu hóa.

Với điều khiển dòng chảy được bật, khi độ trễ phát triển gần với

db.serverStatus( { mirroredReads: 1 } )

3, ghi trên chính phải lấy vé trước khi khóa để áp dụng ghi. Bằng cách giới hạn số lượng vé được phát hành mỗi giây, cơ chế kiểm soát dòng chảy cố gắng giữ độ trễ theo mục tiêu.

Để biết thêm thông tin, hãy xem Kiểm tra độ trễ sao chép và điều khiển dòng chảy.

Khi một chính không giao tiếp với các thành viên khác của tập hợp hơn so với khoảng thời gian

db.serverStatus( { mirroredReads: 1 } )

9 được định cấu hình (10 giây theo mặc định), một cuộc gọi thứ cấp đủ điều kiện để một cuộc bầu cử tự đề cử là chính mới. Cụm cố gắng hoàn thành cuộc bầu cử chính và tiếp tục các hoạt động bình thường.

Bộ bản sao không thể xử lý các hoạt động ghi cho đến khi cuộc bầu cử hoàn thành thành công. Bộ bản sao có thể tiếp tục phục vụ các truy vấn đọc nếu các truy vấn đó được định cấu hình để chạy trên các phần hai trong khi chính là ngoại tuyến.

Thời gian trung bình trước khi một cụm bầu một tiểu học mới thường không vượt quá 12 giây, giả sử mặc định mongod0. Điều này bao gồm thời gian cần thiết để đánh dấu chính là không có sẵn và gọi và hoàn thành một cuộc bầu cử. Bạn có thể điều chỉnh khoảng thời gian này bằng cách sửa đổi tùy chọn cấu hình sao chép mongod1. Các yếu tố như độ trễ mạng có thể kéo dài thời gian cần thiết cho các cuộc bầu cử tập hợp bản sao để hoàn thành, từ đó ảnh hưởng đến lượng thời gian mà cụm của bạn có thể hoạt động mà không cần chính. Những yếu tố này phụ thuộc vào kiến ​​trúc cụm cụ thể của bạn.unavailable and call and complete an election. You can tune this time period by modifying the mongod1 replication configuration option. Factors such as network latency may extend the time required for replica set elections to complete, which in turn affects the amount of time your cluster may operate without a primary. These factors are dependent on your particular cluster architecture.

Giảm tùy chọn cấu hình sao chép

db.serverStatus( { mirroredReads: 1 } )

9 từ mặc định mongod3 (10 giây) có thể dẫn đến việc phát hiện nhanh hơn lỗi chính. Tuy nhiên, cụm có thể gọi các cuộc bầu cử thường xuyên hơn do các yếu tố như độ trễ mạng tạm thời ngay cả khi chính là sức khỏe khác. Điều này có thể dẫn đến tăng rollback cho các hoạt động ghi W: 1.

Logic kết nối ứng dụng của bạn nên bao gồm dung sai cho các thất bại tự động và các cuộc bầu cử tiếp theo. Bắt đầu từ MongoDB 3.6, Trình điều khiển MongoDB có thể phát hiện mất chính của chính và tự động thử lại một số hoạt động ghi một lần, cung cấp thêm việc xử lý tích hợp các thất bại tự động và bầu cử:

  • MongoDB 4.2+ Trình điều khiển tương thích cho phép ghi lại có thể thử lại theo mặc định

  • Trình điều khiển tương thích MongoDB 4.0 và tương thích 3,6 phải cho phép ghi rõ ràng bằng cách bao gồm mongod4 trong chuỗi kết nối.

Bắt đầu từ phiên bản 4.4, MongoDB cung cấp các lần đọc được nhân đôi cho bộ đệm của các thành viên thứ cấp có thể bầu trước trước với dữ liệu được truy cập gần đây nhất. Làm ấm trước bộ đệm của một phụ có thể giúp khôi phục hiệu suất nhanh hơn sau một cuộc bầu cử.mirrored reads to pre-warm electable secondary members' cache with the most recently accessed data. Pre-warming the cache of a secondary can help restore performance more quickly after an election.

Để tìm hiểu thêm về quy trình chuyển đổi dự phòng MongoDB, hãy xem:

  • Bản sao đặt cuộc bầu cử

  • Có thể thử lại viết

  • Rollbacks trong khi bộ chuyển đổi dự phòng

Theo mặc định, máy khách đọc từ chính [1]; Tuy nhiên, khách hàng có thể chỉ định một ưu tiên đọc để gửi các hoạt động đọc đến thứ hai.

Sự sao chép không đồng bộ thành các thứ hai có nghĩa là đọc từ các thứ hai có thể trả về dữ liệu không phản ánh trạng thái của dữ liệu trên chính. to secondaries means that reads from secondaries may return data that does not reflect the state of the data on the primary.

Các giao dịch đa tài liệu có chứa các hoạt động đọc phải sử dụng Preference mongod5. Tất cả các hoạt động trong một giao dịch nhất định phải định tuyến đến cùng một thành viên.

Để biết thông tin về đọc từ các bộ bản sao, xem hãy đọc ưu tiên.

Tùy thuộc vào mối quan tâm đọc, khách hàng có thể thấy kết quả ghi trước khi ghi bền:

  • Bất kể mối quan tâm của Write là gì, các khách hàng khác sử dụng mongod6 hoặc mongod7 ĐỌC Mối quan tâm có thể thấy kết quả của hoạt động ghi trước khi hoạt động ghi được thừa nhận cho khách hàng phát hành.

  • Khách hàng sử dụng mongod6 hoặc mongod7 Đọc Mối quan tâm có thể đọc dữ liệu có thể được quay lại trong quá trình đặt bản sao.

Đối với các hoạt động trong một giao dịch đa tài liệu, khi một giao dịch thực hiện, tất cả các thay đổi dữ liệu được thực hiện trong giao dịch được lưu và hiển thị bên ngoài giao dịch. Đó là, một giao dịch sẽ không cam kết một số thay đổi của nó trong khi quay lại những người khác.

Cho đến khi một giao dịch thực hiện, các thay đổi dữ liệu được thực hiện trong giao dịch không hiển thị bên ngoài giao dịch.

Tuy nhiên, khi một giao dịch viết cho nhiều mảnh vỡ, không phải tất cả các hoạt động đọc bên ngoài cần phải chờ kết quả của giao dịch cam kết được hiển thị trên các mảnh vỡ. Ví dụ: nếu một giao dịch được cam kết và ghi 1 có thể nhìn thấy trên Shard A nhưng Viết 2 vẫn chưa được nhìn thấy trên Shard B, thì một lần đọc bên ngoài tại Read Mối quan tâm mongod6 có thể đọc kết quả của Write 1 mà không thấy Write 2.

Để biết thêm thông tin về sự cô lập đọc, tính nhất quán và tính hồi phục đối với MongoDB, xem cách cô lập, tính nhất quán và tính hồi phục.

Đọc được nhân đôi làm giảm tác động của các cuộc bầu cử sơ bộ sau khi ngừng hoạt động hoặc bảo trì theo kế hoạch. Sau khi chuyển đổi dự phòng trong một bộ bản sao, thứ cấp đảm nhận khi bản cập nhật chính mới cập nhật bộ nhớ cache của nó khi các truy vấn mới xuất hiện. Trong khi bộ đệm đang nóng lên có thể bị ảnh hưởng.

Bắt đầu từ Phiên bản 4.4, nhân đôi đọc trước Bộ nhớ cache của các thành viên tập bản sao thứ cấp mongod1. Để làm ấm trước bộ nhớ cache của các thứ hai có thể chọn, chính phản ánh một mẫu của các hoạt động được hỗ trợ mà nó nhận được để chọn thứ hai có thể chọn.supported operations it receives to electable secondaries.

Kích thước của tập hợp con của mongod1 Các thành viên đặt bản sao thứ cấp nhận được các lần đọc được nhân đôi có thể được cấu hình với tham số mongod3. Xem Bật/Vô hiệu hóa hỗ trợ cho các lần đọc được nhân đôi để biết thêm chi tiết.Enable/Disable Support for Mirrored Reads for further details.

Ghi chú

Các lần đọc được nhân đôi không ảnh hưởng đến phản ứng chính của khách hàng. Các bài đọc rằng các gương chính cho các thứ hai là các hoạt động "lửa và dữ dội". Chính không chờ phản hồi.

Đọc được các bài đọc hỗ trợ các hoạt động sau:

  • mongod4

  • mongod5

  • mongod6

  • mongod7 (cụ thể, bộ lọc được gửi dưới dạng đọc được nhân đôi)

  • mongod8 (cụ thể, bộ lọc được gửi dưới dạng đọc được nhân đôi)

Bắt đầu trong MongoDB 4.4, các lần đọc được nhân đôi được bật theo mặc định và sử dụng mặc định mongod9 của { w: "majority" }0. Để vô hiệu hóa các lần đọc được nhân đôi, đặt tham số mongod3 thành { w: "majority" }2:

db.adminCommand( {
setParameter: 1,
mirrorReads: { samplingRate: 0.0 }
} )

Với tốc độ lấy mẫu lớn hơn { w: "majority" }3, các gương chính được hỗ trợ đọc cho một tập hợp con của mongod1 thứ hai. Với tỷ lệ lấy mẫu là { w: "majority" }0, chính phản ánh một phần trăm số đọc được hỗ trợ mà nó nhận được cho mỗi thứ cấp có thể chọn.supported reads to a subset of mongod1 secondaries. With a sampling rate of { w: "majority" }0, the primary mirrors one percent of the supported reads it receives to each electable secondary.

Hãy xem xét một tập hợp bản sao bao gồm một trường chính và hai thứ hai có thể bầu. Nếu chính nhận được các hoạt động { w: "majority" }6 có thể được phản chiếu và tốc độ lấy mẫu là { w: "majority" }0, thì chính sẽ gửi khoảng { w: "majority" }8 đọc đến các trường thứ hai có thể chọn. Mỗi thứ cấp có thể chọn chỉ nhận được một phần trong số 10 lần đọc. Mỗi lần đọc được nhân đôi, được gửi đến một lựa chọn không được chọn ngẫu nhiên của các thứ hai có thể chọn.

Để thay đổi tốc độ lấy mẫu cho các lần đọc được nhân đôi, hãy đặt tham số mongod3 thành một số giữa { w: "majority" }3 và mongod1:

  • Tốc độ lấy mẫu của { w: "majority" }3 vô hiệu hóa các lần đọc được nhân đôi.

  • Tỷ lệ lấy mẫu của một số giữa { w: "majority" }3 và mongod1 dẫn đến việc chuyển tiếp chính một mẫu ngẫu nhiên của các lần đọc được hỗ trợ theo tỷ lệ mẫu được chỉ định để bầu chọn thứ hai.supported reads at the specified sample rate to electable secondaries.

  • Tỷ lệ lấy mẫu của mongod1 dẫn đến việc chuyển tiếp chính tất cả các lần đọc được hỗ trợ để chọn thứ hai.supported reads to electable secondaries.

Để biết chi tiết, xem mongod3

Bắt đầu trong MongoDB 4.4, lệnh mongod7 và phương thức shell mongod8 Trả về số liệu mongod9 Nếu bạn chỉ định trường trong hoạt động:

db.serverStatus( { mirroredReads: 1 } )

Bắt đầu từ MongoDB 4.0, các giao dịch đa tài liệu có sẵn cho các bộ bản sao.

Các giao dịch đa tài liệu có chứa các hoạt động đọc phải sử dụng Preference mongod5. Tất cả các hoạt động trong một giao dịch nhất định phải định tuyến đến cùng một thành viên.

Cho đến khi một giao dịch thực hiện, các thay đổi dữ liệu được thực hiện trong giao dịch không hiển thị bên ngoài giao dịch.

Tuy nhiên, khi một giao dịch viết cho nhiều mảnh vỡ, không phải tất cả các hoạt động đọc bên ngoài cần phải chờ kết quả của giao dịch cam kết được hiển thị trên các mảnh vỡ. Ví dụ: nếu một giao dịch được cam kết và ghi 1 có thể nhìn thấy trên Shard A nhưng Viết 2 vẫn chưa được nhìn thấy trên Shard B, thì một lần đọc bên ngoài tại Read Mối quan tâm mongod6 có thể đọc kết quả của Write 1 mà không thấy Write 2.

Bắt đầu từ MongoDB 3.6, các luồng thay đổi có sẵn cho các bộ bản sao và các cụm mảnh vỡ. Các luồng thay đổi cho phép các ứng dụng truy cập thay đổi dữ liệu thời gian thực mà không có sự phức tạp và nguy cơ theo dõi oplog. Các ứng dụng có thể sử dụng các luồng thay đổi để đăng ký tất cả các thay đổi dữ liệu trên bộ sưu tập hoặc bộ sưu tập.

Bộ bản sao cung cấp một số tùy chọn để hỗ trợ nhu cầu ứng dụng. Ví dụ: bạn có thể triển khai một bộ bản sao với các thành viên trong nhiều trung tâm dữ liệu hoặc kiểm soát kết quả của các cuộc bầu cử bằng cách điều chỉnh diagnostic log2 của một số thành viên. Các bộ bản sao cũng hỗ trợ các thành viên chuyên dụng để báo cáo, khắc phục thảm họa hoặc chức năng sao lưu.

Xem ưu tiên 0 Bản sao đặt các thành viên, HIDDEN Replica Set Thành viên và các thành viên đặt bản sao bị trì hoãn để biết thêm thông tin.

Làm thế nào để URI kết nối với MongoDB?

Tất cả các trình điều khiển MongoDB chính thức cho phép bạn sử dụng URI chuỗi kết nối để kết nối với MongoDB. MongoDB: //: tiền tố, chỉ ra một chuỗi kết nối URI. Tên người dùng: Mật khẩu@: Tên người dùng và mật khẩu được sử dụng để đăng nhập vào cơ sở dữ liệu. HostX: PortX: Danh sách chuỗi kết nối được sử dụng để kết nối với các nút Mongos.

Làm thế nào bạn có thể thiết lập bộ bản sao MongoDB?

Đối với mỗi thành viên, hãy bắt đầu một phiên bản Mongod với các cài đặt sau:..
Đặt sao chép.Tùy chọn repressSetName cho tên đặt bản sao.....
Đặt mạng.Tùy chọn BINDIP với tên máy chủ/IP hoặc danh sách các tên máy chủ/IPS được phân phối bằng dấu phẩy ..
Đặt bất kỳ cài đặt nào khác phù hợp cho việc triển khai của bạn ..

Làm thế nào để MongoDB kết nối với Mongoclient?

Kết nối với một ví dụ MongoDB duy nhất Const Mongoclient = Yêu cầu ('MongoDB').Mongoclient;const assert = yêu cầu ('khẳng định');// kết nối url const url = 'MongoDB: // localhost: 27017';// Tên cơ sở dữ liệu const dbname = 'myProject';// Sử dụng Phương thức kết nối để kết nối với máy chủ Mongoclient.const MongoClient = require('mongodb'). MongoClient; const assert = require('assert'); // Connection URL const url = 'mongodb://localhost:27017'; // Database Name const dbName = 'myproject'; // Use connect method to connect to the server MongoClient.

Làm cách nào để kết nối với MongoDB?

Làm thế nào để kết nối với MongoDB..
Tạo cơ sở dữ liệu trên MongoDB.Kết nối với vỏ MongoDB.Tạo cơ sở dữ liệu "TestDB".Tạo bộ sưu tập "người dùng" và chèn nó vào "TestDB" ..
Thiết lập người dùng.Kết nối với quản trị viên DB.Tạo quản trị viên người dùng.....
Tạo kết nối với MongoDB trên CPD.Đặt thông tin cần thiết ..