Cách sao chép trong MongoDB hoạt động [Bộ bản sao]. Bản sao là khái niệm đồng bộ hóa dữ liệu từ một máy chủ, còn được gọi là máy chủ chính đến một hoặc nhiều cơ sở dữ liệu bản sao. Điều này đảm bảo tính sẵn sàng cao của dữ liệu và dự phòng do nhiều bản sao dữ liệu được trải rộng trên một số máy chủ cơ sở dữ liệu. Trong trường hợp một máy chủ gặp sự cố, dữ liệu luôn có thể được lấy từ các nút phụ
Sao chép cung cấp khả năng chịu lỗi và cải thiện khả năng truy cập dữ liệu do các bản sao của cùng một dữ liệu được sao chép trên nhiều máy chủ trong thời gian thực. Điều này giúp khắc phục thảm họa và duy trì hoạt động kinh doanh trong trường hợp máy chủ chính bị lỗi gây gián đoạn và ngừng hoạt động dịch vụ
Thực hiện theo hướng dẫn này để khám phá Cách sao chép trong MongoDB Hoạt động [Bộ bản sao]
cũng đọc
SQLite so với MongoDB – Đâu là sự khác biệt?
Khái niệm về sao chép
Trong bản sao MongoDB, toàn bộ tập dữ liệu từ một máy chủ cơ sở dữ liệu MongoDB duy nhất được sao chép và đồng bộ hóa trên nhiều phiên bản máy chủ. Điều này cung cấp dự phòng, do đó, dẫn đến tính sẵn sàng cao của dữ liệu. Ngoài ra, nó cũng loại bỏ bất kỳ điểm lỗi đơn lẻ nào nếu máy chủ phát sinh sự cố có thể dẫn đến thời gian ngừng hoạt động của dịch vụ
Hơn nữa, sao chép đạt được thông qua các bộ bản sao. Bộ bản sao là một nhóm các phiên bản mongodb lưu trữ cùng một bộ dữ liệu. Nó bao gồm một nút chính chấp nhận tất cả các thao tác ghi và một hoặc nhiều nút phụ trên đó dữ liệu được sao chép và đồng bộ hóa. Điều này đảm bảo rằng, tại bất kỳ thời điểm nào, dữ liệu trên nút chính hoàn toàn giống với dữ liệu trên nút phụ
Điều quan trọng, trong trường hợp máy chủ chính ngừng hoạt động do sự cố hệ thống, một trong các máy chủ phụ sẽ tiếp quản và trở thành nút chính mới thông qua bầu cử. Ngoài ra, nếu máy chủ bị lỗi trực tuyến trở lại, thì nó sẽ trở thành nút phụ
Dưới đây là một số điểm chính cần ghi nhớ khi làm việc với bản sao
- Trong một bộ bản sao, một nút được chỉ định là nút chính trong khi các nút còn lại là nút phụ. Thông thường nên sử dụng tối thiểu hai nút phụ
- Tất cả dữ liệu sao chép từ nút chính sang nút phụ
- Trong trường hợp nút chính bị lỗi, quá trình chuyển đổi dự phòng tự động sẽ bắt đầu và một nút chính mới được chọn giữa các nút phụ
- Sau khi phục hồi nút chính bị lỗi, nó sẽ tham gia lại bộ sao chép, nhưng lần này là nút phụ
cũng đọc
Cách tạo đa nút MongoDB Cluster trên Ubuntu 20. 04
Lợi ích của việc sao chép
Tóm lại, đây là một số lợi ích của việc triển khai sao chép cơ sở dữ liệu trên thiết lập MongoDB của bạn
1. Tính sẵn sàng cao của dữ liệu
Khái niệm dữ liệu được đồng bộ hóa đồng đều trên nhiều máy chủ đảm bảo dữ liệu luôn sẵn sàng 24/7. Nhờ dự phòng, mọi điểm lỗi đơn lẻ đều bị loại bỏ, do đó cải thiện khả năng truy cập vào dữ liệu của bạn
2. Khắc phục thảm họa
Tính sẵn sàng cao đảm bảo khắc phục thảm họa trong trường hợp có bất kỳ tình huống nào xảy ra. Mọi lỗi đều có thể dễ dàng giải quyết bằng cách truy xuất dữ liệu từ các nút khác chứa các bản sao dữ liệu chính xác
3. Chia tỷ lệ ngang
Bản thân kiến trúc sao chép dẫn đến tỷ lệ ngang trong đó cùng một dữ liệu được đồng bộ hóa trên nhiều nút
4. An toàn dữ liệu
Vì dữ liệu nằm trên nhiều máy chủ nên quyền truy cập vào dữ liệu và sự an toàn của nó được đảm bảo nếu máy chủ chính bị lỗi vì bất kỳ lý do gì
Trong các bước sau đây, chúng tôi chứng minh bằng các ví dụ sao chép trong MongoDB
cũng đọc
Cách cài đặt máy chủ cộng đồng MongoDB trên Azure/AWS
Bản sao MongoDB hoạt động như thế nào
Về cơ bản, trong MongoDB, có thể sao chép bằng cách sử dụng bộ bản sao bao gồm hai hoặc nhiều nút MongoDB hoạt động cùng nhau như một đơn vị. Phương pháp hay nhất yêu cầu tối thiểu ba nút trong bộ bản sao MongoDB
1. Nút đầu tiên là nút chính. Nút này chấp nhận tất cả các hoạt động đọc và ghi
2. Các nút còn lại được gọi là nút phụ. Họ sao chép dữ liệu từ nút chính trong thời gian thực
Dưới đây là thiết lập sao chép MongoDB cơ bản
Nguồn hình ảnh.
Nút chính chấp nhận thao tác đọc và ghi trong khi các nút còn lại chấp nhận thao tác đọc
Trong trường hợp nút chính gặp thời gian ngừng hoạt động hoặc không khả dụng, một trong các nút phụ sẽ đảm nhận vai trò của nút chính. Nút phụ phù hợp nhất để đảm nhận vai trò của nút chính được chọn thông qua quy trình được gọi là bầu chọn Bộ bản sao
cũng đọc
Cách cài đặt MongoDB trên Ubuntu 20. 04 [Hướng dẫn Phiên bản Cộng đồng]
Quá trình nhịp tim MongoDB
Heartbeat là quá trình đánh giá trạng thái hiện tại của các nút trong bộ bản sao. Các nút ping lẫn nhau hai giây một lần và nếu một nút không gửi được lệnh ping trong vòng 10 giây, thì 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
Điều 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à các nút phụ khác không nhận được nhịp tim từ nút đó trong khung thời gian cho phép. Trong trường hợp này, MongoDB sẽ tự động nâng cấp máy chủ phụ để hoạt động như máy chủ chính
Nguồn hình ảnh.
cũng đọc
Cách cài đặt MongoDB trên CentOS 8 [Hướng dẫn phiên bản cộng đồng]
Bầu cử MongoDB ReplicaSet
Một bộ bản sao tiến hành 'bầu chọn' để xác định nút nào sẽ trở thành nút chính. Một cuộc bầu cử thường được kích hoạt để đáp ứng với các sự kiện sau
A. Mất kết nối giữa các nút phụ và nút chính vượt quá thời gian chờ đã định cấu hình, theo mặc định là 10 giây
B. Thêm một nút mới vào bộ bản sao
C. Khởi tạo một bộ bản sao
D. Bảo trì bộ bản sao bằng các phương pháp như rs. stepDown[] hoặc rs. các phương thức cấu hình lại []
Để bộ bản sao xử lý các thao tác ghi, quá trình bầu chọn phải hoàn tất thành công. Thời gian trung bình trước khi một cụm chọn một nút chính mới thường là 12 giây. Giả định ở đây là cấu hình bản sao đang sử dụng cài đặt cấu hình mặc định
Một yếu tố ảnh hưởng đến thời gian bầu chọn là độ trễ của mạng, do đó ảnh hưởng đến thời gian chờ đã định cấu hình để bộ bản sao của bạn hoạt động trở lại với một nút chính mới. Trong trường hợp đó, bộ bản sao sẽ không xử lý bất kỳ thao tác ghi nào cho đến khi quá trình bầu chọn bộ chính mới hoàn tất. Tuy nhiên, các thao tác đọc vẫn được phục vụ nếu chúng được cấu hình để xử lý trên các nút phụ
Trong sơ đồ hiển thị bên dưới, quy trình chuyển đổi dự phòng tự động đã được kích hoạt sau khi nút chính gặp phải thời gian ngừng hoạt động lâu hơn thời gian chờ đã định cấu hình. Một trong các nút phụ còn lại bắt đầu và bầu chọn một nút chính mới
Nguồn hình ảnh.
cũng đọc
MongoDB Sharding là gì. Hướng dẫn từng bước với ví dụ
MongoDB Arbiter trong một ReplicaSet
Trong các tình huống mà các ràng buộc về chi phí ngăn cản bạn thêm nút phụ vào bộ bản sao [chẳng hạn như nút có nút chính và nút phụ], bạn có thể chọn thêm phiên bản mongodb vào bộ bản sao làm trọng tài
Trọng tài tham gia vào các cuộc bầu cử nhưng không cung cấp dự phòng như một nút phụ tiêu chuẩn sẽ làm. Trọng tài luôn là trọng tài. Nút chính có thể bước xuống và trở thành nút phụ và nút phụ có thể đảm nhận vai trò của nút chính trong cuộc bầu cử
Nguồn hình ảnh.
cũng đọc
Cách cài đặt Docker MongoDB Container bằng MongoDB Image
Định cấu hình Bộ bản sao MongoDB
Cho đến nay, chúng tôi đã đề cập đến những kiến thức cơ bản về sao chép và cách thức hoạt động của một bộ bản sao nhằm đảm bảo tính sẵn sàng cao của dữ liệu. Trong phần này, chúng tôi sang số và định cấu hình bộ bản sao 3 nút
Bản sao Đặt môi trường Lab
Để minh họa khái niệm sao chép trong MongoDB, chúng tôi sẽ sử dụng thiết lập 3 nút trên Ubuntu 20. 04 với 1 nút chính và 2 nút phụ như hình
- 139. 144. 171. 196 mongo-master-node
- 139. 144. 171. 229 mongo-node-1
- 139. 144. 171. 250 mongo-node-2
GHI CHÚ
Mỗi nút cần cài đặt và chạy máy chủ MongoDB. Theo mặc định, dịch vụ MongoDB sẽ lắng nghe cổng 27017. Ngoài ra, tất cả các nút cần được định cấu hình với tên máy chủ có thể phân giải được với nhau.
Hãy xem hướng dẫn toàn diện của chúng tôi về cách cài đặt MongoDB trên Ubuntu 20. 04
Bước 1. Chỉnh sửa tập tin máy chủ
Để cho phép giao tiếp liền mạch trên tất cả các nút, bạn cần chỉnh sửa tệp /etc/hosts trong mỗi nút với địa chỉ IP và tên máy chủ tương ứng như được hiển thị trong thiết lập phòng thí nghiệm của chúng tôi. Do đó, hãy đăng nhập vào từng nút và truy cập tệp máy chủ như được hiển thị
sudo nano /etc/hosts
Cập nhật tệp với các mục sau
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
Lưu các thay đổi và thoát
Bước 2. Tạo người dùng quản trị trên Nút chính
Việc tạo một bộ bản sao yêu cầu bạn định cấu hình người dùng quản trị trên nút chính. Như vậy, hãy truy cập trình bao MongoDB như được hiển thị
$ mongosh
Tiếp theo, chuyển sang cơ sở dữ liệu quản trị như được hiển thị
use admin
Sử dụng chức năng sau để tạo người dùng quản trị. Khi được nhắc nhập mật khẩu, hãy cung cấp một mật khẩu mạnh và nhấn ENTER
db.createUser[
{
user: "admin-user",
pwd: passwordPrompt[],
roles: [ { role: "root", db: "admin" }, "readWriteAnyDatabase" ]
}
]
Khi bạn đã tạo người dùng quản trị, hãy thoát khỏi trình bao MongoDB
exit
Bước 3. Định cấu hình nút chính
Các nút trong bộ bản sao cần giao tiếp với xác thực được bật. Thay vì sử dụng cụm mật khẩu, chúng tôi sẽ tạo chứng chỉ mật mã để bảo mật xác thực giữa các nút
Chúng tôi sẽ sử dụng lệnh openssl để tạo khóa mật mã base64. Nhưng trước tiên, chúng tôi sẽ tạo một thư mục trong đó chúng tôi sẽ đặt khóa
# mkdir -p /mnt/keys/
Tiếp theo, chuyển sang người dùng root và tạo khóa mật mã base64 như sau
$ sudo -su
________số 8_______
Khi bạn đã tạo khóa thành công, hãy đặt các quyền sao cho chỉ chủ sở hữu của tệp khóa mới có quyền truy cập chỉ đọc vào tệp trong khi nhóm và những người dùng còn lại không có quyền đọc hoặc ghi
# chmod 400 /mnt/keys/mongo-key
Ngoài ra, hãy định cấu hình quyền sở hữu và nhóm của khóa mật mã cho người dùng và nhóm 'mongodb'
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
0Tiếp theo, sao chép khóa đã tạo vào các nút phụ bằng lệnh scp như được hiển thị
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
1Khi đã xong, bạn cần thực hiện một vài thay đổi đối với tệp cấu hình MongoDB mặc định trên nút chính. Vì vậy, truy cập nó như được hiển thị
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
2Sửa file cấu hình như hình bên dưới. Tên của bộ bản sao được cung cấp là
use admin
4 Đây chỉ là một giá trị tùy ý, vì vậy vui lòng chọn tên ưa thích của bạn
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
3Lưu các thay đổi và thoát khỏi tệp. Sau đó khởi động lại MongoDB để thực hiện các thay đổi
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
4Bước 4. Định cấu hình các nút phụ
Để định cấu hình các nút phụ để sao chép, hãy đăng nhập vào từng nút và truy cập tệp cấu hình MongoDB mặc định
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
5Cập nhật file cấu hình như hình
Đối với nút thứ cấp-1
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
6Lưu các thay đổi và thoát khỏi tệp cấu hình
Một lần nữa, đặt các quyền và quyền sở hữu tệp sau cho khóa đã sao chép
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
7Sau đó khởi động lại dịch vụ MongoDB để áp dụng các thay đổi
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
8Đối với nút phụ 2
Như với nút phụ đầu tiên, hãy cập nhật tệp cấu hình mặc định như sau
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
9Sau khi hoàn tất, hãy lưu các thay đổi và thoát khỏi tệp cấu hình
Như trước đây, chỉ định các quyền và quyền sở hữu tệp sau
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
7Đảm bảo khởi động lại dịch vụ MongoDB để thực thi các thay đổi đã thực hiện
139.144.171.196 mongo-master-node
139.144.171.229 mongo-node-1
139.144.171.250 mongo-node-2
8cũng đọc
MongoDB Sharding so với phân vùng [Sự khác biệt là gì – Giải thích]
Bước 5. Tạo bộ bản sao
Tất cả các nút hiện đã được định cấu hình đầy đủ để sao chép. Trong phần này, chúng tôi khởi tạo một bộ bản sao và tạo cơ sở dữ liệu thử nghiệm với một vài bản ghi
Vì vậy, hãy đăng nhập vào trình bao MongoDB với tư cách là người dùng quản trị sử dụng quản trị viên làm cơ sở dữ liệu xác thực
$ mongosh
2Tiếp theo, khởi động bộ bản sao như được hiển thị
$ mongosh
3Bạn sẽ nhận được đầu ra sau
Tiếp theo, thêm nút phụ đầu tiên vào bộ bản sao
$ mongosh
4Cũng như nút thứ hai
$ mongosh
5Để xác nhận trạng thái của bộ bản sao, hãy chạy lệnh sau
$ mongosh
6Đây là một ví dụ về những gì bạn nên mong đợi
cũng đọc
Lý do tại sao MongoDB là sự thay thế tốt cho Memcached
Bước 6. Xác nhận sao chép trên các nút phụ
Để xác minh rằng bộ bản sao đang hoạt động, chúng tôi tạo một cơ sở dữ liệu mẫu trên nút chính và thêm một bản ghi. Sau đó, chúng tôi xác nhận xem cơ sở dữ liệu đã được sao chép sang các nút phụ hay chưa
Trên nút chính, đăng nhập với tư cách Người dùng quản trị
$ mongosh
7Tạo cơ sở dữ liệu mẫu để kiểm tra xem bộ bản sao có hoạt động không. Ở đây, chúng tôi đang tạo một cơ sở dữ liệu có tên my-database
$ mongosh
8Tiếp theo, tạo bộ sưu tập và thêm bản ghi. Ở đây, chúng tôi đang tạo một bộ sưu tập có tên là sinh viên với các chi tiết của một sinh viên
$ mongosh
9Để xác nhận sự hiện diện của cơ sở dữ liệu mới được tạo, hãy liệt kê các cơ sở dữ liệu như được hiển thị
use admin
0Cuối cùng, đi tới bất kỳ nút phụ nào và truy cập trình bao MongoDB với tư cách là Người dùng quản trị, giống như cách bạn đã làm trên nút chính
$ mongosh
7Tiếp theo, chạy lệnh sau để kích hoạt thao tác đọc trên nút phụ
use admin
2Sau đó chuyển sang cơ sở dữ liệu thử nghiệm mà bạn đã tạo trên bản gốc và liệt kê các tài liệu trong bộ sưu tập
use admin
3Như bạn có thể quan sát, cơ sở dữ liệu cùng với bộ sưu tập và bản ghi của nó đã được sao chép
Đây là xác nhận rằng bản sao đang hoạt động như mong đợi. Hoàn hảo
cũng đọc
10 phương pháp bảo mật tốt nhất hàng đầu để bảo mật MongoDB
Cảm ơn bạn đã đọc Cách sao chép trong MongoDB hoạt động [Bộ bản sao]. Chúng tôi sẽ kết thúc bài viết này.
Cách sao chép trong MongoDB hoạt động [Bộ bản sao] Kết luận
Trong hướng dẫn này, chúng tôi đã đề cập đến khái niệm sao chép trong MongoDB và tiếp tục định cấu hình bộ bản sao bao gồm một nút chính và hai nút phụ. Các bộ bản sao có ích trong việc đảm bảo tính sẵn sàng cao của dữ liệu và khả năng chịu lỗi, đảm bảo rằng không có điểm lỗi nào và dữ liệu luôn có thể truy cập được
Để biết thêm thông tin về nội dung MongoDB, hãy truy cập blog của chúng tôi tại đây. Để biết thêm thông tin về Bản sao MongoDB, hãy xem