Từng bước sao chép MongoDB
Sao chép bằng bộ bản sao là một phương pháp mạnh mẽ để tăng khả năng phục hồi dữ liệu của toàn bộ cơ sở dữ liệu MongoDB của bạn Show
Trong bài viết này, tôi sẽ hướng dẫn bạn Bắt đầu nào (Bài viết này là một phần của Hướng dẫn MongoDB của chúng tôi. Sử dụng menu bên phải để điều hướng. ) Bản sao MongoDB là gì?Nói một cách đơn giản, sao chép MongoDB là quá trình tạo một bản sao của cùng một tập dữ liệu trong nhiều máy chủ MongoDB. Điều này có thể đạt được 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 MongoDB duy trì cùng một tập dữ liệu và liên quan đến bất kỳ quy trình mongod nào Bản sao cho phép quản trị viên cơ sở dữ liệu cung cấp
Việc duy trì nhiều máy chủ MongoDB với cùng một dữ liệu cung cấp quyền truy cập phân tán vào dữ liệu đồng thời tăng khả năng chịu lỗi của cơ sở dữ liệu bằng cách cung cấp các bản sao lưu Ngoài ra, sao chép cũng có thể được sử dụng như một phần của cân bằng tải, trong đó các hoạt động đọc và ghi có thể được phân phối trên tất cả các phiên bản tùy thuộc vào trường hợp sử dụng Cách sao chép MongoDB hoạt độngMongoDB xử lý sao chép thông qua Bộ bản sao, bao gồm nhiều nút MongoDB được nhóm lại với nhau thành một đơn vị Bộ bản sao yêu cầu tối thiểu ba nút MongoDB
Phương pháp sao chép cơ bản Mặc dù nút chính là phiên bản duy nhất chấp nhận thao tác ghi, bất kỳ nút nào khác trong bộ bản sao đều có thể chấp nhận thao tác đọc. Chúng có thể được định cấu hình thông qua ứng dụng khách MongoDB được hỗ trợ Trong trường hợp nút chính không khả dụng hoặc không thể hoạt động, nút phụ sẽ đảm nhận vai trò của nút chính để cung cấp dữ liệu liên tục. Trong trường hợp như vậy, việc lựa chọn nút chính được thực hiện thông qua một quy trình có tên là Bầu chọn tập hợp bản sao, trong đó nút phụ phù hợp nhất được chọn làm nút chính mới Quy trình nhịp timHeartbeat là quá trình xác định trạng thái hiện tại của nút MongoDB trong bộ bản sao. Ở đó, các nút thiết lập bản sao gửi ping cho nhau cứ sau hai giây (do đó có tên). Nếu bất kỳ nút nào không ping lại trong vòng 10 giây, 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 Chức năng này rất quan trọng đối với 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ông nhận được nhịp tim từ nút đó trong khung thời gian được phân bổ. Sau đó, MongoDB sẽ tự động chỉ định một máy chủ phụ đóng vai trò là máy chủ chính Bản sao thiết lập cuộc bầu cửCác cuộc bầu cử trong bộ bản sao được sử dụng để xác định nút MongoDB nào sẽ trở thành nút chính. Các cuộc bầu cử này có thể xảy ra trong các trường hợp sau
Trong quá trình bầu cử, đầu tiên, một trong các nút sẽ giương cờ yêu cầu bầu cử và tất cả các nút khác sẽ bỏ phiếu để chọn nút đó làm nút chính. Thời gian trung bình để hoàn tất quy trình bầu chọn là 12 giây, giả sử rằng cài đặt cấu hình bản sao ở giá trị mặc định. Một yếu tố chính có thể ảnh hưởng đến thời gian hoàn thành cuộc bầu cử là độ trễ của mạng và yếu tố này có thể gây ra sự chậm trễ trong việc đặt bản sao của bạn hoạt động trở lại với nút chính mới Bộ bản sao không thể xử lý bất kỳ thao tác ghi nào cho đến khi quá trình bầu chọn hoàn tất. Tuy nhiên, các hoạt động đọc có thể được phục vụ nếu các truy vấn đọc được định cấu hình để xử lý trên các nút phụ. MongoDB 3. 6 hỗ trợ các trình điều khiển kết nối tương thích được định cấu hình để thử lại Bộ bản sao MongoDB vs Cụm MongoDBBộ bản sao tạo nhiều bản sao của cùng một tập dữ liệu trên các nút của bộ bản sao. Mục tiêu cơ bản của một bộ bản sao là để
Các cụm hoạt động khác nhau. Cụm MongoDB phân phối dữ liệu trên nhiều nút bằng khóa phân đoạn. Quá trình này sẽ chia nhỏ dữ liệu thành nhiều phần được gọi là phân đoạn và sau đó sao chép từng phân đoạn vào một nút riêng biệt Mục đích chính của một cụm là hỗ trợ các tập dữ liệu cực lớn và các hoạt động có thông lượng cao bằng cách thay đổi quy mô khối lượng công việc theo chiều ngang Sự khác biệt chính giữa bộ bản sao và cụm là
MongoDB cho phép người dùng kết hợp hai chức năng này bằng cách tạo một cụm phân đoạn, trong đó mỗi phân đoạn được sao chép sang một máy chủ thứ cấp để cung cấp tính khả dụng và dự phòng dữ liệu cao Xử lý sự chậm trễ sao chépMột mối quan tâm chính khi cấu hình sao chép là độ trễ sao chép (lag). Điều này đề cập đến độ trễ trong quá trình sao chép sang nút phụ sau khi cập nhật lên nút chính trong bộ bản sao Độ trễ sao chép nhất định trong khi sao chép tập dữ liệu lớn là bình thường. Tuy nhiên, các yếu tố sau có thể làm tăng độ trễ sao chép, phủ nhận lợi ích của việc sao chép cập nhật
Định cấu hình Bộ bản saoCác phần trên đã bao gồm tất cả các lý thuyết quan trọng liên quan đến sao chép. Tiếp theo, hãy định cấu hình bộ bản sao bằng các phiên bản MongoDB được cài đặt trên ba máy chủ Ubuntu Thiết lập môi trườngMỗi máy chủ Ubuntu sẽ có phiên bản MongoDB riêng với cổng MongoDB tiêu chuẩn 27017 có thể truy cập thông qua tường lửa. MongoDB khuyến nghị sử dụng tên máy chủ DNS hợp lý thay vì địa chỉ IP khi định cấu hình bộ bản sao trong môi trường sản xuất. Đó là để tránh gián đoạn giao tiếp trong bộ bản sao do thay đổi địa chỉ IP Bạn có thể cập nhật tệp /etc/hosts để gán tên máy chủ cho từng máy chủ trong môi trường thử nghiệm. Ở đó, bạn phải thêm các tên máy chủ được đề cập bên dưới làm máy chủ chỉ ra từng nút và khởi động lại từng máy chủ để tải cấu hình mới /etc/hosts 10.10.10.56 mongodb-node-01 10.10.10.57 mongodb-node-02 10.10.10.58 mongodb-node-03 Bắt đầu phiên bản MongoDBTrước khi bắt đầu phiên bản MongoDB, bạn cần sửa đổi tệp cấu hình trong mỗi máy chủ để phản ánh địa chỉ IP và chỉ ra bộ bản sao. Hãy thực hiện các sửa đổi sau trong mỗi mongod. tập tin conf mongodb-nút-01 # network interfaces net: port: 27017 bindIp: 127.0.0.1,mongodb-node-01# replica set replication: replSetName: replicasetMain mongodb-nút-02 # network interfaces net: port: 27017 bindIp: 127.0.0.1,mongodb-node-02# replica set replication: replSetName: replicasetMain mongodb-nút-03 # network interfaces net: port: 27017 bindIp: 127.0.0.1,mongodb-node-03# replica set replication: replSetName: replicasetMain Sau khi cập nhật xong, hãy khởi động lại dịch vụ mongod trong từng phiên bản để tải lại cấu hình sudo systemctl restart mongod Khởi tạo bộ bản saoBạn có thể khởi tạo một bộ bản sao bằng cách sử dụng rs. khởi tạo phương thức(). Phương thức này chỉ được yêu cầu thực thi trên một cá thể MongoDB duy nhất trong bộ bản sao. Trong phương thức khởi tạo, bạn có thể chỉ định tên bộ bản sao và thành viên. Các chi tiết này phải khớp với các cấu hình bạn đã thực hiện trong từng tệp cấu hình ở bước trước rs.initiate( { _id : "replicasetMain", members: [ { _id: 0, host: "mongodb-node-01:27017" }, { _id: 1, host: "mongodb-node-02:27017" }, { _id: 2, host: "mongodb-node-03:27017" } ] }) Kết quả sử dụng rs. conf(), bạn có thể xem cấu hình bộ bản sao như bên dưới rs.conf() Kết quả Xác thực sao chép dữ liệuBây giờ bạn đã định cấu hình bộ sao chép, bước tiếp theo là xác thực quy trình sao chép. Để làm điều đó, trước tiên hãy đăng nhập vào nút MongoDB chính trong bộ bản sao Sau đó, bạn cần tạo một bộ sưu tập với một số dữ liệu mẫu bằng các lệnh sau use replicatestdata db.createCollection("replicatestCollection01") db.replicatestCollection01.insertMany([ {name: "test_record_one", description: "testing replica set", record: 1}, {name: "test_record_two", description: "testing replica set", record: 2}, {name: "test_record_three", description: "testing replica set", record: 3} ]) Kết quả Tiếp theo, đăng nhập vào nút phụ và kiểm tra xem dữ liệu có bị sao chép không. Một điều quan trọng cần lưu ý ở đây là theo mặc định, các truy vấn đã đọc bị tắt trong các nút phụ. Vì vậy, bạn cần kích hoạt chúng bằng lệnh sau ________số 8Sau đó, bạn có thể tìm kiếm dữ liệu và xác minh xem chúng có được sao chép tốt vào nút phụ hay không show dbs use replicatestdata show collections db.replicatestCollection01.find().sort({record: 1}).pretty() Kết quả Kết quả trên chỉ ra rằng dữ liệu của nút chính đã được sao chép thành công sang phiên bản phụ Thêm một nút mới vào Bộ bản saosử dụng rs. add(), bạn có thể thêm một nút mới vào bộ bản sao hiện có Trước khi thêm một nút mới, bạn cần cấu hình nó. Đối với điều đó, sửa đổi mongd. conf để chỉ ra bộ bản sao và khởi động lại dịch vụ mongod mongodb-nút-04 # network interfaces net: port: 27017 bindIp: 127.0.0.1,mongodb-node-01# replica set replication: replSetName: replicasetMain0 Sau đó, chuyển đến nút chính của bộ bản sao và chạy lệnh add() với các tham số được liệt kê bên dưới
# network interfaces net: port: 27017 bindIp: 127.0.0.1,mongodb-node-01# replica set replication: replSetName: replicasetMain1 Kết quả Lệnh trên sẽ thêm một nút mới vào bộ bản sao. Bạn có thể xác minh xem nút mới đã được thêm chưa bằng cách sử dụng lệnh rs. lệnh status(), lệnh này sẽ hiển thị thông tin chi tiết của nút mới # network interfaces net: port: 27017 bindIp: 127.0.0.1,mongodb-node-01# replica set replication: replSetName: replicasetMain2 Kết quả Cuối cùng, dữ liệu trong các nút khác sẽ được tự động sao chép sang nút mới Xóa một nút khỏi Bộ bản saors. lệnh remove() có thể được sử dụng để xóa một nút khỏi bộ bản sao. Bạn cần tắt phiên bản máy chủ trước khi thử xóa một nút. Khi xóa, bạn có thể chỉ định nút nào sẽ bị xóa bằng tên của nút đó MongoDB có bản sao không?MongoDB xử lý sao chép thông qua Bộ bản sao , bao gồm nhiều nút MongoDB được nhóm lại với nhau thành một đơn vị. Bộ bản sao yêu cầu tối thiểu ba nút MongoDB. Một trong các nút sẽ được coi là nút chính nhận tất cả các thao tác ghi.
Làm cách nào để thiết lập bản sao trong MongoDB trong Linux?Bạn có thể thiết lập Bộ bản sao mới trong MongoDB bằng các bước sau. . Bước 1. Bắt đầu trường hợp mongod Bước 2. Định cấu hình Bộ bản sao Bước 3. Kích hoạt bản sao trong MongoDB Bước 4. Thêm các phiên bản MongoDB vào các bộ bản sao Bước 5. Xóa Instances khỏi Replica Sets Bước 6. Kiểm tra quá trình sao chép Mục đích của việc sao chép trong MongoDB là gì?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ủ
Sự khác biệt giữa sao chép và bảo vệ trong MongoDB là gì?Sao chép có thể hiểu đơn giản là sao chép tập dữ liệu trong khi sharding là phân vùng tập dữ liệu thành các phần rời rạc . Bằng cách chia nhỏ, bạn đã chia bộ sưu tập của mình thành các phần khác nhau. Sao chép cơ sở dữ liệu của bạn có nghĩa là bạn tạo các hình ảnh của tập dữ liệu của mình. |