Thay đổi bản sao MongoDB tên máy chủ

Đối với hầu hết , tên máy chủ trong trường không bao giờ thay đổi. Tuy nhiên, nếu nhu cầu của tổ chức thay đổi, bạn có thể cần di chuyển một số hoặc tất cả các tên máy chủ

Ghi chú

Luôn sử dụng tên máy chủ có thể phân giải cho giá trị của trường trong cấu hình bộ sao chép để tránh nhầm lẫn và phức tạp

Mẹo

Khi có thể, hãy sử dụng tên máy chủ DNS hợp lý thay vì địa chỉ IP, đặc biệt khi định cấu hình thành viên bộ bản sao hoặc thành viên cụm phân đoạn. Việc sử dụng tên máy chủ DNS hợp lý tránh thay đổi cấu hình do thay đổi địa chỉ IP

Tổng quan

Tài liệu này cung cấp hai quy trình riêng biệt để thay đổi tên máy chủ trong trường. Sử dụng một trong các cách tiếp cận sau

  • Cách tiếp cận này đảm bảo các ứng dụng của bạn sẽ luôn có thể đọc và ghi dữ liệu vào bộ bản sao, nhưng cách tiếp cận này có thể mất nhiều thời gian và có thể gây ra thời gian ngừng hoạt động ở lớp ứng dụng

Nếu bạn sử dụng quy trình đầu tiên, bạn phải định cấu hình các ứng dụng của mình để kết nối với bộ bản sao ở cả vị trí cũ và mới, thường yêu cầu khởi động lại và cấu hình lại ở lớp ứng dụng và điều này có thể ảnh hưởng đến tính khả dụng của các ứng dụng của bạn. Cấu hình lại các ứng dụng nằm ngoài phạm vi của tài liệu này

  • Phương pháp này có thời gian bảo trì ngắn hơn nhưng bộ bản sao sẽ không khả dụng trong quá trình vận hành

Xem thêm

,Triển khai Bộ bản sao và Thêm thành viên vào Bộ bản sao

giả định

Đưa ra một với ba thành viên

    1. mongo --port 27017
    9 (cái )
    1. cfg = rs.conf()
    2. cfg.members[1].host = "mongodb1.example.net:27017"
    3. rs.reconfig(cfg)
    0
    1. cfg = rs.conf()
    2. cfg.members[1].host = "mongodb1.example.net:27017"
    3. rs.reconfig(cfg)
    1

Và với đầu ra sau

  1. {
  2. "_id" : "rs",
  3. "version" : 3,
  4. "members" : [
  5. {
  6. "_id" : 0,
  7. "host" : "database0.example.com:27017"
  8. },
  9. {
  10. "_id" : 1,
  11. "host" : "database1.example.com:27017"
  12. },
  13. {
  14. "_id" : 2,
  15. "host" : "database2.example.com:27017"
  16. }
  17. ]
  18. }

Các quy trình sau đây thay đổi tên máy chủ của thành viên như sau

    1. cfg = rs.conf()
    2. cfg.members[1].host = "mongodb1.example.net:27017"
    3. rs.reconfig(cfg)
    3 (chính)
    1. cfg = rs.conf()
    2. cfg.members[1].host = "mongodb1.example.net:27017"
    3. rs.reconfig(cfg)
    4
    1. cfg = rs.conf()
    2. cfg.members[1].host = "mongodb1.example.net:27017"
    3. rs.reconfig(cfg)
    5

Sử dụng quy trình thích hợp nhất cho việc triển khai của bạn

Thay đổi tên máy chủ trong khi duy trì tính khả dụng của bộ bản sao

Thủ tục này sử dụng trên

  • Đối với mỗi trong bộ bản sao, hãy thực hiện chuỗi thao tác sau

    • Dừng thứ cấp

    • Khởi động lại thứ cấp tại vị trí mới

    • Mở trình bao được kết nối với bộ bản sao'chính. Trong ví dụ của chúng tôi, chính chạy trên cổng

      1. cfg = rs.conf()
      2. cfg.members[1].host = "mongodb1.example.net:27017"
      3. rs.reconfig(cfg)
      7, vì vậy bạn sẽ đưa ra lệnh sau

  1. mongo --port 27017
  • Sử dụng để cập nhật tài liệu cấu hình bộ bản sao với tên máy chủ mới

Ví dụ: chuỗi lệnh sau cập nhật tên máy chủ cho phụ tại chỉ số mảng

  1. cfg = rs.conf()
  2. cfg.members[1].host = "mongodb1.example.net:27017"
  3. rs.reconfig(cfg)
9 của mảng
  1. rs.stepDown()
0 (i. e.
  1. rs.stepDown()
1) trong tài liệu cấu hình thiết lập bản sao

  1. cfg = rs.conf()
  2. cfg.members[1].host = "mongodb1.example.net:27017"
  3. rs.reconfig(cfg)

Để biết thêm thông tin về cách cập nhật tài liệu cấu hình, hãy xem

  • Đảm bảo rằng các ứng dụng khách của bạn có thể truy cập tập hợp tại vị trí mới và ứng dụng thứ cấp có cơ hội bắt kịp với các thành viên khác của tập hợp

Lặp lại các bước trên cho từng thành viên không phải là thành viên chính của tập hợp

  • Mở một trình bao được kết nối với trình bao chính và giảm dần trình bao chính bằng phương thức
  1. rs.stepDown()

Bộ bản sao chọn một thành viên khác để trở thành chính

  • Khi bước xuống thành công, hãy tắt chế độ chính cũ

  • Bắt đầu phiên bản sẽ trở thành phiên bản chính mới ở vị trí mới

  • Kết nối với nút chính hiện tại vừa được chọn và cập nhật tài liệu cấu hình bộ bản sao với tên máy chủ của nút sẽ trở thành nút chính mới

Ví dụ: nếu chính cũ ở vị trí

  1. rs.stepDown()
5 và tên máy chủ của chính mới là
  1. cfg = rs.conf()
  2. cfg.members[1].host = "mongodb1.example.net:27017"
  3. rs.reconfig(cfg)
3, bạn sẽ chạy

  1. cfg = rs.conf()
  2. cfg.members[0].host = "mongodb0.example.net:27017"
  3. rs.reconfig(cfg)
  • Mở trình bao được kết nối với trình bao chính mới

  • Để xác nhận cấu hình mới, hãy gọi trong shell

Đầu ra của bạn sẽ giống

  1. {
  2. "_id" : "rs",
  3. "version" : 4,
  4. "members" : [
  5. {
  6. "_id" : 0,
  7. "host" : "mongodb0.example.net:27017"
  8. },
  9. {
  10. "_id" : 1,
  11. "host" : "mongodb1.example.net:27017"
  12. },
  13. {
  14. "_id" : 2,
  15. "host" : "mongodb2.example.net:27017"
  16. }
  17. ]
  18. }

Thay đổi tất cả tên máy chủ cùng một lúc

Thủ tục này sử dụng trên

điều kiện tiên quyết

Quy trình sau đây đọc và cập nhật bộ sưu tập

  1. cfg = rs.conf()
  2. cfg.members[0].host = "mongodb0.example.net:27017"
  3. rs.reconfig(cfg)
0 trong cơ sở dữ liệu
  1. cfg = rs.conf()
  2. cfg.members[0].host = "mongodb0.example.net:27017"
  3. rs.reconfig(cfg)
1

Nếu triển khai của bạn thực thi kiểm soát truy cập, thì người dùng thực hiện quy trình phải có và các hành động đặc quyền đối với bộ sưu tập_______16_______0

Để tạo một vai trò cung cấp các đặc quyền cần thiết

  • Đăng nhập với tư cách người dùng có đặc quyền để quản lý người dùng và vai trò, chẳng hạn như người dùng có vai trò. Quy trình sau đây sử dụng
    1. cfg = rs.conf()
    2. cfg.members[0].host = "mongodb0.example.net:27017"
    3. rs.reconfig(cfg)
    6 được tạo trong Kích hoạt Kiểm soát Truy cập
  1. mongo --port 27017 -u myUserAdmin --authenticationDatabase 'admin' -p
  • Tạo vai trò người dùng cung cấp các đặc quyền cần thiết trên bộ sưu tập
    1. cfg = rs.conf()
    2. cfg.members[0].host = "mongodb0.example.net:27017"
    3. rs.reconfig(cfg)
    0 trong cơ sở dữ liệu
    1. cfg = rs.conf()
    2. cfg.members[0].host = "mongodb0.example.net:27017"
    3. rs.reconfig(cfg)
    1
  1. db.adminCommand( {
  2. createRole: "systemreplsetRole",
  3. privileges: [
  4. { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
  5. ],
  6. roles: []
  7. } );
  • Cấp vai trò cho người dùng sẽ thực hiện quy trình đổi tên. Ví dụ: phần sau giả sử người dùng hiện có_______16_______9 trong cơ sở dữ liệu
    1. {
    2. "_id" : "rs",
    3. "version" : 4,
    4. "members" : [
    5. {
    6. "_id" : 0,
    7. "host" : "mongodb0.example.net:27017"
    8. },
    9. {
    10. "_id" : 1,
    11. "host" : "mongodb1.example.net:27017"
    12. },
    13. {
    14. "_id" : 2,
    15. "host" : "mongodb2.example.net:27017"
    16. }
    17. ]
    18. }
    0
  1. use admin
  2. db.grantRolesToUser( "userPerformingRename", [ { role: "systemreplsetRole", db: "admin" } ] );

Thủ tục

  • Dừng tất cả các thành viên trong

  • Khởi động lại từng thành viên trên một cổng khác và không sử dụng tùy chọn thời gian chạy. Thay đổi Số cổng trong quá trình bảo trì sẽ ngăn khách hàng kết nối với máy chủ này trong khi bạn thực hiện bảo trì. Sử dụng thông thường của thành viên, mà trong ví dụ này là

    1. {
    2. "_id" : "rs",
    3. "version" : 4,
    4. "members" : [
    5. {
    6. "_id" : 0,
    7. "host" : "mongodb0.example.net:27017"
    8. },
    9. {
    10. "_id" : 1,
    11. "host" : "mongodb1.example.net:27017"
    12. },
    13. {
    14. "_id" : 2,
    15. "host" : "mongodb2.example.net:27017"
    16. }
    17. ]
    18. }
    3. Sử dụng một lệnh giống như sau

Cảnh báo

Trước khi liên kết với một máy chủ không phải máy chủ cục bộ (e. g. có thể truy cập công khai) địa chỉ IP, đảm bảo bạn đã bảo vệ cụm của mình khỏi bị truy cập trái phép. Để biết danh sách đầy đủ các đề xuất bảo mật, hãy xem Danh sách kiểm tra bảo mật. Ở mức tối thiểu, hãy xem xét và củng cố cơ sở hạ tầng mạng

Làm cách nào để định cấu hình bản sao MongoDB?

Bây giờ, bạn có thể làm theo quy trình từng bước để thiết lập Bản sao trong MongoDB. .
Bản sao MongoDB Đặt cấu hình Bước 1. Thiết lập máy chủ
Bản sao MongoDB Đặt cấu hình Bước 2. Thiết lập tên máy chủ
Bước cấu hình thiết lập bản sao MongoDB 3. Tạo khóa
Bước cấu hình thiết lập bản sao MongoDB 4. Định cấu hình Bộ bản sao

Tên máy chủ MongoDB là gì?

tên máy chủ — địa chỉ IP của Máy chủ MongoDB và số cổng mà dịch vụ MongoDB sử dụng . ▪ tên người dùng — tên người dùng quản trị mà bạn đã tạo để đăng nhập vào Máy chủ MongoDB.

Cài đặt nào có thể được kiểm soát bởi RS reconfig()?

Thay đổi kích thước của Oplog
Thực hiện bảo trì trên các thành viên của bộ bản sao
Buộc một thành viên trở thành chính
Đồng bộ lại một thành viên của bộ bản sao
Định cấu hình Bộ thẻ Bộ bản sao
Định cấu hình lại Bộ bản sao với các thành viên không khả dụng
Quản lý bản sao chuỗi
Thay đổi tên máy chủ trong bộ bản sao

Làm cách nào để kiểm tra trạng thái sao chép MongoDB?

Kiểm tra trạng thái bộ bản sao . run the rs. phương thức status() trong phiên mongosh được kết nối với bộ bản sao chính. Đối với các mô tả về thông tin được hiển thị bởi rs. status() , xem replSetGetStatus.