
چگونه با داکر سیستم replica set را در MongoDB راه اندازی کنیم
"در این پست میخوایم در مورد replica set صبحت کنیم"
Replication تکنیکی است که در MongoDB برای اطمینان از اینکه همیشه از داده های شما نسخه پشتیبان تهیه و نگهداری شود، استفاده می شود، در صورتی که یکی از سرورهای پایگاه داده شما تمایل به خراب شدن، خاموش شدن یا تبدیل شدن به Ultron داشته باشد. حتی اگر تکرار آن آسان به نظر برسد، برای تازه واردان بسیار دلهره آور است که مجموعه های خود را دوباره راه اندازی کنند.
این آموزش یک راه مبتدی برای راه اندازی مجموعه های کپی MongoDB خود با استفاده از docker است.
پیش نیازها
تنها چیزی که ما باید روی دستگاه های خود نصب کنیم Docker است و ... همین! ما حتی نیازی به نصب MongoDB برای ایجاد مجموعه replica خود نداریم، زیرا می توانیم از طریق خود کانتینرها به آن دسترسی داشته باشیم.
برای تأیید اینکه داکر را نصب کرده اید، کد زیر را اجرا کنید:
docker -v
که باید شماره نسخه را به شما خروجی دهد. در مرحله بعد، باید مطمئن شویم که داکر دیمون ما در حال اجرا است. پس:
docker images
که باید لیستی از image ها که در حال حاضر روی سیستم خود دارید را خروجی دهد.
در مرحله بعد، آخرین نسخه رسمی Mongo image را با کد زیر دریافت خواهیم کرد
docker pull mongo
بسیار خب! حالا همه چیز آماده بوده در حال اجرا هستند.
در بحث replica set شما می تونید یک دیتابیس اصلی یا primary داشته باشید و همینطوری چندین دیتابیس ثانویه یا secondary که شما عملیات های read و write را روی دیتابیس primary انجام میدید و عملیات های readOnly را فقط روی دیتابیس های ثانویه انجام میدید، که این خب باعث افزایش سرعت و عملکرد بخش های داده در پنل های مدیریت هم میشود.
خب حالا چطوری باید اینکارو بکنیم:
میخواهیم 3 کانتینر از image مونگو داشته باشیم، همه در داخل شبکه کانتینر داکر خودشان. اجازه دهید آنها را mongo1، mongo2 و mongo3 نامگذاری کنیم. اینها سه نمونه مونگو از مجموعه ما خواهند بود. هر یک از سه کانتینر مونگو باید بتواند با سایر کانتینرهای شبکه ارتباط برقرار کند.
$ docker run \
-p 30001:27017 \
--name mongo1 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set
$ docker run \
-p 30002:27017 \
--name mongo2 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set
$ docker run \
-p 30003:27017 \
--name mongo3 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set
راه اندازی Replication
اکنون که همه نمونههای مونگو خود را آماده کردهایم، بیایید آنها را به یک replica تبدیل کنیم. ابتدا به وسیله کد زیر باید وارد داکر اولی بشیم و کدهای mongo shell رو وارد کنیم
docker exec -it mongo1 mongo
این دستور mongo shell را در کانتینر mongo1 در حال اجرا ما باز می کند (اما می توانید آن را از کانتینر mongo2 یا mongo3 نیز اجرا کنید). در داخل mongo shell، ابتدا پیکربندی خود را ایجاد می کنیم:
MongoDB shell version: 2.6.7
> db = (new Mongo('localhost:27017')).getDB('test')
test
> config = {
"_id" : "my-mongo-set",
"members" : [
{
"_id" : 0,
"host" : "mongo1:27017"
},
{
"_id" : 1,
"host" : "mongo2:27017"
},
{
"_id" : 2,
"host" : "mongo3:27017"
}
]
}
در نهایت مجموعه replica را اجرا می کنیم
> rs.initiate(config)
{ "ok" : 1 }
در mongo shell ما. اگر همه چیز خوب پیش رفت، درخواست شما باید به چیزی شبیه به این تغییر کند:
my-mongo-set:PRIMARY>
این بدان معناست که shell در حال حاضر با پایگاه داده اولیه در خوشه my-mongo-set ما مرتبط است. و شما یک mongodb به صورت replica set دارید.
ارسال دیدگاه