سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

۸ مطلب در مرداد ۱۳۹۲ ثبت شده است

روند فعالیت Stuxnet:

روند کامل فعالیت stuxnet به صورت کامل شناخته شده نیست، اما با اطلاعات موجود می‌توان روند زیر را برای آن ذکر کرد:

  •     آلوده کردن سیستم‌های ویندوزی با استفاده از چندین zero-day exploit، اعتبارات جعل شده یا دزدیده شده از نرم افزار های دیگر سیستم در نهایت نصب روتکیت بر روی سیستم‌های مشابه ویندوزی.
  •     تلاش برای دور زدن سیستم تشخیص نفوذ مبتنی بر HIDS بوسیله یک روش خاص در بارگذاری کتابخانه های مورد نیاز. در این روش بارگذاری کتابخانه‌ها (DLL) توسط خود بد افزار انجام نمی‌شود و یک تکه کد بر روی نرمافزارهای موجود در سیستم تزریق می‌شود و بارگذاری توسط این نرمافزارها انجام می‌شود.
  •     برای توسعه به سیستم‌های متصل به سیستم آلوده، ابتدا مطمعن می‌شود که 1 سیستم مقصد ویندوز باشد، 2 سیستم قبلا آلوده شده است یا خیر 3 روی سیستم آنتی ویروس نصب شده است یا خیر.
  •     گسترش از طریق آلوده کردن شبکه یا دستگاه های ذخیره سازی انجام می‌شود.
  •     جستجوی سیستم‌های صنعتی (Simens Wincc).
  •     اگر سیستم صنعتی مورد نظر یافت شد، از اکانت اعتبارسنجی SQL توکار این سیستم‌ها برای قرار دادن کد درون پایگاه داده آن و آلوده کردن آن برای دسترسی به PLC مقصد استفاده می‌کند.
  •     تزریق کد درون PLC. این کار از طریق پروتکل profibus انجام می‌شود. این تزریق کد خروجی PLC را تغییر می‌دهد.
  •     از طریق برسی (monitor) کردن ترافیک PLC، فعالیت سیستم کلی را برسی می‌کند.
  •     اگر یک فرکانس خاص در ترافیک یافت شد، تنظیمات فرکانس را از 1410 به 2hz کاهش می‌دهد.
  •     وجود مکانیزم حذف کردن خود از سیستم‌هایی که هماهنگی سازم را ندارند، خوابیدن (غیر فعال شدن موقت)، پاک کردن سیستم آلوده به صورت خودکار.

با توجه به اینکه این بد افزار بسیار پیچیده است، اینکه چگونه یافت شد، تنها یک جواب دارد: به دلیل گسترده شدن زیاد این بد افزار. اگر این سیستم با تکنیک خاص‌تری پخش می‌شد، شاید تا مدت‌ها بدون کشف باقی می‌ماند.
۰ موافقین ۰ مخالفین ۱ ۱۱ مرداد ۹۲ ، ۱۲:۱۰
حامد شیخلو

Stuxnet چیست؟

بد افزار Stuxnet یک روتکیت مخصوص سیستم‌های صنعتی است. مجموعه‌ای از نرم‌افزارهاست که کنترل یک سیستم رایانه‌ای را به دست می‌گیرد. در این نوع حمله، کاربر سیستم متوجه حضور روت‌کیت نخواهد شد و هکر رایانه توانایی تغییر تمامی تنظیمات رایانه را دارد. رایانه‌ای که تحت سلطه روت‌کیت و نهایتاً هکر قرار می‌گیرد را زامبی (Zombie) می‌نامند. اگر ضایعه‌ای در شبکه رایانه‌ها پیدا شود، با پیگیری آن به زامبی می‌رسیم و هکر نمی‌تواند ردیابی شود.

stuxnet به عنوان یک اسلحه جدید در جنگ سایبری مطرح شد. اولین مشاهده این بد افزار در سال 2010 صورت گرفت. تمام مجموعه دانش‌ها و یافته‌ها با وجود آمدن این حمله بسیار پیشرفته، کنار گذاشته شد. در مقایسه با حملات دیگر، این بد افزار یک سلاح هسته ای به شمار می‌رود.

هرچند stuxnet برای اولین بار در ژوئن 2009 مشاهده شد، تا تابستان 2010 که سازمان ICS-CERT درباره آن هشدار دهد، در مقابل آن مقابله جدید انجام نشده بود. این ویروس از چهار نوع حمله zero-day برای آلوده کردن و پخش شدن استفاده می‌کند. این ویروس ابتدا به دنبال برنامه های simatic WINCC و PCS7 که توسط شرکت simens توسعه پیدا کرده‌اند می‌گردد، سپس از مجوز اکانت پیش فرض sql برای سرایت کردن به plc های مرتبط با آن، به روش تزریق کد استفاده می‌کند. این تزریق کد از طریق پروتکل fieldbus شرکت simens انجام می‌گیرد. در مرحله بعد، stuxnet به دنبال ابزارهای اتوماسیون که وظیفه کنترل سرعت موتورها را دارند می‌گردد. اگر کنترلی پیدا شد که در محدوده 800-1200hz باشد، تلاش می‌کند تا خرابکاری انجام دهد.

هرچند در ابتدا، اطلاعاتی که از این بد افزار بسیار کم بود، اما شرکت simens سریعاً عمل کرد و یک برنامه برای یافتن و پاک کردن این بد افزار عرضه کرد.

stuxnet در اواخر سال 2010 توجه رسانه‌ها را به خود جلب کرد. در رسانه‌ها این بد افزار به عنوان یک عامل با گسترش سریع و بسیار پیچیده مطرح شد. این مسئله توجه بسیاری به یک مسئله خاص معطوف کرد: «صنایع باید با سرعت زیاد نسبت به افزایش سطح امنیت خود عمل کنند».

کالبد شکافی stuxnet

این بدافزار بسیار پیچیده است، در شکل زیر میتوان ساختار آن را مشاهده کرد. 

Stuxnet

این بد افزار اولین روتکیت شناخته شده برای دستگاه‌های کنترل صنعتی می‌باشد. این روتکیت می‌توانست خود را به صورت خودکار بروز رسانی کند. توانایی تزریق کد در منطق بار کننده یک plc را دارا بود و بعد از این مرحله فعالیت یک plc به خوبی ادامه پیدا می‌کرد، و این بد افزار خود را کاملاً مخفی میکند، فقط در مواقع خاصی داده های اشتباه به HMI ارسال می‌شد.

این بد افزار برای محیط‌های مختلف، خود را هماهنگ می‌کرد، از مجموعه مجوزهای توکار سیستم‌ها استفاده می‌کرد و در مواقعی از کلیدهای دسترسی ابزارهای دیگر که جعل میکند، برای نفوذ استفاده می‌کرد.

در مطلب بعدی به روند کارهایی که این بد افزار انجام می‌داد، پرداخته خواهد شد.
۰ موافقین ۱ مخالفین ۱ ۱۱ مرداد ۹۲ ، ۱۰:۴۱
حامد شیخلو

این برنامه(ntop) یکی از بهترین نرم افزار های مونیتورینگ شبکه است که توسط دکتر لوکا دری(luca deri) توسعه پیدا کرده است. این برنامه نه تنها بین برنامه های متن باز، بلکه در بین برنامه های تجاری نیز یکی از قدرتمند ترین برنامه های مونیتورینگ است. در نصب این برنامه خطاهایی که گزارش میشود زیاد کمکی به روند نصب نمیکند، به همین دلیل با مشکلاتی همراه است. در مقاله زیر میتوان با روند نصب این برنامه آشنا شد.

لینک دریافت مقاله


۰ موافقین ۰ مخالفین ۱ ۰۹ مرداد ۹۲ ، ۲۳:۳۴
حامد شیخلو
«پیچیده (Complexy)» به معنی مطلبی است که فهمیدن آن دشوار است. دلیل این پیچیدگی، نبود یک روند سیستماتیک برای فهم آن است. با تعریف بیان شده باید در نظر داشت که پیچیدگی یک مفهوم ذهنی و نسبی است. بنابراین می‌توان نتیجه گرفت که یک سیستم نسبت به سیستم دیگر پیچیده تر است. برای فهم یک سیستم با توجه به پیچیدگی آن، از یک پزشکی استفاده می‌شود: «استفاده از مجموعه نشانه‌ها، برای تشخیص یک نتیجه پیچیده». در طراحی سیستم نیز باید از عوامل موجود برای تحلیل یک سیستم کلی استفاده کرد.

عوامل پیچیدگی را می‌توان موارد زیر عنوان کرد:

تعداد زیاد مؤلفه های موجود: تعداد مطلق مؤلفه های موجود یک طراحی، مشخص کننده پیچیده بودن یا نبودن یک سیستم کلی است.

تعداد زیاد روابط بین مؤلفه ها: یک سیستم ممکن است تعداد مؤلفه های یک سیستم نسبت به سیستم دیگر زیاد نباشد، اما به علت زیاد بودن روابط بین آن‌ها، تحلیل و فهم آن مشکل‌تر باشد.

عدم قاعده‌مندی زیاد: یک سیستم با تعداد مؤلفه های زیاد و روابط گسترده، باز هم می‌تواند دارای پیچیدگی کمی باشد. اگر یک سیستم دارای مؤلفه های تکرار شده باشد که بر طبق قواعد تعریف نظاممند و ساده با همدیگر ارتباط داشته باشد، می‌توان از آن به عنوان یک سیستم با پیچیدگی مناسب استفاده کرد. نبود قاعده‌مندی با تعداد استثناعات موجود در سیستم یا با تعداد روابط بین غیر تکرار شده، باعث بیشتر شدن پیچیدگی در سیستم می‌شود.

توصیف طولانی: توصیف سیستماتیک توصیف کننده تمامی جنبه های یک سیستم است. یک توصیف از سیستم را در نظر بگیریم که بسیار گسترده و طولانی است. نظریه تئوری موجود برای این مبحث، پیچیدگی کولموگروف است. خود اینکه یک توصیف تا چه اندازه باید گسترده باشد و مفاهیم مؤلفه را تا چه حد از جزئیات باید بیان کد، یک توازن نسبی است. توصیف ریاضی برای بسیاری از مؤلفه های یک سیستم باعث پیچیده تر شدن فهم آن می‌شود، اما در سوی دیگر، توصیف ریاضی برای مؤلفه ها، می‌تواند اثباتی بر درستی کارکرد وظیفه ای آن‌ها باشد.

یک تیم از طراحان، پیاده سازها یا نگهداری کنندگان (maintainers): چندین نفر ممکن است برای فهم، ساخت یا نگه داری یک سیستم مورد نیاز باشند. یک سؤال اصلی در طراحی سیستم این است که آیا یک سیستم به اندازه کافی ساده است که توسط یک نفر شناخته و تحلیل شود؟ اگر به تعداد نفرات بیشتر از یکی نیاز باشد، آنگاه یک سیستم پیچیده است. اگر سیستم به چند نفر برای فهم، ساخت یا نگه داری نیاز داشته باشد، آنگاه علاوه بر کارهای تکنیکی مورد نیاز، به هماهنگ.سازی و ارتباطات بین اعضای تیم نیاز داریم که باعث پیچیدگی بیشتر آن خواهد شد.

یک مثال: تفاوت پیچیدگی یک کتابخانه کوچک شهری با کتابخانه یک دانشگاه بزرگ در چه حد است؟

مورد یک، تفاوت در اندازه، کتابخانه دانشگاه دارای کتاب‌های زیادتری می‌باشد.

مورد دوم، تعداد ارتباطات بیشتر: کتابخانه دانشگاه کتاب‌های بیشتر و همچنین اعضای بیشتری دارد، در نتیجه ارتباطات بین افراد و کتاب‌ها بیشتر خواهد شد.

مورد سود، تعداد استثنائات بیشتر: کتابخانه کوچک شهری، دارای تعداد موضوعات محدودی به را کتاب‌ها است، شاید 5 یا 6 مورد کلی، اما در کتابخانه دانشگاه، مباحث بسیار تخصصی خود نیازمند یک مجموعه بندی از کتاب‌ها باشند.

مورد چهارم، توصیف طولانی: هر کسی در یک کتابخانه بزرگ می‌داند که خود اینکه بتوانیم اطلاعات مورد نیاز خود را از بین اطلاعات گسترده پیدا کنیم نیازمند یک اطلاعات اضافی دیگری می‌باشد. بنابراین نیاز به اطلاعات بیشتری می‌باشد که توصیف کامل‌تری از کتاب را ارائه دهد.

مورد پنجم، نیاز به یک تیم: یک کتابخانه کوچک را می‌تواند یک نفر اداره کند، اما یک کتابخانه دانشگاهی بزرگ نیازمند تیمی از افراد برای اداره است.

یک مسئله مهم در تحلیل مسائل برای یافت پیچیدگی آن‌ها وجود دارد: «پیچیدگی یک سیستم، هر اندازه جزئیات بیشتری را دخالت دهیم، بیشتر خواهد شد» ممکن است یک سیستم (همان سیستم کتابخانه کوچک شهری «آنقدر جزئیات زیاد برای آن مطرح شود که خود یک سیستم پیچیده شود. چه میزان از جزئیات باید در طراحی سیستم در نظر گرفته شود؟»).

میزان در نظر گرفتن جزئیات با تکنیکی به نام تجرید (abstraction) محدود می‌شود «».

در مطلب بعدی به شناخت منابع پیچیدگی خواهیم پرداخت.
۰ موافقین ۰ مخالفین ۰ ۰۸ مرداد ۹۲ ، ۱۷:۵۷
حامد شیخلو
در مطلب قبلی یک تعریف کلی از سیستم ارائه کردیم که عبارت بود از:مجموعه ای پیچیده از اجزای جدا از همدیگر که در مسیر هدفی مشترک یا یک سرویس مشترک با یکدیگر ارتباط دارند. این تعریفی است که در وبستر برای سیستم مطرح شده است. در مهندسی یک تعریف نزدیک‌تر به دنیای واقعی نیاز دارند. بنابراین تعریف فوق به تعریف زیر تغییر میابد:

یک سیستم مجموعه ای است از مؤلفه های (components) متصل به همدیگر که یک رفتار مورد انتظار از طریق رابط‌ها با محیط (environment) دارند.

همیشه تعامل‌ها بین یک سیستم و محیط اطراف آن وجود دارد، که این تعاملات رابط بین سیستم و محیط است. برای مثال رابط در یک فضای بین سیاره‌ها، نیروی جاذبه القایی آن‌ها بین همدیگر و تاثیرات مغناطیسی آن‌ها به همدیگر است. رابط‌های پیش فرض در یک سیستم کامپیوتر شخصی، همان صفحه کلید، صفحه نمایش و امثالهم است. اینکه بتوان رفتار یک سیستم را پیش بینی کرد، وابسته است به شناخت اجزای تشکیل دهنده آن، روابط آن‌ها و رفتار هر کدام از تک اجزا. یافتن اجزا (اجزای تشکیل دهنده سیستم را تشخیص دهیم) نیازمند یک دیدگاه خاص است که به دو سؤال اصلی پاسخ دهد: هدف و ریز دانگی (granularity). نتیجه حاصل از هر کدام از این موارد در تعداد و نوع مؤلفه های تشکیل شده و در نتیجه در طراحی کل سیستم تأثیرگذار خواهد بود.

برای مثال در طراحی یک هواپیما در نظر بگیریم، اگر هواپیما را یک سیستم پرنده در نظر بگیریم، اجزای مهم عبارت است از: سیستم بدنه، بال‌ها، سیستم کنترل و این قبیل موارد و محیط هم عبارت است از اتمسفر، وضعیت هوا و این قبیل موارد، رابط در این سیستم جاذبه و کشش هوایی است. در همین هواپیما اگر داخل آن را در نظر بگیریم، اجزا مهم عبارت است از صندلی‌ها، سیستم تهویه، راهرو ارتباطی و غیره، محیط هم مسافران است، رابط در این محیط راحتی صندلی، غذا و جریان هوایی مربوط به داخل سالن است.

مثالی که ذکر شد، چه تأثیری در طراحی سیستم دارد؟ در همان سیستم هواپیما، یک مهندس طراحی خارجی از فضای درون به عنوان یک فضایی که ارتباط آن با طراحی تنها در حد میزان متر مکعب فضای مورد نیاز و حداکثر وزن است. برای یک مهندس طراح داخلی هواپیما، سیستم رانش، موتور، و بال‌ها و غیره، تنها ارتباطی در حد میزان صدای تولیدی و محل قرارگیری اجزای مختلف دارد (اینکه صندلی مسافران نزدیک بال‌ها چگونه قرار گیرد یا اینکه با موتورها چقدر فاصله داشته باشند).

ریز دانگی در طراحی اجزای یک سیستم، ممکن است باعث شود که یک مؤلفه، در یک طراحی دیگر به عنوان یک سیستم کامل در نظر گرفته شود. برای مثال در سیستم هواپیما، خود موتور که برای بسیاری از مهندسان طراح قسمت‌های دیگر هواپیما، یک مؤلفه کلی بیان می‌شود و تنها با مشخصات آن شناخته می‌شود، خود یک سیستم کامل و پیچیده است که شامل مؤلفه های (و زیر سیستم‌های) زیادی درون خود است.

به یک سیستم که در یک مورد خاص، به عنوان مؤلفه ای از سیستم دیگر استفاده می‌شود، زیر سیستم گفته می‌شود.

در مطلب بعدی به بحث پیچیدگی خواهیم پرداخت.
۰ موافقین ۰ مخالفین ۰ ۰۸ مرداد ۹۲ ، ۱۴:۵۰
حامد شیخلو
مسائل و مشکلاتی که در یک طراحی سیستم ممکن است بوجود آید را می‌توان در چهار فیلد اصلی تقسیم بندی کرد:

  •     ویژگی‌های اورژانسی (emergent properties).
  •     پخش شدن تأثیر‌ها (propagation of effects).
  •     گسترش غیر متناسب (incommensurate scaling).
  •     توازن (trade-offs).

در ادامه به برسی هر کدام در طراحی سیستم و مثال‌هایی از آن‌ها خواهیم پرداخت.
قبل از ادامه مطلب بهتر است تعریف خودمون رو از سیستم به یک تعریف واحد تبدیل کنیم: سیستم مجموعه ای است از اجرایی که یک رفتار مورد انتظار را از خود نشان داده و با محیط اطراف خود از طریق رابط‌ها ارتباط دارد.
در تعریف بالا مواردی همچون محیط، رابط و رفتار مورد انتظار نیاز به تعریف دقیق‌تر دارد که در مطالب‌های بعدی به آن‌ها خواهیم پرداخت.

  • ویژگی های اورژانسی
این ویژگی‌ها شامل ویژگی‌هایی می‌باشند که در تحلیل اولیه اجزای سیستم به صورت تک به تک خودشان را نشان نداده‌اند و بعداً هنگامی که در صدد اتصال اجرا به همدیگر هستیم، خودشان را نشان می‌دهند. می‌توان این اجزا را به عنوان سورپرایز در نظر گرفت. این ویژگی‌ها معمولاً در سیستم‌ها در نظر گرفته نمی‌شوند، هرچند روش‌هایی در طراحی برای پیش‌بینی این موارد وجود دارد. «بعضی موارد تنها زمانی خود را نشان می‌دهند که یک سیستم ساخته شد».
یک مثال جالب: مهندسان پل هزاره که بر روی رودخانه توماس در انگلیس تنها چند روز بعد از افتتاح پل، آن را بستند تا تغییراتی بر روی آن انجام دهند. دلیلی آن یک موضوع جالب بود، مردمی که از روی پل عبور می‌کردند، قدم‌های خود را با نوسانات پل تنظیم می‌کردند، در نتیجه نوسانات بیشتر می‌شد و ممکن بود آسیب جدی به ساختار آن وارد کند.
یک مثال دیگر: وجود چندین تولید کننده برق و اتصال آنها به همدیگر، باعث پخش شدن بار بر روی تولید کنندگان مختلف است. مشکل زمانی به وجود میابد که یکی از تولید کنندگان از مدار خارج شود که ممکن است به دلیل اضافه بار بر روی تولید کنندگان دیگر، تمامی شبکه دچار مشکل شود.
به قول استاد خوبم، جبان آقای دکتر محمدی:"تجزیه شون خوبه، اما مرده شور ترکیب شون رو ببره"
  • پخش شدن تاثیرات
در همان مثال مربوط به شبکه برق، یک سقوط درخت در یک منطقه و قطع شدن سیم‌های برق، ممکن است چندین کیلومتر دورتر باعث قطعی برق هزاران نفر شود. یک مسئله که در ابتدا کوچک به نظر می‌رسد و تأثیرات آن محلی تصور می‌شود، می‌تواند باعث تأثیر بر روی اجزای بسیار دورتر سیستم شود. یک نیازمندی اصلی در طراحی سیستم، محدود کردن تاثیرات خطا در سیستم است.
یک مثال دیگر که شاید برای درک تاثیر تغییرات خوب باشد، در طراحی خودرو است. فرض کنید یک مهندس طراح خودرو برای افزایش سرعت، قطر چرخ ها را از 13 به 15 افزایش دهد، در این افزایش، تاثیراتی که باید در سیستم فرمان گیری، ترمز و حتی ظاهر خودرو به وجود میاید را باید در نظر داشت.
  • گسترش غیر متناسب
زمانی که یک سیستم برای هدف خاصی در ابعاد گسترش پیدا می‌کند، تمامی اجزا از این قوانین افزایش بعد پیروی نمی‌کنند. برای مثال، در ساخت ساختمان‌هایی با طبقات زیاد، تعداد طبقات، وابسته است به میزان ظرفیت دسترسی به طبقات بالایی از طریق طبقات پایین‌تر. برای مثال میزان فضای لازم برای آسانسورها که در طبقات پایین‌تر مورد نیاز است.
این مسئله در طراحی سیستم معمولاً خود را نشان می‌دهد و اندازه و سرعت قابل مدیریت برای سیستم واحد را محدود می‌کند.
  • توازن

بسیاری از محدودیت‌ها خود را به صورت یک توازن بین اجزا یا عوامل موثر نشان می‌دهند. یک مدل عام از این توازن عبارت است از اینکه یک عامل خوب در فضای مسئله است و چالش‌های مسئله عبارت است از حداکثر سازی این عوامل خوب و در مرحله دوم جلوگیری از هدر رفتن آن‌ها و در مرحله سوم، تخصیص این عوامل به محل‌هایی که بیشترین سود را داشته باشد. این مفهوم تا حدی در این تعریف مشکل است. این مفهوم را معمولاً با عنوان «اثر تخت خواب آبی (waterbed effect)» مطرح می‌شود. اگر یک مسئله را در محلی فشار دهیم، ممکن است در محل دیگر یک مسئله دیگر به وجود آید یا خود را نشان دهد.
مثال بارز این مسئله در طراحی مدارات سخت افزار و توازن برقرار کردن بین سرعت پردازش، انرژی مصرفی و حرارت تولیدی است.

سؤال مهم این است که با وجود این مسائل و مشکلات، چگونه یک سیستم کامپیوتری را طراحی کنیم. در بهترین حالت، می‌خواهیم یک روش کامل طراحی داشته باشیم که بتوان در آن به صورت کامل همه اجزا را تحلیل کرد و نتیجه نهایی را به بهترین شکل بر اساس تجربیات گذشته بدست آورد. اما متأسفانه در بحث تحلیل و طراحی سیستم کامپیوتری نسبت به علوم مهندسی دیگر بسیار جوان تر هستیم.
۰ موافقین ۰ مخالفین ۰ ۰۴ مرداد ۹۲ ، ۲۰:۳۱
حامد شیخلو

مساله:

زمانی که میخواهید یک کاربر راه دور، مثلا یک کاربر برای همتاسازی(replication) تعریف کنید، امکان دارد خطای زیر را مشاهده کنید:

ERROR 1146 (42S02): Table ‘mysql.procs_priv’ doesn’t exist

دلیل بروز خطا:

در هنگام بروزرسانی یک mysql، باید جداول سیستمی مورد نیاز آن نیز بروزرسانی شود و اطمینان از بروز بودن آنها باشد. در غیر این صورت، خطای بالا در بعضی فرایند ها رخ خواهد داد.

راه حل:

برای حل این مشکل، کد زیر را در لینوکس وارد کنید (قابلیت root مورد نیاز است):

mysql_fix_privilege_tables –password=root_password

root_password کلمه عبور اصلی پایگاه داده است.

توجه

حتما از پایگاه داده خود پشتیبان تهیه کنید.

۰ موافقین ۰ مخالفین ۰ ۰۴ مرداد ۹۲ ، ۱۶:۴۶
حامد شیخلو

در این آموزش قصد راه اندازی همتاسازی (replication) را بین دو سیستم mysql را داریم.

به بیان ساده، همتاسازی عبارت است از تکرار محتوا و فعالیت های یک پایگاه داده در سیستم های دیگر. این قابلیت در سیستم های grid و همچنین سیستم های با قابلیت HA کاربرد دارد.

ابتدا معماری شبکه که قصد راه اندازی این سرویس را داریم را باید مشخص کنیم. ما در اینجا دو سیستم که سیستم عامل centos نسخه 6 بر روی آنها نصب شده است استفاده میکنیم. این سیستم ها میتواند به صورت مجازی نیز نصب شده باشد. تنظیمات سیستم ها به صورتزیر میباشد

سیستم اصلی(master):

ip: 192.168.100.1

سیستم جایگزین(Slave):

ip: 192.168.100.2


  • مرحله اول: تنظیم سیستم اصلی

در این مرحله سرویس mysql را نصب کرده و قابلیت همتاسازی را در آن فعال میکنیم.

نصب سرویس mysql بر روی سیستم اصلی

نصب سرویس mysql به سادگی میتواند توسط دستور YUM انجام شود.

# yum install mysql-server mysql

تنظیمات MySQL در سیستم اصلی

فایل my.cfg را با یک ویرایشگر باز کنید:

# nano /etc/my.cnf

خطوط زیر را در زیر قسمت [mysqld] اضافه کنید (نام پایگاه داده مورد نظر خود را به جای database قرار دهید):

server-id = 1
binlog-do-db=database
log-bin = mysql-bin

سرویس mysql را ریستارت کنید

# /etc/init.d/mysqld restart

برای اینکه دو پایگاه در شروع یکی باشند، از پایگاه داده اصای خود یک دامپ تهیه کنید:

ابتدا به پایگاه داده خود وارد شوید:

# mysql -u root -p
mysqldump -u root -p --all-databases --master-data > /root/dbdump.db

این فایل را با حافظه فلش یا با دستور زیر به سیستم مقصد منتقل کنید:

scp /root/dbdump.db sanay_specu@192.168.100.2:/root/

به سرویس mysql خود وارد شده و تنظیمات زیر را انجام دهید:

فعال سازی قابلیت همتاسازی برای کاربر سیستم ثانیه(این کاربر، یک کاربر تنها مختص mysql بوده و نمیتواند با آن بر روی سیستم کار کرد)

مقدار slavepass را با نام کاربری مورد نظر جایگزین کنید.

مقدار slave_user را با نام کاربری مورد نظر جایگزین کنید.
مقدار 192.168.100.2 را با IP سیستم ثانویه جایگزین کنید.
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'192.168.100.2' IDENTIFIED BY 'slavepass';
FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

خروجی این مرحله به صورت زیر خواهد بود:

SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      320 |              |                  | 
+------------------+----------+--------------+------------------+

در این قسمت باید مقدار مشخصه File و Position را یادداشت کنیم(این مقادیر در سیستم ثانویه استفاده خواهد شد).

دستور زیر را در انتها وارد کنید و از سرویس mysql خارج شوید:

UNLOCK TABLES;
  • تنظیمات MySQL در سیستم ثانویه


فایل my.cfg را باز کنید:

# nano /etc/my.cnf

پایگاه داده ای را که در سیستم اصلی دامپ گرفته بودید را در سیستم ثانیه وارد کنید:

# mysql -u root -p < /root/dbdump.db

خط زیر را در زیر قسمت [mysqld] اضافه کنید

server-id=2

سرویس mysql را ریستارت کنید:

# /etc/init.d/mysqld restart

در نسخه های بعد از 5 سرویس mysql، تنظیمات فایل my.cfg برای تنظیمات همتاسازی در نظر گرفته نمیشود و باید با دستور GHANGE MASTER TO این عمل انجام شود.

در سرویس mysql وارد شوید و دستورات زیر را وارد کنید:

مقادیر مشخص شده را با مقادیری که در سیستم اصلی یادداشت کرده بودید جایگزین کنید:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.100.1',
MASTER_USER='slave_user',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=320;

همتاسازی را فعال کنید:

START SLAVE;
  • تست کارکرد

دستور زیر را در mysql وارد کنید:

SHOW SLAVE STATUS\G;

خروجی باید مشابه زیر باشد:

*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.100.1
                Master_User: slave_user
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000003
        Read_Master_Log_Pos: 320
             Relay_Log_File: mysqld-relay-bin.000003
              Relay_Log_Pos: 235
      Relay_Master_Log_File: mysql-bin.000003
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB: 
        Replicate_Ignore_DB: 
         Replicate_Do_Table: 
     Replicate_Ignore_Table: 
    Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
                 Last_Errno: 0
                 Last_Error: 
               Skip_Counter: 0
        Exec_Master_Log_Pos: 314
            Relay_Log_Space: 235
            Until_Condition: None
             Until_Log_File: 
              Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File: 
         Master_SSL_CA_Path: 
            Master_SSL_Cert: 
          Master_SSL_Cipher: 
             Master_SSL_Key: 
      Seconds_Behind_Master: 0

برای تست کارکرد، یک مقدار جدید به یکی از جداول پایگاه داده خود در سیستم اصلی  اضافه کنید و در سیستم ثانویه میتوانید مقدار اضافه شده را مشاهده کنید.


  • توجه

پورت 3306 را در هر دو سیستم باید باز کنید(دستورات زیر را وارد کنید):

iptables -I INPUT -p udp -m state --state NEW --dport 3306 -j ACCEPT 
iptables -I INPUT -p tcp -m state --state NEW --dport 3306 -j ACCEPT 

در هنگام تغییر فایل کانفیگ my.cfg به محل قرار دادن کدهای جدید دقت کنید. معمولا قسمت اول شامل تگ [mysqld] است. اگر در محل نامناسب قرار گیرد، سرویس mysql خطایی نخواهد داد، اما همتاسازی کار نخواهد کرد.

۰ موافقین ۱ مخالفین ۰ ۰۴ مرداد ۹۲ ، ۱۶:۳۴
حامد شیخلو