Hướng dẫn mongodb replica set change ip - mongodb bản sao đặt thay đổi ip

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

Trên trang này

  • Tổng quan
  • Giả định
  • Thay đổi tên máy chủ trong khi duy trì tính khả dụng của bộ bản sao
  • Thay đổi tất cả các tên máy chủ cùng một lúc

Đối với hầu hết các bộ bản sao, tên máy chủ trong trường

cfg = rs.conf()
cfg.members[1].host = "mongodb1.example.net:27017"
rs.reconfig(cfg)
5 không bao giờ thay đổi. Tuy nhiên, nếu nhu cầu 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 luôn sử dụng tên máy chủ có thể giải quyết được cho giá trị của trường

cfg = rs.conf()
cfg.members[1].host = "mongodb1.example.net:27017"
rs.reconfig(cfg)
5 trong cấu hình bộ bản sao để tránh sự nhầm lẫn và phức tạp.

Quan trọng

Để tránh các bản cập nhật cấu hình do thay đổi địa chỉ IP, hãy sử dụng tên máy chủ DNS thay vì địa chỉ IP. Điều đặc biệt quan trọng là sử dụng tên máy chủ DNS thay vì địa chỉ IP khi định cấu hình các thành viên đặt bản sao hoặc các thành viên cụm bị chia cắt.

Sử dụng tên máy chủ thay vì địa chỉ IP để định cấu hình các cụm trên đường chân trời mạng chia. Bắt đầu từ MongoDB 5.0, các nút chỉ được cấu hình với địa chỉ IP sẽ không xác thực khởi động và sẽ không bắt đầu.

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

cfg = rs.conf()
cfg.members[1].host = "mongodb1.example.net:27017"
rs.reconfig(cfg)
5. Sử dụng một trong các phương pháp sau:

  • Thay đổi tên máy chủ mà không làm gián đoạn tính khả dụng. 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 có thể mất nhiều thời gian và có thể phát sinh thời gian chết ở lớp ứng dụng.. This approach ensures your applications will always be able to read and write data to the replica set, but the approach can take a long time and may incur downtime at the application layer.

    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ản sao được đặt ở cả hai 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à có thể ảnh hưởng đến tính khả dụng của các ứng dụng của bạn. Các ứng dụng cấu hình lại nằm ngoài phạm vi của tài liệu này.

  • Dừng tất cả các thành viên chạy trên tên máy chủ cũ cùng một lúc. Cách tiếp cận này có một cửa sổ bảo trì ngắn hơn, nhưng bộ bản sao sẽ không có sẵn trong quá trình hoạt động.. This approach has a shorter maintenance window, but the replica set will be unavailable during the operation.

Mẹo

Cho một bộ bản sao với ba thành viên:

  • cfg = rs.conf()
    cfg.members[1].host = "mongodb1.example.net:27017"
    rs.reconfig(cfg)
    8 (chính)

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

  • cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    0

Và với đầu ra

cfg = rs.conf()
cfg.members[0].host = "mongodb0.example.net:27017"
rs.reconfig(cfg)
1 sau:

{
"_id" : "rs",
"version" : 3,
"members" : [
{
"_id" : 0,
"host" : "database0.example.com:27017"
},
{
"_id" : 1,
"host" : "database1.example.com:27017"
},
{
"_id" : 2,
"host" : "database2.example.com:27017"
}
]
}

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

  • cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    2 (chính)

  • cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    3

  • cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    4

Sử dụng thủ tục thích hợp nhất để triển khai của bạn.

Quy trình này sử dụng các giả định trên.assumptions.

  1. Đối với mỗi thứ cấp trong bộ bản sao, hãy thực hiện chuỗi hoạt động sau:

    1. Dừng thứ cấp.

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

    3. Kết nối

      cfg = rs.conf()
      cfg.members[0].host = "mongodb0.example.net:27017"
      rs.reconfig(cfg)
      5 với chính bộ bản sao. Trong ví dụ của chúng tôi, bản chính chạy trên cổng
      cfg = rs.conf()
      cfg.members[0].host = "mongodb0.example.net:27017"
      rs.reconfig(cfg)
      6 vì vậy bạn sẽ ban hành lệnh sau:
      cfg = rs.conf()
      cfg.members[0].host = "mongodb0.example.net:27017"
      rs.reconfig(cfg)
      5
      to the replica set's primary. In our example, the primary runs on port
      cfg = rs.conf()
      cfg.members[0].host = "mongodb0.example.net:27017"
      rs.reconfig(cfg)
      6 so you would issue the following command:

    4. Sử dụng

      cfg = rs.conf()
      cfg.members[0].host = "mongodb0.example.net:27017"
      rs.reconfig(cfg)
      7 để cập nhật tài liệu cấu hình đặt bản sao với tên máy chủ mới.

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

      cfg = rs.conf()
      cfg.members[0].host = "mongodb0.example.net:27017"
      rs.reconfig(cfg)
      8 của mảng
      cfg = rs.conf()
      cfg.members[0].host = "mongodb0.example.net:27017"
      rs.reconfig(cfg)
      9 (tức là
      {
      "_id" : "rs",
      "version" : 4,
      "members" : [
      {
      "_id" : 0,
      "host" : "mongodb0.example.net:27017"
      },
      {
      "_id" : 1,
      "host" : "mongodb1.example.net:27017"
      },
      {
      "_id" : 2,
      "host" : "mongodb2.example.net:27017"
      }
      ]
      }
      0) trong tài liệu cấu hình SET SET:

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

      Để biết thêm thông tin về việc cập nhật tài liệu cấu hình, xem ví dụ.

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

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

  2. Kết nối

    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    5 với chính và bước xuống chính bằng phương pháp
    {
    "_id" : "rs",
    "version" : 4,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017"
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017"
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017"
    }
    ]
    }
    2:
    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    5
    to the primary and step down the primary using the
    {
    "_id" : "rs",
    "version" : 4,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017"
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017"
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017"
    }
    ]
    }
    2 method:

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

  3. Khi bước xuống thành công, hãy tắt cái sơ cấp cũ.

  4. Bắt đầu thể hiện

    {
    "_id" : "rs",
    "version" : 4,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017"
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017"
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017"
    }
    ]
    }
    3 sẽ trở thành chính mới ở vị trí mới.

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

    Ví dụ: nếu sơ cấp cũ ở vị trí

    {
    "_id" : "rs",
    "version" : 4,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017"
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017"
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017"
    }
    ]
    }
    4 và tên máy chủ chính của mới là
    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    2, bạn sẽ chạy:

    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)

  6. Kết nối

    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    5 với chính mới.
    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    5
    to the new primary.

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

    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    1 trong
    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    5
    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    5

    Đầu ra của bạn sẽ giống với:

    {
    "_id" : "rs",
    "version" : 4,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017"
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017"
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017"
    }
    ]
    }

Quy trình này sử dụng các giả định trên.assumptions.

Đối với mỗi thứ cấp trong bộ bản sao, hãy thực hiện chuỗi hoạt động sau:

Dừng thứ cấp.

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

  1. Kết nối

    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    5 với chính bộ bản sao. Trong ví dụ của chúng tôi, bản chính chạy trên cổng
    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    6 vì vậy bạn sẽ ban hành lệnh sau:

    mongosh --port 27017 -u myUserAdmin --authenticationDatabase 'admin' -p

  2. Sử dụng

    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    7 để cập nhật tài liệu cấu hình đặt bản sao với tên máy chủ mới.

    db.adminCommand( {
    createRole: "systemreplsetRole",
    privileges: [
    { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
    ],
    roles: []
    } );

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

    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    8 của mảng
    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    9 (tức là
    {
    "_id" : "rs",
    "version" : 4,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017"
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017"
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017"
    }
    ]
    }
    0) trong tài liệu cấu hình SET SET:

    use admin
    db.grantRolesToUser( "userPerformingRename", [ { role: "systemreplsetRole", db: "admin" } ] );

  1. Dừng tất cả các thành viên trong bộ bản sao.

  2. Khởi động lại mỗi thành viên trên một cổng khác nhau và không sử dụng tùy chọn thời gian chạy

    db.adminCommand( {
    createRole: "systemreplsetRole",
    privileges: [
    { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
    ],
    roles: []
    } );
    0. Thay đổi số cổng trong quá trình bảo trì 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
    db.adminCommand( {
    createRole: "systemreplsetRole",
    privileges: [
    { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
    ],
    roles: []
    } );
    1 thông thường của thành viên, trong ví dụ này là
    db.adminCommand( {
    createRole: "systemreplsetRole",
    privileges: [
    { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
    ],
    roles: []
    } );
    2. Sử dụng lệnh giống như sau:

    Cảnh báo

    mongod --dbpath /data/db1/ --port 37017 --bind_ip localhost,

    Quan trọng

    Để tránh các bản cập nhật cấu hình do thay đổi địa chỉ IP, hãy sử dụng tên máy chủ DNS thay vì địa chỉ IP. Điều đặc biệt quan trọng là sử dụng tên máy chủ DNS thay vì địa chỉ IP khi định cấu hình các thành viên đặt bản sao hoặc các thành viên cụm bị chia cắt.

    Sử dụng tên máy chủ thay vì địa chỉ IP để định cấu hình các cụm trên đường chân trời mạng chia. Bắt đầu từ MongoDB 5.0, các nút chỉ được cấu hình với địa chỉ IP sẽ không xác thực khởi động và sẽ không bắt đầu.

  3. Đối với mỗi thành viên của bộ bản sao, hãy thực hiện chuỗi hoạt động sau:

    1. Kết nối

      cfg = rs.conf()
      cfg.members[0].host = "mongodb0.example.net:27017"
      rs.reconfig(cfg)
      5 với
      {
      "_id" : "rs",
      "version" : 4,
      "members" : [
      {
      "_id" : 0,
      "host" : "mongodb0.example.net:27017"
      },
      {
      "_id" : 1,
      "host" : "mongodb1.example.net:27017"
      },
      {
      "_id" : 2,
      "host" : "mongodb2.example.net:27017"
      }
      ]
      }
      3 đang chạy trên cổng mới, tạm thời. Ví dụ: đối với một thành viên chạy trên cổng tạm thời của
      db.adminCommand( {
      createRole: "systemreplsetRole",
      privileges: [
      { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
      ],
      roles: []
      } );
      5, bạn sẽ ban hành lệnh này:
      cfg = rs.conf()
      cfg.members[0].host = "mongodb0.example.net:27017"
      rs.reconfig(cfg)
      5
      to the
      {
      "_id" : "rs",
      "version" : 4,
      "members" : [
      {
      "_id" : 0,
      "host" : "mongodb0.example.net:27017"
      },
      {
      "_id" : 1,
      "host" : "mongodb1.example.net:27017"
      },
      {
      "_id" : 2,
      "host" : "mongodb2.example.net:27017"
      }
      ]
      }
      3 running on the new, temporary port. For example, for a member running on a temporary port of
      db.adminCommand( {
      createRole: "systemreplsetRole",
      privileges: [
      { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
      ],
      roles: []
      } );
      5, you would issue this command:

      Nếu chạy với Điều khiển truy cập, hãy kết nối với tư cách là người dùng với các đặc quyền phù hợp. Xem điều kiện tiên quyết.Prerequisites.

      mongosh --port 37017 -u userPerformingRename --authenticationDatabase=admin -p

    2. Chỉnh sửa cấu hình đặt bản sao theo cách thủ công. Cấu hình bộ bản sao là tài liệu duy nhất trong bộ sưu tập

      {
      "_id" : "rs",
      "version" : 4,
      "members" : [
      {
      "_id" : 0,
      "host" : "mongodb0.example.net:27017"
      },
      {
      "_id" : 1,
      "host" : "mongodb1.example.net:27017"
      },
      {
      "_id" : 2,
      "host" : "mongodb2.example.net:27017"
      }
      ]
      }
      9 trong cơ sở dữ liệu

      mongosh --port 27017 -u myUserAdmin --authenticationDatabase 'admin' -p

      0.

      Để thay đổi tên máy chủ, chỉnh sửa cấu hình bộ bản sao để cung cấp tên máy chủ và cổng mới cho tất cả các thành viên của bộ bản sao.

      1. Chuyển sang cơ sở dữ liệu

        mongosh --port 27017 -u myUserAdmin --authenticationDatabase 'admin' -p

        0.

      2. Tạo một biến JavaScript cho tài liệu cấu hình. Sửa đổi giá trị của trường

        db.adminCommand( {
        createRole: "systemreplsetRole",
        privileges: [
        { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
        ],
        roles: []
        } );
        9 để phù hợp với bộ bản sao của bạn.

        cfg = db.system.replset.findOne( { "_id": "rs0" } )

      3. Cung cấp tên máy chủ và cổng mới cho mỗi thành viên của bộ bản sao. Sửa đổi tên máy chủ và cổng để phù hợp với bộ bản sao của bạn.

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

      4. Cập nhật tên máy chủ và cổng trong bộ sưu tập

        {
        "_id" : "rs",
        "version" : 4,
        "members" : [
        {
        "_id" : 0,
        "host" : "mongodb0.example.net:27017"
        },
        {
        "_id" : 1,
        "host" : "mongodb1.example.net:27017"
        },
        {
        "_id" : 2,
        "host" : "mongodb2.example.net:27017"
        }
        ]
        }
        9:

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

      5. Xác minh các thay đổi:

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

    3. Dừng quy trình

      {
      "_id" : "rs",
      "version" : 4,
      "members" : [
      {
      "_id" : 0,
      "host" : "mongodb0.example.net:27017"
      },
      {
      "_id" : 1,
      "host" : "mongodb1.example.net:27017"
      },
      {
      "_id" : 2,
      "host" : "mongodb2.example.net:27017"
      }
      ]
      }
      3 trên thành viên.

  4. Sau khi cấu hình lại tất cả các thành viên của tập hợp, hãy bắt đầu từng phiên bản

    {
    "_id" : "rs",
    "version" : 4,
    "members" : [
    {
    "_id" : 0,
    "host" : "mongodb0.example.net:27017"
    },
    {
    "_id" : 1,
    "host" : "mongodb1.example.net:27017"
    },
    {
    "_id" : 2,
    "host" : "mongodb2.example.net:27017"
    }
    ]
    }
    3 theo cách thông thường: Sử dụng số cổng thông thường và sử dụng tùy chọn
    db.adminCommand( {
    createRole: "systemreplsetRole",
    privileges: [
    { resource: { db: "local", collection: "system.replset" }, actions: ["find","update"] }
    ],
    roles: []
    } );
    0. Ví dụ:

    Cảnh báo

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

  5. Quan trọng

    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    5. For example:

  6. Để tránh các bản cập nhật cấu hình do thay đổi địa chỉ IP, hãy sử dụng tên máy chủ DNS thay vì địa chỉ IP. Điều đặc biệt quan trọng là sử dụng tên máy chủ DNS thay vì địa chỉ IP khi định cấu hình các thành viên đặt bản sao hoặc các thành viên cụm bị chia cắt.

    cfg = rs.conf()
    cfg.members[0].host = "mongodb0.example.net:27017"
    rs.reconfig(cfg)
    5

    Sử dụng tên máy chủ thay vì địa chỉ IP để định cấu hình các cụm trên đường chân trời mạng chia. Bắt đầu từ MongoDB 5.0, các nút chỉ được cấu hình với địa chỉ IP sẽ không xác thực khởi động và sẽ không bắt đầu.

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

Làm cách nào để thay đổi địa chỉ IP của tôi trong MongoDB?

Ở phía bên trái của màn hình dưới bảo mật, nhấp vào truy cập mạng. Bấm vào nút Thêm địa chỉ IP màu xanh lá cây. Trong phương thức, nhấp vào nút Cho phép truy cập từ mọi nơi. Bạn sẽ thấy 0,0. Click the green Add IP Address button. In the modal, click the ALLOW ACCESS FROM ANYWHERE button. You should see 0.0.

Làm thế nào bạn có thể thiết lập bộ bản sao MongoDB?

Bạn có thể thiết lập một bản sao mới được đặt trong MongoDB bằng các bước sau:..
Bước 1: Bắt đầu các trường hợp Mongod ..
Bước 2: Định cấu hình bộ bản sao ..
Bước 3: Kích hoạt sao chép 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: Loại bỏ các trường hợp khỏi các bộ bản sao ..
Bước 6: Kiểm tra quá trình sao chép ..

Làm thế nào để bạn thay đổi bản sao được đặt thành độc lập?

Bài đăng trên blog này sẽ đi qua các bước cần thiết để chuyển đổi bản sao được đặt thành một máy chủ độc lập ...
Loại bỏ các thứ hai: ....
Thay đổi cấu hình: ....
Loại bỏ các đối tượng sao chép: ....
Khởi động lại dịch vụ: ....
Lời khuyên kết nối:.

Làm thế nào để bản sao MongoDB hoạt động?

Sao chép trong MongoDB Một bộ bản sao là một nhóm các trường hợp Mongod duy trì cùng một tập dữ liệu.Một bộ bản sao chứa một số nút mang dữ liệu và tùy chọn một nút Trọng tài.Trong số các nút mang dữ liệu, một và chỉ một thành viên được coi là nút chính, trong khi các nút khác được coi là nút thứ cấp.A replica set is a group of mongod instances that maintain the same data set. A replica set contains several data bearing nodes and optionally one arbiter node. Of the data bearing nodes, one and only one member is deemed the primary node, while the other nodes are deemed secondary nodes.