2013-06-04 28 views
16

xem xét, tôi có 4 bộ lặp và cấu hình như sau:Làm thế nào để chuyển đổi một bản sao MongoDB thiết lập để một độc lập máy chủ

{ 
"_id": "rs_0", 
"version": 5, 
"members" : [ 
    {"_id": 1, "host": "127.0.0.1:27001"}, 
    {"_id": 2, "host": "127.0.0.1:27002"}, 
    {"_id": 3, "host": "127.0.0.1:27003"}, 
    {"_id": 4, "host": "127.0.0.1:27004"} 
] 
} 

Tôi có thể kết nối với tất cả những bộ sử dụng mongo --port <port>

Có các tài liệu để nhận thông tin trên Convert a Standalone to a Replica Set, nhưng bất kỳ ai có thể cho tôi biết cách chuyển đổi thành độc lập từ bản sao?

Trả lời

12

Chỉ cần xóa máy chủ khỏi bộ bản sao (rs.remove('host:port')), khởi chạy lại máy chủ mà không cần tham số replSet và lại độc lập.

+3

Nếu bạn không muốn nó giữ thông tin của nó, bạn cũng có thể xóa 'local' db – Sammaye

+1

Không làm việc: '' ' bippo: PRIMARY> rs.remove ('rudi.dev:27017'); { "errmsg": "ngoại lệ: không thể tìm thấy tự trong cấu hình replset mới", "code": 13.433, "ok": 0 } bippo: TIỂU> rs.config() { " _id": "bippo", "phiên bản": 1, "thành viên": [{ "_id": 0, "host": "rudi.dev:27017" } ] } '' ' –

+0

Viết một tài liệu hoàn chỉnh để chuyển đổi ReplicaSet thành máy chủ đơn [tecnicume] (http://tecnicume.blogspot.it/2016/02/mongodb-migrazione-da-replicaset.html). – Furetto

25

Xóa tất cả các máy chủ phụ khỏi bộ bản sao (rs.remove ('host: port')), khởi động lại deamon mongo mà không cần tham số replSet (chỉnh sửa /etc/mongo.conf) và các máy chủ phụ bắt đầu ở chế độ độc lập một lần nữa.

Máy chủ chính rất khó, vì bạn không thể xóa nó khỏi bộ bản sao bằng rs.remove. Khi bạn chỉ có nút chính trong bộ bản sao, bạn nên thoát khỏi vỏ mongo và dừng mongo. Sau đó, bạn chỉnh sửa tập tin /etc/mongo.conf và xóa tham số replSet và khởi động lại mongo. Khi bạn bắt đầu Mongo bạn đã có trong chế độ độc lập, nhưng vỏ Mongo sẽ nhắc nhở một thông báo như:

2015-07-31T12: 02: 51,112 + 0100 [initandlisten] ** Chú ý: mongod bắt đầu mà không - -replSet chưa 1 văn bản được trình bày trong local.system.replset

để loại bỏ các cảnh báo bạn có thể làm 2 thủ tục: 1) droping địa phương db và khởi động lại Mongo:

use local 
db.dropDatabase(); 

/etc/init.d/mongod restart 

2) Hoặc nếu bạn không muốn để được như vậy triệt để, bạn có thể làm:

use local 
db.system.replset.find() 

và nó sẽ nhắc nhở một thông báo như:

{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] } 

sau đó bạn sẽ xóa nó bằng cách sử:

db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] }) 

và nó có thể sẽ nhanh chóng :

WriteResult({ "nRemoved" : 1 }) 

Bây giờ, bạn có thể khởi động lại Mongo và cảnh báo nên được đi, và bạn sẽ có Mongo của bạn trong chế độ độc lập mà không cần cảnh báo

+0

Tôi đã phải chạy 'rs.initiate()' để tạo lại cụm sao chép một lần nữa và làm cho nút PRIMARY. Cảm ơn! – Tristan

+2

'' 'không được ủy quyền trên máy cục bộ để thực thi lệnh {delete: \" system.replset \ ", xóa: [{q: {_id: \" rs0 \ "}, giới hạn: 0.0}], đã ra lệnh: true}' ' 'đang thực hiện thao tác xóa. Vai trò nào là cần thiết để có thể xóa khỏi '' 'system.replset'''? –

1

1) Tới Mongo vỏ trên các máy chủ Secondary

2) Dừng các máy chủ thứ cấp bằng cách sử dụng dưới đây lệnh:

use admin 
    db.shutdownServer() 

Máy chủ chính của bạn sẽ tự động trở thành máy chủ độc lập.

Để biết thêm thông tin, hãy kiểm tra các liên kết dưới đây: http://www.learnit.net.in/2016/03/stopping-and-starting-mongodb.html

+0

nó làm việc cho tôi cảm ơn rất nhiều ....... –

Các vấn đề liên quan