Sao chép là quá trình đồng bộ hóa dữ liệu trên nhiều máy chủ. Bản sao cung cấp khả năng 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. Bản sao bảo vệ cơ sở dữ liệu khỏi sự mất mát của một máy chủ. Bản sao cũng cho phép bạn khôi phục sau lỗi phần cứng và gián đoạn dịch vụ. Với các bản sao bổ sung của dữ liệu, bạn có thể dành riêng một bản để khôi phục, báo cáo hoặc sao lưu sau thảm họa
Tại sao sao chép?
- Để giữ an toàn cho dữ liệu của bạn
- Dữ liệu sẵn có cao (24*7)
- khắc phục thảm họa
- Không có thời gian chết để bảo trì (như sao lưu, xây dựng lại chỉ mục, nén)
- Tỷ lệ đọc (các bản sao bổ sung để đọc từ)
- Bộ bản sao trong suốt đối với ứng dụng
Cách sao chép hoạt động trong MongoDB
MongoDB đạt được bản sao bằng cách sử dụng bộ bản sao. Bộ bản sao là một nhóm các phiên bản mongod lưu trữ cùng một bộ dữ liệu. Trong một bản sao, một nút là nút chính nhận tất cả các thao tác ghi. Tất cả các phiên bản khác, chẳng hạn như phiên bản thứ cấp, áp dụng các thao tác từ phiên bản chính để chúng có cùng một tập dữ liệu. Bộ bản sao chỉ có thể có một nút chính
Bộ bản sao là một nhóm gồm hai nút trở lên (thường yêu cầu tối thiểu 3 nút)
Trong một bộ bản sao, một nút là nút chính và các nút còn lại là nút phụ
Tất cả dữ liệu sao chép từ nút chính sang nút phụ
Tại thời điểm tự động chuyển đổi dự phòng hoặc bảo trì, cuộc bầu chọn được thiết lập cho nút chính và một nút chính mới được bầu chọn
Sau khi phục hồi nút bị lỗi, nó lại tham gia vào bộ bản sao và hoạt động như một nút phụ
Một sơ đồ điển hình về sao chép MongoDB được hiển thị trong đó ứng dụng khách luôn tương tác với nút chính và nút chính sau đó sao chép dữ liệu sang các nút phụ
Các tính năng của bộ bản sao
- Một cụm gồm N nút
- Bất kỳ một nút nào cũng có thể là nút chính
- Tất cả các hoạt động ghi chuyển đến chính
- chuyển đổi dự phòng tự động
- Tự động phục hồi
- Đồng thuận bầu cử sơ bộ
Thiết lập một bộ bản sao
Trong hướng dẫn này, chúng tôi sẽ chuyển đổi phiên bản MongoDB độc lập thành một bộ bản sao. Để chuyển đổi sang bộ bản sao, sau đây là các bước -
Tắt máy chủ MongoDB đang chạy
Khởi động máy chủ MongoDB bằng cách chỉ định -- tùy chọn replSet. Sau đây là cú pháp cơ bản của --replSet -
Ví dụ
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0Nó sẽ bắt đầu một phiên bản mongod với tên rs0, trên cổng 27017
Bây giờ bắt đầu dấu nhắc lệnh và kết nối với phiên bản mongod này
Trong ứng dụng khách Mongo, hãy ra lệnh rs. started() để bắt đầu một bộ bản sao mới
Để kiểm tra cấu hình bộ bản sao, hãy ra lệnh rs. conf(). Để kiểm tra trạng thái của bộ bản sao, hãy sử dụng lệnh rs. trạng thái()
Thêm thành viên vào bộ bản sao
Để thêm thành viên vào bộ bản sao, hãy bắt đầu phiên bản mongod trên nhiều máy. Bây giờ hãy bắt đầu một ứng dụng khách mongo và đưa ra lệnh rs. cộng()
cú pháp
Cú pháp cơ bản của rs. lệnh add() như sau -
>rs.add(HOST_NAME:PORT)Ví dụ
Giả sử tên ví dụ mongod của bạn là mongod1. net và nó đang chạy trên cổng 27017. Để thêm phiên bản này vào bộ bản sao, hãy ra lệnh rs. add() trong máy khách Mongo
>rs.add("mongod1.net:27017") >Bạn chỉ có thể thêm phiên bản mongod vào bộ bản sao khi bạn được kết nối với nút chính. Để kiểm tra xem bạn có được kết nối với chính hay không, hãy ra lệnh db. isMaster() trong máy khách mongo
Phiên bản bộ bản sao ApsaraDB cho MongoDB cung cấp nhiều bản sao dữ liệu để đảm bảo độ tin cậy cao của dữ liệu. Nó cũng cung cấp cơ chế chuyển đổi dự phòng tự động để đảm bảo tính sẵn sàng cao của ApsaraDB cho MongoDB. Bạn phải sử dụng đúng phương thức để kết nối với phiên bản bộ bản sao nhằm triển khai tính khả dụng cao. Bạn cũng có thể định cấu hình kết nối để tách đọc/ghi
ghi chú
- Nút chính của phiên bản bộ bản sao có thể thay đổi. Chuyển đổi dự phòng giữa các nút chính và nút phụ có thể được kích hoạt khi các nút của phiên bản bộ bản sao được nâng cấp lần lượt, nút chính bị lỗi hoặc mạng bị phân vùng. Trong các trường hợp này, bộ bản sao có thể chọn một nút chính mới và hạ cấp nút chính ban đầu xuống một nút phụ
- Nếu nút chính của phiên bản bộ bản sao được kết nối trực tiếp thông qua chuỗi kết nối của nút chính, thì nút chính sẽ chịu tải nặng để xử lý tất cả các thao tác đọc và ghi. Nếu quá trình chuyển đổi dự phòng được kích hoạt trong phiên bản bộ bản sao và nút chính được kết nối bị hạ cấp xuống nút phụ, thì bạn không thể thực hiện các thao tác ghi nữa và hoạt động kinh doanh của bạn sẽ bị ảnh hưởng nghiêm trọng
URI chuỗi kết nối
Để kết nối chính xác với một phiên bản bộ bản sao, bạn phải hiểu định dạng của URI chuỗi kết nối của MongoDB. Tất cả các trình điều khiển MongoDB chính thức đều cho phép bạn sử dụng URI chuỗi kết nối để kết nối với MongoDB
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]Mô tả về Thông Số
- mongodb://. tiền tố, biểu thị URI chuỗi kết nối
- username:password@. 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. Nếu xác thực được bật, mật khẩu là bắt buộc
- ________số 8. danh sách các chuỗi kết nối được sử dụng để kết nối với các nút trong phiên bản bộ bản sao. Mỗi chuỗi kết nối bao gồm một địa chỉ IP và một số cổng. Tách nhiều chuỗi kết nối bằng dấu phẩy (,)
- /database. cơ sở dữ liệu tương ứng với tên người dùng và mật khẩu nếu xác thực được bật
- mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0 0. tùy chọn kết nối bổ sung
Lưu ý Để biết thêm thông tin về URI chuỗi kết nối, hãy xem Định dạng URI chuỗi kết nối
Sử dụng URI chuỗi kết nối để kết nối với phiên bản bộ bản sao
Bạn có thể sử dụng URI chuỗi kết nối để kết nối với phiên bản bộ bản sao
- Lấy URI chuỗi kết nối của một phiên bản bộ bản sao. Để biết thêm thông tin, hãy xem Tổng quan về kết nối phiên bản bộ bản sao
- Sử dụng URI chuỗi kết nối thu được để kết nối các ứng dụng của bạn với phiên bản. Để biết thêm thông tin, hãy xem Mã mẫu kết nối cho trình điều khiển MongoDB
Ghi chú
Để tách đọc/ghi, bạn phải thêm mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0 1 vào tham số tùy chọn để đặt tùy chọn đọc cho các nút phụ
Để biết thêm thông tin về các tùy chọn tùy chọn đọc, hãy xem Tùy chọn đọc
Ví dụ. mongodb://root:xxxxxxxx@dds-xxxxxxxxxxxx:3717,xxxxxxxxxxxx:3717/admin? replicaSet=mgset-xxxxxx&readPreference=secondaryPreferred
Sau khi bạn sử dụng phương pháp trước để kết nối với một phiên bản bộ bản sao, ưu tiên khách hàng có thể gửi yêu cầu đọc tới các nút phụ để thực hiện phân tách đọc/ghi. Máy khách cũng tự động phát hiện mối quan hệ giữa các nút chính và nút phụ. Nếu nút chính thay đổi, máy khách sẽ tự động chuyển các hoạt động ghi sang nút chính mới để đảm bảo tính sẵn sàng cao của ApsaraDB cho MongoDB