máy chủ cấu hình mongodb không đồng bộ


9

Tôi đã thiết lập với 2 phân đoạn, với 2 máy chủ bản sao và 3 máy chủ cấu hình và 2 mongos. Tôi có vấn đề sau:

1) máy chủ cấu hình mongo không đồng bộ:

Aug 14 09:46:48 server mongos.27017[10143]: Sun Aug 11 09:46:48.987 [CheckConfigServers] ERROR: config servers not in sync! config servers mongocfg1.testing.com:27000 and mongocfg3.testing.com:27000 differ#012chunks: "d2c08c5f1ee6048e5f6fab30e37a70f0"#011chunks: "7e643e9402ba90567ddc9388c2abdb8a"#012databases: "6f35ec52b536eee608d5bc706a72ec1e"#011databases: "6f35ec52b536eee608d5bc706a72ec1e"

2) Tôi sử dụng tài liệu này để đồng bộ hóa máy chủ: http://docs.mongodb.org/manual/tutorial/replace-config-server/ 3) Sau khi đồng bộ hóa, tôi khởi động lại một máy chủ mongos và thấy điều này trong nhật ký:

Thu Aug 15 09:56:05.376 [mongosMain] MongoS version 2.4.4 starting: pid=1575 port=27111 64-bit host=web-inno.innologica.com (--help for usage)
Thu Aug 15 09:56:05.376 [mongosMain] git version: 4ec1fb96702c9d4c57b1e06dd34eb73a16e407d2
Thu Aug 15 09:56:05.376 [mongosMain] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Thu Aug 15 09:56:05.376 [mongosMain] options: { configdb: "mongocfg1.testing.com:27000,mongocfg2.testing.com:27000,mongocfg3.testing.com:27000", keyFile: "/mongo_database/pass.key", port: 27111 }
Thu Aug 15 09:56:05.582 [mongosMain] SyncClusterConnection connecting to [mongocfg1.testing.com:27000]
Thu Aug 15 09:56:05.583 [mongosMain] SyncClusterConnection connecting to [mongocfg2.testing.com:27000]
Thu Aug 15 09:56:05.583 [mongosMain] SyncClusterConnection connecting to [mongocfg3.testing.com:27000]
Thu Aug 15 09:56:05.585 [mongosMain] SyncClusterConnection connecting to [mongocfg1.testing.com:27000]
Thu Aug 15 09:56:05.586 [mongosMain] SyncClusterConnection connecting to [mongocfg2.testing.com:27000]
Thu Aug 15 09:56:05.586 [mongosMain] SyncClusterConnection connecting to [mongocfg3.testing.com:27000]
Thu Aug 15 09:56:07.213 [Balancer] about to contact config servers and shards
Thu Aug 15 09:56:07.213 [websvr] admin web console waiting for connections on port 28111
Thu Aug 15 09:56:07.213 [Balancer] starting new replica set monitor for replica set replica01 with seed of mongo1.testing.com:27020,mongo2.testing.com:27020,mongo3.testing.com:27017
Thu Aug 15 09:56:07.214 [Balancer] successfully connected to seed mongo1.testing.com:27020 for replica set replica01
Thu Aug 15 09:56:07.214 [Balancer] changing hosts to { 0: "mongo1.testing.com:27020", 1: "mongo2.testing.com:27020" } from replica01/
Thu Aug 15 09:56:07.214 [Balancer] trying to add new host mongo1.testing.com:27020 to replica set replica01
Thu Aug 15 09:56:07.215 [Balancer] successfully connected to new host mongo1.testing.com:27020 in replica set replica01
Thu Aug 15 09:56:07.215 [Balancer] trying to add new host mongo2.testing.com:27020 to replica set replica01
Thu Aug 15 09:56:07.215 [Balancer] successfully connected to new host mongo2.testing.com:27020 in replica set replica01
Thu Aug 15 09:56:07.215 [mongosMain] waiting for connections on port 27111
Thu Aug 15 09:56:07.427 [Balancer] Primary for replica set replica01 changed to mongo1.testing.com:27020
Thu Aug 15 09:56:07.429 [Balancer] replica set monitor for replica set replica01 started, address is replica01/mongo1.testing.com:27020,mongo2.testing.com:27020
Thu Aug 15 09:56:07.429 [ReplicaSetMonitorWatcher] starting
Thu Aug 15 09:56:07.430 [Balancer] starting new replica set monitor for replica set replica02 with seed of mongo5.testing.com:27020,mongo6.testing.com:27020
Thu Aug 15 09:56:07.431 [Balancer] successfully connected to seed mongo5.testing.com:27020 for replica set replica02
Thu Aug 15 09:56:07.432 [Balancer] changing hosts to { 0: "mongo5.testing.com:27020", 1: "mongo6.testing.com:27020" } from replica02/
Thu Aug 15 09:56:07.432 [Balancer] trying to add new host mongo5.testing.com:27020 to replica set replica02
Thu Aug 15 09:56:07.432 [Balancer] successfully connected to new host mongo5.testing.com:27020 in replica set replica02
Thu Aug 15 09:56:07.432 [Balancer] trying to add new host mongo6.testing.com:27020 to replica set replica02
Thu Aug 15 09:56:07.433 [Balancer] successfully connected to new host mongo6.testing.com:27020 in replica set replica02
Thu Aug 15 09:56:07.712 [Balancer] Primary for replica set replica02 changed to mongo5.testing.com:27020
Thu Aug 15 09:56:07.714 [Balancer] replica set monitor for replica set replica02 started, address is replica02/mongo5.testing.com:27020,mongo6.testing.com:27020
Thu Aug 15 09:56:07.715 [Balancer] config servers and shards contacted successfully
Thu Aug 15 09:56:07.715 [Balancer] balancer id: web-inno.innologica.com:27111 started at Aug 15 09:56:07
Thu Aug 15 09:56:07.715 [Balancer] SyncClusterConnection connecting to [mongocfg1.testing.com:27000]
Thu Aug 15 09:56:07.716 [Balancer] SyncClusterConnection connecting to [mongocfg2.testing.com:27000]
Thu Aug 15 09:56:24.438 [mongosMain] connection accepted from 127.0.0.1:55303 #1 (1 connection now open)
Thu Aug 15 09:56:24.443 [conn1]  authenticate db: admin { authenticate: 1, nonce: "6cc9a76b79656179", user: "admin", key: "xxxxxxxxxxxxxxxxxxx" }
Thu Aug 15 09:56:26.676 [conn1] creating WriteBackListener for: mongo1.testing.com:27020 serverID: 520c7b87e4a4c3afa569b21a
Thu Aug 15 09:56:26.676 [conn1] creating WriteBackListener for: mongo2.testing.com:27020 serverID: 520c7b87e4a4c3afa569b21a
Thu Aug 15 09:56:26.678 [conn1] creating WriteBackListener for: mongo5.testing.com:27020 serverID: 520c7b87e4a4c3afa569b21a
Thu Aug 15 09:56:26.678 [conn1] creating WriteBackListener for: mongo6.testing.com:27020 serverID: 520c7b87e4a4c3afa569b21a
Thu Aug 15 09:56:26.679 [conn1] SyncClusterConnection connecting to [mongocfg1.testing.com:27000]
Thu Aug 15 09:56:26.679 [conn1] SyncClusterConnection connecting to [mongocfg2.testing.com:27000]
Thu Aug 15 09:56:26.680 [conn1] SyncClusterConnection connecting to [mongocfg3.testing.com:27000]
Thu Aug 15 09:57:33.704 [conn1] warning: inconsistent chunks found when reloading collection.documents, previous version was 8651|7||51b5c7a96b2903a0b3fac106, this should be rare
Thu Aug 15 09:57:33.714 [conn1] warning: ChunkManager loaded an invalid config for collection.documents, trying again
Thu Aug 15 09:57:34.065 [conn1] warning: inconsistent chunks found when reloading collection.documents, previous version was 8651|7||51b5c7a96b2903a0b3fac106, this should be rare
Thu Aug 15 09:57:34.076 [conn1] warning: ChunkManager loaded an invalid config for collection.documents, trying again
Thu Aug 15 09:57:34.491 [conn1] warning: inconsistent chunks found when reloading collection.documents, previous version was 8651|7||51b5c7a96b2903a0b3fac106, this should be rare
Thu Aug 15 09:57:34.503 [conn1] warning: ChunkManager loaded an invalid config for collection.documents, trying again
Thu Aug 15 09:57:34.533 [conn1] Assertion: 13282:Couldn't load a valid config for collection.documents after 3 attempts. Please try again.
0xa82161 0xa46e8b 0xa473cc 0x8b857e 0x93cb52 0x93f329 0x93ff18 0x94311f 0x9740e0 0x991865 0x669887 0xa6e8ce 0x7f4456361851 0x7f445570790d
 /usr/bin/mongos(_ZN5mongo15printStackTraceERSo+0x21) [0xa82161]
 /usr/bin/mongos(_ZN5mongo11msgassertedEiPKc+0x9b) [0xa46e8b]
 /usr/bin/mongos() [0xa473cc]
 /usr/bin/mongos(_ZN5mongo12ChunkManager18loadExistingRangesERKSs+0x24e) [0x8b857e]
 /usr/bin/mongos(_ZN5mongo8DBConfig14CollectionInfo5shardEPNS_12ChunkManagerE+0x52) [0x93cb52]
 /usr/bin/mongos(_ZN5mongo8DBConfig14CollectionInfoC1ERKNS_7BSONObjE+0x149) [0x93f329]
 /usr/bin/mongos(_ZN5mongo8DBConfig5_loadEv+0xa48) [0x93ff18]
 /usr/bin/mongos(_ZN5mongo8DBConfig4loadEv+0x1f) [0x94311f]
 /usr/bin/mongos(_ZN5mongo4Grid11getDBConfigESsbRKSs+0x480) [0x9740e0]
 /usr/bin/mongos(_ZN5mongo7Request5resetEv+0x1d5) [0x991865]
 /usr/bin/mongos(_ZN5mongo21ShardedMessageHandler7processERNS_7MessageEPNS_21AbstractMessagingPortEPNS_9LastErrorE+0x67) [0x669887]
 /usr/bin/mongos(_ZN5mongo17PortMessageServer17handleIncomingMsgEPv+0x42e) [0xa6e8ce]
 /lib64/libpthread.so.0(+0x7851) [0x7f4456361851]
 /lib64/libc.so.6(clone+0x6d) [0x7f445570790d]
Thu Aug 15 09:57:34.549 [conn1] scoped connection to mongocfg1.testing.com:27000,mongocfg2.testing.com:27000,mongocfg3.testing.com:27000 not being returned to the pool
Thu Aug 15 09:57:34.549 [conn1] warning: error loading initial database config information :: caused by :: Couldn't load a valid config for collection.documents after 3 attempts. Please try again.
Thu Aug 15 09:57:34.549 [conn1] AssertionException while processing op type : 2004 to : collection.system.namespaces :: caused by :: 13282 error loading initial database config information :: caused by :: Couldn't load a valid config for collection.documents after 3 attempts. Please try again.
Thu Aug 15 09:57:37.722 [Balancer] SyncClusterConnection connecting to [mongocfg1.testing.com:27000]
Thu Aug 15 09:57:37.723 [Balancer] SyncClusterConnection connecting to [mongocfg2.testing.com:27000]
Thu Aug 15 09:57:37.723 [Balancer] SyncClusterConnection connecting to [mongocfg3.testing.com:27000]

Mongos đầu tiên cũng có lỗi này "cảnh báo: lỗi tải thông tin cấu hình cơ sở dữ liệu ban đầu :: gây ra bởi :: Không thể tải cấu hình hợp lệ cho bộ sưu tập.document sau 3 lần thử. Vui lòng thử lại."

nhưng làm việc bây giờ

Mongos thứ hai sau khi khởi động lại không hoạt động;

mongos> show collections
Thu Aug 15 09:57:34.550 JavaScript execution failed: error: {
    "$err" : "error loading initial database config information :: caused by :: Couldn't load a valid config for collection.documents after 3 attempts. Please try again.",
    "code" : 13282
} at src/mongo/shell/query.js:L128
mongos>

Các bước tiếp theo để khôi phục máy chủ cấu hình là gì?

Mọi lời khuyên đều được chào đón.

Câu trả lời:


11

Khôi phục máy chủ cấu hình, đặc biệt nếu bạn đã có một số loại sự kiện thảm khốc là khó khăn, nhưng không phải là không thể. Nhưng, trước khi chúng ta tiến xa hơn, một cảnh báo táo bạo lớn:

TRỞ LẠI MỌI THỨ

Điều đó có nghĩa là sao lưu cả ba máy chủ cấu hình. Tôi sẽ cung cấp cho bạn một số lời khuyên và nói chung là chính xác, nhưng xin vui lòng, hãy sao lưu mọi phiên bản máy chủ cấu hình hiện tại trước khi bạn ghi đè / thay thế bất cứ điều gì

Như một lời giải thích nhanh, các máy chủ cấu hình không được cấu hình như một bộ bản sao - mỗi phiên bản máy chủ cấu hình được cho là giống hệt nhau (ít nhất là đối với tất cả các bộ sưu tập quan trọng) với các bộ khác. Do đó, bất kỳ máy chủ cấu hình lành mạnh nào cũng có thể được sử dụng để thay thế máy chủ cấu hình không lành mạnh và sau đó bạn có thể làm theo hướng dẫn mà bạn đã đề cập để quay lại cấu hình tốt.

Chìa khóa để phục hồi là xác định máy chủ cấu hình khỏe mạnh và sau đó sử dụng máy chủ đó để thay thế máy chủ khác - sau đó bạn kết thúc với 3 máy chủ cấu hình giống hệt nhau.

Có nhiều hơn một cách để làm điều này, về cơ bản chúng thuộc ba loại:

1) Sử dụng thông báo lỗi

Thông báo lỗi được in ra thực sự cho bạn biết máy chủ cấu hình nào mà nó tin là sức khỏe, mặc dù điều đó không rõ ràng từ tin nhắn. Đây là cách đọc nó một cách khái quát:

ERROR: config servers not in sync! config servers <healthy-server> and <out-of-sync-server> differ

Về cơ bản, cái đầu tiên trong danh sách là cái tốt cho sức khỏe, trong trường hợp của bạn mongocfg1.testing.com:27000. Đó là ứng cử viên đầu tiên của chúng tôi cho một cơ sở dữ liệu cấu hình lành mạnh.

2) Sử dụng dbhashđể so sánh cả ba và chọn những người đồng ý

Trên mỗi máy chủ cấu hình chuyển sang cơ sở dữ liệu cấu hình bằng cách sử dụng use config, chạy db.runCommand("dbhash")và so sánh các giá trị băm cho các bộ sưu tập bên dưới:

  • miếng, mảnh nhỏ
  • cơ sở dữ liệu
  • cài đặt
  • mảnh vỡ
  • phiên bản

Bạn đang tìm kiếm hai máy chủ đồng ý và sử dụng nó làm cơ sở để xác định rằng phiên bản của cơ sở dữ liệu cấu hình trên các máy chủ đó về cơ bản là đáng tin cậy và nên được sử dụng để gieo phần còn lại.

3. Kiểm tra thủ công các bộ sưu tập trong cơ sở dữ liệu cấu hình

Cuối cùng, hãy xem cơ sở dữ liệu cấu hình và chú ý đến các bộ sưu tập được liệt kê trong tùy chọn thứ hai ở trên. Đây là một cuộc gọi phán xét thẳng dựa trên sự quen thuộc với dữ liệu của bạn.

Hy vọng rằng cả ba phương pháp đều chỉ bạn vào cùng một máy chủ (hoặc máy chủ lưu trữ). Máy chủ cấu hình đó nên được sử dụng để gieo hai cái kia (sau khi bạn đã sao lưu để bạn có thể quay lại). Đó là cơ bản đặt cược tốt nhất của bạn. Nếu thất bại, thì bạn có thể muốn thử một trong các phiên bản khác (từ bản sao lưu) - luôn đảm bảo rằng khi bạn khởi động chúng, cả ba đều giống hệt nhau.

Cuối cùng, luôn đảm bảo rằng tất cả các mongosquy trình đang sử dụng cùng một chuỗi máy chủ cấu hình và cả 3 máy chủ luôn được liệt kê theo cùng một thứ tự trên mỗi quy trình - không làm như vậy trong tất cả các mongosquy trình có thể dẫn đến (rất) kết quả kỳ lạ.


Đối với danh mục thứ hai, tôi không thấy bộ sưu tập "cơ sở dữ liệu". Nó quan trọng như thế nào nếu những thứ khác như "khối" được đồng bộ hóa? Nó có thể được tìm thấy ở nơi khác?
snetch

Tôi đã làm theo những gì bạn nói tôi chỉ thấy "md5": "d41d8cd98f00b204e9800998ecf8429e" của máy chủ 3 config là như nhau. Làm thế nào để tôi sửa lỗi?
Amit Tripathi

chào AdamC, tôi hiện đang gặp vấn đề tương tự và việc tôi làm điều đó càng sớm càng tốt. Tôi có một câu hỏi nhanh. Tôi có phải dừng tất cả mongos và mongod trước khi tắt configdb không?
ám vào

Nếu bạn gặp vấn đề khẩn cấp, tôi khuyên bạn nên nhận tư vấn chuyên nghiệp về vấn đề này - liên hệ với MongoDB và yêu cầu họ hỗ trợ. Tôi không còn làm việc cho MongoDB và sẽ không muốn nói với bạn về loại thủ tục này, đặc biệt đối với các phiên bản cơ sở dữ liệu gần đây, nơi loại vấn đề này đã thay đổi đáng kể (câu trả lời này được viết gần 4 năm trước)
Adam C
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.