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

Kiến thức cơ bản về nhân rộng chuỗi MongoDB

Tái tạo chuỗi là gì?

Khi chúng ta nói về sao chép, chúng ta đang đề cập đến quá trình tạo các bản sao dự phòng của dữ liệu để đáp ứng các tiêu chí thiết kế về tính sẵn có của dữ liệu. Do đó, sao chép chuỗi đề cập đến thứ tự tuyến tính của các máy chủ MongoDB để tạo thành một chuỗi đồng bộ. Chuỗi chứa một nút chính, được thành công bởi các máy chủ thứ cấp được sắp xếp tuyến tính. Giống như chuỗi từ gợi ý, máy chủ gần máy chủ chính nhất sẽ sao chép từ nó trong khi mọi máy chủ phụ kế tiếp khác sẽ sao chép từ máy chủ MongoDB thứ cấp trước đó. Đây là sự khác biệt chính giữa sao chép chuỗi và sao chép bình thường. Sao chép theo chuỗi xảy ra khi một nút phụ chọn mục tiêu của nó bằng thời gian ping hoặc khi nút gần nhất là nút phụ. Mặc dù sao chép chuỗi khi nó xuất hiện, làm giảm tải trên nút chính, nhưng nó có thể gây ra độ trễ sao chép.

Tại sao lại sử dụng nhân rộng chuỗi?

Cơ sở hạ tầng hệ thống đôi khi bị lỗi không thể đoán trước dẫn đến mất máy chủ và do đó ảnh hưởng đến tính khả dụng. Nhân rộng đảm bảo rằng các lỗi không thể đoán trước không ảnh hưởng đến tính khả dụng. Nhân rộng hơn nữa cho phép khôi phục từ lỗi phần cứng và gián đoạn dịch vụ. Cả bản sao có chuỗi và không bị giới hạn đều phục vụ mục đích này là đảm bảo tính khả dụng bất chấp sự cố hệ thống. Sau khi thiết lập nhân rộng là quan trọng, bạn có thể hỏi tại sao lại sử dụng nhân rộng chuỗi nói riêng. Không có sự khác biệt về hiệu suất giữa bản sao có chuỗi và không bị giới hạn trong MongoDb. Trong cả hai trường hợp, khi nút chính bị lỗi, các máy chủ phụ sẽ bỏ phiếu cho nút chính hoạt động mới và do đó việc ghi và đọc dữ liệu không bị ảnh hưởng trong cả hai trường hợp. Tuy nhiên, sao chép theo chuỗi là kiểu sao chép mặc định trong MongoDb.

Cách thiết lập bản sao chuỗi

Theo mặc định, sao chép chuỗi được bật trong MongoDB. Do đó, chúng tôi sẽ trình bày chi tiết về quá trình hủy kích hoạt sao chép chuỗi. Lý do chính cho việc sao chép chuỗi có thể bị vô hiệu hóa là nếu nó gây ra độ trễ. Tuy nhiên, giá trị của việc sao chép chuỗi lại vượt trội hơn so với độ trễ và do đó, trong hầu hết các trường hợp, việc hủy kích hoạt nó là không cần thiết. Chỉ trong trường hợp sao chép chuỗi không hoạt động theo mặc định, các lệnh sau sẽ giúp bạn kích hoạt.

cfg = rs.config()
cfg.settings.chainingAllowed = true
rs.reconfig(cfg)

Quá trình này có thể đảo ngược. Khi buộc phải hủy kích hoạt sao chép chuỗi, quy trình sau đây được tuân theo một cách tôn giáo.

cfg = rs.config()
cfg.settings.chainingAllowed = false
rs.reconfig(cfg)

Mẹo &Thủ thuật để Nhân rộng Chuỗi

Những hạn chế đáng sợ nhất của sao chép chuỗi là độ trễ sao chép. Độ trễ sao chép đề cập đến độ trễ xảy ra giữa thời gian khi một hoạt động được thực hiện trên chính và khi cùng một hoạt động được sao chép trên phụ. Mặc dù điều đó là không thể xảy ra một cách tự nhiên, nhưng người ta luôn mong muốn rằng tốc độ sao chép rất cao trong đó độ trễ sao chép bằng không. Để tránh hoặc giảm thiểu độ trễ sao chép xuống gần bằng 0, tiêu chí thiết kế thận trọng là sử dụng các máy chủ chính và phụ có cùng thông số kỹ thuật về CPU, RAM, IO và các thông số kỹ thuật liên quan đến mạng.

Mặc dù sao chép chuỗi đảm bảo tính khả dụng của dữ liệu, nhưng sao chép chuỗi có thể được sử dụng cùng với việc ghi nhật ký. Ghi nhật ký cung cấp sự an toàn cho dữ liệu bằng cách ghi vào nhật ký thường xuyên được chuyển vào đĩa. Khi cả hai được kết hợp, ba máy chủ được ghi cho mỗi yêu cầu ghi, không giống như trong nhân rộng chuỗi chỉ có hai máy chủ được ghi cho mỗi yêu cầu ghi.

Một mẹo quan trọng khác là sử dụng w với sao chép. Tham số w kiểm soát số lượng máy chủ mà phản hồi phải được ghi vào trước khi trả về thành công. Khi tham số w được đặt, getlasterror sẽ kiểm tra nhật ký hoạt động của máy chủ và đợi cho đến khi số lượng máy chủ ‘w’ nhất định được áp dụng thao tác.

Sử dụng một công cụ giám sát như Dịch vụ giám sát MongoDB (MMS) hoặc ClusterControl cho phép bạn có được trạng thái của các nút bản sao của mình và trực quan hóa các thay đổi theo thời gian. Ví dụ:trong MMS, bạn có thể tìm thấy đồ thị độ trễ bản sao của các nút phụ cho thấy sự thay đổi trong thời gian trễ của bản sao.

Đo lường hiệu suất nhân rộng chuỗi

Bây giờ, bạn đã biết rằng thông số hiệu suất quan trọng nhất của quá trình tái tạo chuỗi là thời gian trễ của quá trình sao chép. Do đó, chúng ta sẽ thảo luận về cách kiểm tra khoảng thời gian trễ nhân rộng. Kiểm tra này có thể được thực hiện thông qua MongoDb shell script. Để thực hiện kiểm tra độ trễ sao chép, chúng tôi so sánh nhật ký của sự kiện cuối cùng trên nút chính và nhật ký của sự kiện cuối cùng trên nút phụ.

Để kiểm tra thông tin cho nút chính, chúng tôi chạy đoạn mã sau.

db.printSlaveReplicationInfo()

Lệnh trên sẽ cung cấp thông tin về tất cả các hoạt động gần đây trên nút chính. Kết quả sẽ xuất hiện như bên dưới.

rs-ds046297:PRIMARY db.printSlaveReplicationInfo()
source: ds046297-a1.mongolab.com:46297
synced To: Tue Mar 05 2013 07:48:19 GMT-0800 (PST)
      = 7475 secs ago (2.08hrs)
source: ds046297-a2.mongolab.com:46297
synced To: Tue Mar 05 2013 07:48:19 GMT-0800 (PST)
      = 7475 secs ago (2.08hrs)

Sau khi có được oplog cho nút chính, bây giờ chúng tôi quan tâm đến oplog cho nút phụ. Lệnh sau sẽ giúp chúng tôi có được oplog.

db.printReplicationInfo()

Lệnh này sẽ cung cấp một đầu ra với các chi tiết về kích thước oplog, độ dài nhật ký, thời gian cho sự kiện oplog đầu tiên, thời gian cho sự kiện cuối cùng của oplog và thời gian hiện tại. Kết quả xuất hiện như bên dưới.

rs-ds046297:PRIMARY db.printReplicationInfo()
configured oplog size:   1024MB
log length start to end: 5589 secs (1.55hrs)
oplog first event time:  Tue Mar 05 2013 06:15:19 GMT-0800 (PST)
oplog last event time:   Tue Mar 05 2013 07:48:19 GMT-0800 (PST)
now:                     Tue Mar 05 2013 09:53:07 GMT-0800 (PST)

Từ oplog của máy chủ chính, lần đồng bộ hóa cuối cùng xảy ra vào Thứ Ba ngày 05 tháng 3 năm 2013 07:48:19 GMT-0800 (PST). Từ oplog của máy chủ phụ, hoạt động cuối cùng đã xảy ra vào Thứ Ba ngày 05 tháng 3 năm 2013 07:48:19 GMT-0800 (PST). Độ trễ sao chép bằng 0 và do đó hệ thống sao chép chuỗi của chúng tôi đang hoạt động chính xác. Tuy nhiên, độ trễ thời gian sao chép có thể thay đổi tùy thuộc vào số lượng thay đổi cần được sao chép.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. tìm kiếm và sắp xếp toàn văn php mongodb

  2. 2 cách để hiện một chỉ mục trong MongoDB

  3. Nhà điều hành đường ống tổng hợp MongoDB $ gt

  4. Liệt kê tin nhắn cuối cùng của mỗi cuộc trò chuyện, liên quan đến người dùng, trong MongoDB

  5. Làm cách nào để kiểm tra xem một chỉ mục có đang được sử dụng hay không