MongoDB Sharding
Sharding
Terdapat satu lagi jenis kelompok dalam Mongodb, iaitu teknologi sharding, yang boleh memenuhi keperluan pertumbuhan besar MongoDB dalam volum data.
Apabila MongoDB menyimpan sejumlah besar data, satu mesin mungkin tidak mencukupi untuk menyimpan data atau menyediakan pemprosesan baca dan tulis yang boleh diterima. Pada masa ini, kami boleh membahagikan data pada berbilang mesin supaya sistem pangkalan data boleh menyimpan dan memproses lebih banyak data.
Mengapa menggunakan sharding
Salin semua operasi tulis ke nod utama
Data sensitif tertunda Akan membuat pertanyaan pada nod induk
Set replika tunggal dihadkan kepada 12 nod
Apabila volum permintaan besar, memori akan menjadi tidak mencukupi.
Cakera setempat tidak mencukupi
Penskalaan menegak adalah mahal
MongoDB Sharding
Angka berikut menunjukkan taburan struktur gugusan beling dalam MongoDB:
Angka di atas terutamanya mempunyai tiga komponen utama seperti berikut:
Shard:
digunakan untuk menyimpan blok data sebenar Dalam persekitaran pengeluaran sebenar, peranan pelayan shard boleh dimainkan oleh beberapa mesin dan set relik titik kegagalan hos
Pelayan Konfig:
contoh mongod, yang menyimpan keseluruhan ClusterMetadata, termasuk maklumat bahagian.
Penghala Pertanyaan:
Penghalaan hadapan, pelanggan mengakses daripada ini dan menjadikan keseluruhan kluster kelihatan seperti pangkalan data tunggal, dan aplikasi bahagian hadapan boleh Gunakan secara telus.
Instance sharded
Pengagihan port struktur sharding adalah seperti berikut:
Shard Server 1:27020 Shard Server 2:27021 Shard Server 3:27022 Shard Server 4:27023 Config Server :27100 Route Process:40000
Langkah 1: Mulakan Shard Server
[root@100 /]# mkdir -p /www/mongoDB/shard/s0 [root@100 /]# mkdir -p /www/mongoDB/shard/s1 [root@100 /]# mkdir -p /www/mongoDB/shard/s2 [root@100 /]# mkdir -p /www/mongoDB/shard/s3 [root@100 /]# mkdir -p /www/mongoDB/shard/log [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork .... [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27023 --dbpath=/www/mongoDB/shard/s3 --logpath=/www/mongoDB/shard/log/s3.log --logappend --fork
Langkah 2: Mulakan Pelayan Konfig
[root@100 /]# mkdir -p /www/mongoDB/shard/config [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork
Nota: Di sini kita boleh memulakannya sama seperti memulakan perkhidmatan mongodb biasa, tanpa menambah parameter --shardsvr dan configsvr. Kerana fungsi kedua-dua parameter ini adalah untuk menukar port permulaan, kita hanya boleh menentukan port itu sendiri.
Langkah 3: Mulakan Proses Laluan
/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500
Dalam parameter permulaan mongos, item chunkSize digunakan untuk menentukan saiz chunk Unit ialah MB Saiz lalai ialah 200MB.
Langkah 4: Konfigurasikan Sharding
Seterusnya, kami menggunakan MongoDB Shell untuk log masuk ke mongos dan menambah Shard nod
[root@100 shard]# /usr/local/mongoDB/bin/mongo admin --port 40000 MongoDB shell version: 2.0.7 connecting to: 127.0.0.1:40000/admin mongos> db.runCommand({ addshard:"localhost:27020" }) { "shardAdded" : "shard0000", "ok" : 1 } ...... mongos> db.runCommand({ addshard:"localhost:27029" }) { "shardAdded" : "shard0009", "ok" : 1 } mongos> db.runCommand({ enablesharding:"test" }) #设置分片存储的数据库 { "ok" : 1 } mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}}) { "collectionsharded" : "test.log", "ok" : 1 }
Langkah 5: Tidak perlu mengubah banyak dalam kod program Hanya sambungkan pangkalan data ke antara muka 40000