server konfigurasi mongodb tidak sinkron

9

Saya memiliki pengaturan dengan 2 pecahan, dengan 2 server replika dan 3 server konfigurasi, dan 2 mongo. Saya memiliki masalah berikut:

1) server konfigurasi mongo tidak sinkron:

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) Saya menggunakan dokumen ini untuk menyinkronkan server: http://docs.mongodb.org/manual/tutorial/replace-config-server/ 3) Setelah sinkronisasi saya me-restart satu server mongos, dan melihatnya di log:

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]

Mongo pertama juga memiliki kesalahan ini "peringatan: kesalahan memuat informasi konfigurasi basis data awal :: disebabkan oleh :: Tidak dapat memuat konfigurasi yang sah untuk koleksi.document setelah 3 upaya. Silakan coba lagi."

tetapi bekerja untuk sekarang.

Mongo kedua setelah restart tidak berfungsi;

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>

Apa langkah selanjutnya untuk memulihkan server konfigurasi?

Semua saran dipersilahkan.

pengguna2688866
sumber

Jawaban:

11

Mengembalikan server konfigurasi, terutama jika Anda memiliki semacam peristiwa bencana itu rumit, tetapi bukan tidak mungkin. Tapi, sebelum kita melangkah lebih jauh, peringatan besar yang berani:

KEMBALI SEMUANYA

Itu berarti mengambil cadangan dari ketiga server konfigurasi. Saya akan memberi Anda beberapa saran, dan itu umumnya benar, tapi tolong, mohon cadangkan setiap instance server konfigurasi saat ini sebelum Anda menimpa / mengganti apa pun

Sebagai penjelasan singkat, server config tidak dikonfigurasi sebagai set replika - setiap instance server config seharusnya identik (setidaknya untuk semua koleksi yang penting) dengan yang lain. Oleh karena itu, server konfigurasi yang sehat dapat digunakan untuk mengganti server konfigurasi yang tidak sehat dan Anda kemudian dapat mengikuti tutorial yang Anda sebutkan untuk kembali ke konfigurasi yang baik.

Kunci untuk pemulihan adalah mengidentifikasi server konfigurasi yang sehat dan kemudian menggunakannya untuk mengganti yang lain - Anda kemudian berakhir dengan 3 server konfigurasi yang identik.

Ada lebih dari satu cara untuk melakukan ini, mereka pada dasarnya jatuh ke dalam tiga kategori:

1) Gunakan pesan kesalahan

Pesan kesalahan yang dicetak sebenarnya membuat Anda tahu server konfigurasi mana yang diyakini sehat, meskipun itu tidak jelas dari perpesanan. Berikut ini cara membacanya secara umum:

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

Pada dasarnya yang pertama dalam daftar adalah yang sehat, dalam kasus Anda itu mongocfg1.testing.com:27000. Itu adalah kandidat pertama kami untuk database konfigurasi yang sehat.

2) Gunakan dbhashuntuk membandingkan ketiganya dan memilih yang setuju

Pada setiap server konfigurasi, pindah ke database konfigurasi menggunakan use config, jalankan db.runCommand("dbhash")dan bandingkan hash untuk koleksi di bawah ini:

  • potongan
  • basis data
  • pengaturan
  • pecahan
  • Versi: kapan

Anda mencari dua server yang setuju, dan menggunakannya sebagai dasar untuk menentukan bahwa versi database konfigurasi pada host tersebut pada dasarnya dapat dipercaya dan harus digunakan untuk seed sisanya.

3. Periksa koleksi secara manual dalam database konfigurasi

Terakhir, lihatlah pada database konfigurasi, dan perhatikan koleksi yang terdaftar di opsi kedua di atas. Ini adalah panggilan penilaian langsung berdasarkan keakraban Anda dengan data Anda.

Semoga ketiga metode ini mengarahkan Anda ke host (atau host) yang sama. Server config itu harus digunakan untuk seed dua lainnya (setelah Anda mengambil cadangan sehingga Anda dapat kembali). Itu pada dasarnya adalah taruhan terbaik Anda. Jika itu gagal, maka Anda mungkin ingin mencoba salah satu versi lain (dari cadangan) - selalu memastikan bahwa ketika Anda memulai, ketiganya identik.

Akhirnya, selalu pastikan bahwa semua mongosproses menggunakan string server konfigurasi yang sama, dan bahwa ketiga server selalu terdaftar dalam urutan yang sama pada setiap proses - tidak melakukannya di semua mongosproses dapat menyebabkan (sangat) hasil yang aneh.

Adam C
sumber
Untuk kategori kedua, saya tidak melihat koleksi "database". Seberapa pentingkah jika hal-hal lain seperti "potongan" dalam sinkronisasi? Bisakah itu ditemukan di tempat lain?
Ambil
Saya mengikuti apa yang Anda katakan, saya hanya melihat "md5": "d41d8cd98f00b204e9800998ecf8429e" dari 3 server konfigurasi yang sama. Bagaimana cara memperbaiki kesalahan?
Amit Tripathi
hai AdamC, saya saat ini mengalami masalah yang sama dan sangat mendesak bagi saya untuk melakukannya sesegera mungkin. Saya punya pertanyaan singkat. Apakah saya harus menghentikan semua mongo dan mongod sebelum mematikan configdb?
rendybjunior
Jika Anda memiliki masalah mendesak, saya akan merekomendasikan Anda untuk mendapatkan saran profesional tentang hal ini - hubungi MongoDB dan minta dukungan mereka. Saya tidak lagi bekerja untuk MongoDB dan tidak akan merasa ingin berbicara dengan Anda melalui prosedur semacam ini, terutama untuk versi database yang lebih baru di mana masalah semacam ini telah berubah secara substansial (jawaban ini ditulis hampir 4 tahun yang lalu)
Adam C