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

Kiến thức cơ bản về triển khai bộ bản sao MongoDB và các đoạn bằng con rối

Hệ thống cơ sở dữ liệu hoạt động tốt nhất khi chúng được tích hợp với một số phương pháp tiếp cận được xác định rõ ràng để tạo điều kiện thuận lợi cho cả hoạt động thông lượng đọc và ghi. MongoDB đã đi xa hơn bằng cách sử dụng tính năng nhân rộng và phân bổ theo chiều dọc với mục đích cho phép mở rộng quy mô theo chiều ngang và chiều dọc thay vì các DBM quan hệ có cùng khái niệm chỉ nâng cao tính năng mở rộng theo chiều dọc.

Sharding đảm bảo phân phối tải giữa các thành viên của cụm cơ sở dữ liệu để các thao tác đọc được thực hiện với độ trễ nhỏ. Nếu không có sharding, dung lượng của một máy chủ cơ sở dữ liệu duy nhất với một tập dữ liệu lớn và các hoạt động thông lượng cao có thể bị thách thức về mặt kỹ thuật và có thể dẫn đến hỏng máy chủ đó nếu không tính đến các biện pháp cần thiết. Ví dụ:nếu tỷ lệ truy vấn rất cao, dung lượng CPU của máy chủ sẽ bị quá tải.

Mặt khác, sao chép

là một khái niệm theo đó các máy chủ cơ sở dữ liệu khác nhau chứa cùng một dữ liệu. Nó đảm bảo tính khả dụng cao của dữ liệu bên cạnh việc tăng cường tính toàn vẹn của dữ liệu. Lấy ví dụ về một ứng dụng mạng xã hội có hiệu suất cao, nếu hệ thống cơ sở dữ liệu phục vụ chính bị lỗi như trong trường hợp mất điện, chúng ta nên có một hệ thống khác phục vụ cùng một dữ liệu. Một tập hợp bản sao tốt nên có nhiều hơn 3 thành viên, một trọng tài và bầu cử tối ưuTimeoutMillis. Trong bản sao, chúng ta sẽ có một nút chính / nút chính, nơi tất cả các thao tác ghi được thực hiện và sau đó được áp dụng cho một Oplog. Từ Oplog, tất cả các thay đổi đã thực hiện sau đó được áp dụng cho các thành viên khác, trong trường hợp này được gọi là các nút phụ hoặc nô lệ. Trong trường hợp các nút chính không giao tiếp sau một thời gian:bầu cửTimeoutMillis, các nút khác được báo hiệu để tiến hành một cuộc bầu cử. Bầu cửTimeoutMillis không được đặt quá cao cũng không quá thấp vì lý do hệ thống sẽ ngừng hoạt động trong một thời gian dài, do đó mất nhiều dữ liệu hoặc các cuộc bầu cử thường xuyên có thể dẫn đến độ trễ mạng tạm thời do đó dữ liệu không nhất quán tương ứng. Một trọng tài được sử dụng để thêm phiếu bầu cho thành viên chiến thắng để trở thành chủ công trong trường hợp có kết quả hòa nhưng không mang theo bất kỳ dữ liệu nào như các thành viên khác.

Tại sao lại sử dụng con rối để triển khai bộ bản sao MongoDB

Thông thường, sharding được sử dụng song song với việc nhân rộng. Quá trình định cấu hình và duy trì một tập hợp bản sao không dễ dàng do:

  1. Khả năng cao là do lỗi của con người
  2. Không có khả năng tự động thực hiện các công việc lặp đi lặp lại
  3. Tốn thời gian, đặc biệt là khi có nhiều thành viên tham gia
  4. Khả năng không hài lòng trong công việc
  5. Sự phức tạp quá mức có thể xuất hiện.

Để vượt qua những thất bại đã nêu, chúng tôi sử dụng một hệ thống tự động như Puppet có nhiều tài nguyên để giúp chúng tôi làm việc dễ dàng.

Trong blog trước, chúng ta đã tìm hiểu quy trình cài đặt và cấu hình MongoDB với Puppet. Tuy nhiên, điều quan trọng là phải hiểu các tài nguyên cơ bản của Puppet vì chúng tôi sẽ sử dụng chúng trong việc định cấu hình tập hợp bản sao và các phân đoạn của chúng tôi. Trong trường hợp bạn bỏ lỡ, đây là tệp kê khai cho quá trình cài đặt và chạy MongoDB của bạn trên máy bạn đã tạo

​  package {'mongodb':

    ensure => 'installed',

  }

  service {'mongodb':

    ensure => 'running',

    enable => true

  }

Vì vậy, chúng ta có thể đưa nội dung ở trên vào một tệp có tên runMongoDB.pp và chạy nó bằng lệnh

$ sudo apply runMongoDB.pp

Hát mô-đun và chức năng 'mongodb', chúng tôi có thể thiết lập bộ bản sao của mình với các tham số tương ứng cho mỗi tài nguyên mongodb.

Kết nối MongoDB

Chúng ta cần thiết lập kết nối mongodb giữa một nút và máy chủ mongodb. Mục đích chính của việc này là ngăn các thay đổi cấu hình được áp dụng nếu không thể truy cập được máy chủ mongodb nhưng có thể được sử dụng cho các mục đích khác như giám sát cơ sở dữ liệu. Chúng tôi sử dụng mongodb_conn_validator

mongodb_conn_validator{‘mongodb_validator’:

ensure => present,

     server: ‘127.0.0.1:27017’,

     timeout: 40,

     tcp_port:27017

    }

name:trong trường hợp này, tên mongodb_validator xác định danh tính của tài nguyên. Nó cũng có thể được coi là một chuỗi kết nối

server:đây có thể là một chuỗi hoặc một mảng các chuỗi chứa tên DNS / địa chỉ IP của máy chủ mà mongodb sẽ chạy.

timeout:đây là số giây tối đa mà trình xác thực phải đợi trước khi quyết định rằng rốidb không chạy.

tcp_port:đây là nhà cung cấp tài nguyên xác thực kết nối mongodb bằng cách thử kết nối https với máy chủ mongodb. Thiết lập chứng chỉ SSL bù nhìn từ môi trường rối cục bộ được sử dụng trong xác thực.

Tạo Cơ sở dữ liệu

mongodb_database{‘databaseName’:

ensure => present,

     tries => 10

}

Hàm này nhận 3 tham số đó là:

name:trong trường hợp này tên databaseName xác định tên của cơ sở dữ liệu chúng ta đang tạo, tên này cũng được khai báo là name => ‘databaseName’.

try:điều này xác định thời lượng tối đa hai giây cố gắng chờ khởi động MongoDB

Tạo Người dùng MongoDB

Mô-đun mongodb_user cho phép người dùng tạo và quản lý người dùng cho một cơ sở dữ liệu nhất định trong mô-đun rối.

mongodb_user {userprod:

  username => ‘prodUser’,

  ensure => present,

  password_hash => mongodb_password(‘prodUser’, ‘passProdser’),

  database => prodUser,

  roles => [‘readWrite’, ‘dbAdmin’],

  tries  => 10

}

Thuộc tính

username:xác định tên của người dùng.

password_hash:đây là mật khẩu băm của người dùng. Hàm mongodb_password () có sẵn trên MongoDB 3.0 trở lên được sử dụng để tạo hàm băm.

role:điều này xác định các vai trò mà người dùng được phép thực thi trên cơ sở dữ liệu đích.

password:đây là văn bản mật khẩu người dùng thuần túy.

database:xác định cơ sở dữ liệu mục tiêu của người dùng.

Tạo Bộ Bản sao

Chúng tôi sử dụng mô-đun mongodb_replset để tạo một tập hợp bản sao.

Mongodb_replset{'replicaset1':

   arbiter: 'host0:27017',

   ensure  => present,

   members => ['host0:27017','host1:27017', 'host2:27017', 'host3:27017'] 

   initialize_host: host1:27017

}

name:xác định tên của nhóm bản sao.

Member:một mảng các thành viên mà tập hợp bản sao sẽ giữ.

initialize_host:máy chủ lưu trữ sẽ được sử dụng để khởi tạo tập hợp bản sao

Trọng tài:xác định thành viên tập hợp bản sao sẽ được sử dụng làm trọng tài viên.

Tạo Mảnh MongoDB

Các khóa
mongodb_shard{'shard1':

   ensure  => present,

   members => ['shard1/host1:27017', 'shard1/host2:27017', 'shard1/host3:27017'] 

   keys: 'price'

}

name:xác định tên của phân đoạn.

thành viên:đây là mảng các thành viên mà phân đoạn sẽ nắm giữ.

các phím:xác định khóa sẽ được sử dụng trong dấu sắc nét hoặc một mảng các phím có thể được sử dụng để tạo khóa phân đoạn ghép.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB.Driver.Builders cách nhóm và lấy điểm trung bình

  2. Làm cách nào để lấy lại tài liệu đã cập nhật từ phương thức findOneAndUpdate?

  3. Tổng hợp kết nối cơ sở dữ liệu Trình điều khiển Java MongoDB với Tomcat

  4. Meteor trả về lỗi chuỗi thập lục phân không hợp lệ khi cố tạo ObjectID?

  5. Mongodb $ nơi truy vấn luôn đúng với nodejs