لاگ ها در اکسچنج سرور

یکی از مفاهیمی که بسیار می تواند مدیران شبکه سازمان را در عیب یابی اکسچنج سرور و همچنین خارج شدن از بحران در زمان های خطرناک کمک کند، Transaction لاگ می باشد. در این مقاله به بررسی لاگ ها در اکسچنج سرور 2019 می پردازیم. دراین مقاله Transaction Logs مورد بررسی قرار میگیرند. آموزش اکسچنج […]

15 دقیقه مطالعه
  • لاگ
  • دیتابیس
  • فایل
  • شما
  • Transaction
  • اکسچنج
  • کنید
  • بکاپ
لاگ ها در اکسچنج سرور

خلاصه تخصصی مقاله

یکی از مفاهیمی که بسیار می تواند مدیران شبکه سازمان را در عیب یابی اکسچنج سرور و همچنین خارج شدن از بحران در زمان های خطرناک کمک کند، Transaction لاگ می باشد. در این مقاله به بررسی لاگ ها در اکسچنج سرور 2019 می پردازیم. دراین مقاله Transaction Logs مورد بررسی قرار میگیرند. آموزش اکسچنج […]

موضوعات اصلی: لاگ، دیتابیس، فایل، شما، Transaction، اکسچنج

یکی از مفاهیمی که بسیار می تواند مدیران شبکه سازمان را در عیب یابیاکسچنج سرورو همچنین خارج شدن از بحران در زمان های خطرناک کمک کند، Transaction لاگ می باشد. در این مقاله به بررسی لاگ ها دراکسچنج سرور 2019می پردازیم. دراین مقاله Transaction Logs مورد بررسی قرار میگیرند.

Table of Contents

Toggle

آموزش اکسچنج سرور ( ویدیو مرتبط با این مقاله )

Transaction Logs چیست؟

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

اکسچنج برخلاف SQL یک همچنین سیستم دیتابیس با انعطافپذیری بالا و شخصی سازی بالا ندارد. دیتابیس های اکسچنج به گونه ای طراحی شدند که تنها اعمال محدودی را بکار برند. بنابراین مدیریت دیتابیس ها در اکسچنج سرور بسیار ساده تر می باشد. داده ها به صورت خودکار در میل باکس هایی شخصی جدا شدند و دسترسی چندین کاربر به طور هم‌زمان هم به یک میل باکس بسیار کم است و همچنین داده های ذخیره شده در دیتابیس اکسچنج سرور به سرعت و زود به زود تغییر پیدا نمی کنند. هنگامی که یک ایمیل در اکسچنج سرور ذخیره شد، دیگر تغییر نمی کند. در صورتی که آیتمی در دیتابیس اکسچنج سرور تغییر کند، به عنوان یک شی‌ء کاملاً جدید ساخته شده و نسخه قدیمی پاک می شود به جای آنکه به طور مستقیم به داده ذخیره شده دسترسی پیدا کرده و آن را تغییر دهیم. به این ترتیب اکسچنج سرور به آن اندازه SQL به Transaction لاگ ها وابسته است، وابسته نیست.

Transaction Logs

چگونه اکسچنج سرور از transaction لاگ ها استفاده می کند؟

هنگامی که یک ایمیل دریافت، ارسال، حذف و یا فوروارد می شود، اکسچنج اطلاعات این اتفاق را در مستقیماً در transaction لاگ ها می نویسد، سپس فوراً آن ها را در دیتابیس اعمال می کند. تفاوت زمانی بین نوشتن در Transaction لاگ و دیتابیس به میلی ثانیه اندازه گیری می شود.

اکسچنج سرور Transaction لاگ ها را تنها برای یک هدف ذخیره می کند و آن هم بازگردانی دیتابیس است. اگر دیتابیسی که تمامی اطلاعات میل باکس های شما را نگه داری می کند به هر دلیلی، مثلاً افتادن سنگ بر روی میل باکس سرور، از بین رفت. شما باید به آخرین بکاپ گرفته شده مراجعه کنید و آن را بازگردانی کنید. مشکل در این شرایط این است که در بسیاری از مواقع شما هنگام بازگردانی دیتابیس، دیتابیسی را بازگردانی می کنید که آخرین تراکنش ها و فعالیت ها را ندارد. به این ترتیب در صورتی که شما آخرین بکاپ کامل را در روز یکشنبه انجام داده و دیتابیس اصلی شما روز جمعه از کار افتاد شما اطلاعات بین یکشنبه تا جمعه را از دست خواهید داد. اینجاست که از Transaction لاگ ها استفاده می شود. تمام هدف Transaction لاگ ها در اکسچنج آن است که اطلاعات فعالیت های اتفاق افتاده از زمان آخرین بکاپ را برای شما فراهم کند.

عملکرد Transaction لاگ با دیتابیس در اکسچنج

از جمله اولین اقداماتی که پس از پیاده سازی اکسچنج سرور مدیران شبکه انجام می دهند تعیین مسیر دیتابیس و همچنین لاگ فایل ها است. این اقدام بسیار مهم است. در صورتی که وارد محل ذخیره سازی لاگ فایل ها شوید در میابید که تعداد این لاگ فایل ها زیاد است. به منظور جلوگیری از خرابی Transaction لاگ ها این لاگ ها تا اندازه تنظیم شده ای می توانند باشند. در صورتی که تمامی تراکنش ها در یک فایل تنها ذخیره می شد و این فایل به هر دلیلی خراب می شد، شما ایمیل های یک روز را از دست می دادید. با چندین فایل در صورتی که یکی از فایل ها خراب شود شما نهایتاً یک یا دو ساعت تراکنش را از دست خواهید داد. هر Transaction لاگ نامی دارد که با حرف E شروع و رشته ای از اعداد که به .log ختم می شوند. شما همچنین یک فایل با پسوند .chk و همچنین فایل هایی با فرمت Eres

هنگامی که شما هر دیتابیس اکسچنج را Mount می کنید اتفاق های زیر در اکسچنج سرور رخ می دهد

۱- آخرین Transaction لاگ را در دیتابیس می خواند (این در حالی است که دیتابیس به درستی shutdown شده باشد).

۲- فایل .chk را چک کرده تا تشخیص دهد که آخرین لاگ فایل که باید در دیتابیس اعمال شود چه نام دارد.

۳- ابتدا دایرکتوری Transaction لاگ فایل ها را چک کرده تا ببیند آخرین Transaction لاگ فایل اعمال شده چه نامی دارد.

۴- در صورتی که .chk فایل بگوید که آخرین Transaction لاگ عددی بزرگتر از آن که در دیتابیس ذخیره شده است دارد، اکسچنج اقدام به تکرار لاگ فایل ها در دایرکتوری کرده و تمامی تراکنش هایی که بین آخرین باری که دیتابیس تراکنش ها را ذخیره کرده و همچنین عدد .chk می‌گوید را ذخیره می کند. این قدمی است که مراحل بازگردانی را کامل می کند.

هنگامی که تمامی لاگ های فعال در دیتابیس اعمال شدند، دیتابیس شما به وضعیتی که آخرین لاگ نوشته شده است بازمی گردد. نتیجه آخر این است که دیتابیس بازگردانی شده به وضعیتی بازمی گردد که پیش از بحران بوده است. توجه داشته باشید که تنها در صورتی می توان اقدام به این کار کرد که دیتابیس در حالت Recovery Database باشد یا این که دیتابیس فعال به عنوان دیتابیسی باشد که اجازه Over-Write داشته باشد.

بنابراین اساسی ترین دلیلی که Transaction لاگ ها موجود می باشند بازگردانی دیتابیس ها است. به همین دلیل است که بهترین نوع مکان دهی به Transaction لاگ ها طبق پیشنهادمایکروسافتدر دیسکی کاملاً جدا از دیتابیس می باشد، تا در صورت بروز مشکلی برای دیتابیس بتوان از Transaction لاگ ها استفاده کنند. با توجه به این که تمامی تراکنش ها علاوه بر ذخیره در لاگ فایل ها در دیتابیس نیز ذخیره می شوند در صورت بروز مشکل برای لاگ فایل ها و یا حتی حذف آن ها شما از دست دادن داده ها و اطلاعت نخواهید داشت. البته در صورت بروز مشکل برای کل درایو یا دیسک Transaction لاگ ها شما باید با استفاده از ابزار ESEUTIL کمی بر روی دیتابیس کار کنید تا بتوانید آن را به درستی Mount کنید. لاگ ها برای Point in Time Recovery طراحی شدند.

بررسی Point in Time Recovery

بازگردانی Point in Time قابلیتی است که به شما اجازه می دهد که دیتابیس را دقیقاً به زمانی که می خواهید بازگردانی کنید. به عنوان مثال به این توجه کنید که یکی از کاربران درخواست بازگردانی میل باکسی است که دو هفته پیش در روز چهارشنبه ساعت دو حذف شده بود. برای این شرایط، فرض کنید که شما هر یک شنبه از زیرساخت بکاپ کامل تهیه کرده و هر روز یک Incremental بکاپ تهیه می کنید. در صورتی که شما بکاپی پیش از چهارشنبه را بازگردانی کنید ممکن است برخی از ایمیل ها را از دست بدهید. اما در صورتی که شما بکاپ شب چهارشنبه را نیز بازگردانی کنید، دیگر میل باکس حذف شده است. در این شرایط است که شما Point in Time Recovery انجام خواهید داد. بنابراین شما ابتدا دیتابیس آخرین بکاپ کامل پیش از زمان مورد نظر را بازگردانی کرده و پس از آن اقدام به بازگردانی incremental بکاپ های لاگ فایل ها خواهید کرد. زمانی که تمامی لاگ فایل ها به همراه دیتابیس را در محلی مناسب ذخیره کردید، یک Recovery Database ساخته که به محل دیتابیس و لاگ فایل های بازگردانی شده اشاره می کند می سازید. به فولدر لاگ فایل ها نگاه کنید، هر یک از لاگ ها یک برچسب زمانی دارند که پس از بازگردانی نیز می توانید به راحتی آن ها را مشاهده کنید. این برچسب ها به شما اجازه می دهند که دقیقه لاگ فایلی که پیش از حذف میل باکس ساخته شده است را پیدا کنید. پس از پیدا کردن لاگ فایل مورد نظر تمامی فایل های بعد از آن را حذف کنید و در نهایت دیتابیس را در اکسچنج سرور Mount کنید. دیتابیس تا آنجایی که فایل .CHK فهرست کرده است می خواند، اما تا آنجایی پیش می رود که آخرین لاگ فایل فعال وجود دارد. بنابراین در صورتی که لاگ فایل در دسترس در ساعت یک و پنجاه و نه دقیقه در روز چهارشنبه نوشته شده باشد اکنون هنگامی که دیتابیس بازخوانی می شود دقیقه در همان وضعیت خواهد بود، یعنی وضعیت آخرین لاگ فایل در دسترس. اکنون شما به دیتابیسی دسترسی دارید که به روز ترین ایمیل های میل باکس حذف شده را دارا می باشد و شما به راحتی می توانید اقدام به بازگردانی آن ها به صورت دستی کنید.

لاگ ها در اکسچنج سرور

افزایش لاگ ها در اکسچنج سرور

یکی از مشکلاتی که می تواند به راحتی بر عملکرد اکسچنج سرور های موجود در زیرساخت شبکه تأثیر منفی بگذارد افزایش بی رویه لاگ فایل ها می باشد. Transaction لاگ ها دائماً در حال نوشته شدن هستند و تنها دو روش برای حذف آن ها وجود دارد. بهترین روش برای حذف لاگ ها تهیه بکاپ کامل با تکنولوژی Exchange Aware می باشد. بنابراین در صورتی که نرم افزار بکاپی که شما استفاده می کنید برای تهیه بکاپ از دیتابیس های اکسچنج سرور طراحی نشده باشند، لاگ فایل ها حذف نخواهند شد، به این ترتیب بزرگ و بزرگ تر شده تا دیگر فضایی در درایو نخواهد ماند. در صورت کاهش فضا اکسچنج سرور دیتابیس ها را Dismount کرده و زیرساخت با مشکلات فراوانی مواجه خواهد شد. هنگامی که شما از نرم افزاری استفاده می کنید که Exchange Aware می باشد، نرم افزار به اکسچنج دستور می دهد که لاگ ها را ببرد. در سیستم قدیمی دیتابیس، بریدن لاگ ها به این معنا بود که تغییرات موجود در لاگ ها ابتدا بر روی دیتابیس اعمال شده و پس از آن لاگ فایل ها حذف می شدند، اما اکنون با توجه به این که تغییرات مستقیماً در دیتابیس ثبت می شوند بریدن تنها به معنای حذف کردن لاگ فایل ها می باشد، اما این حذف کردن به گونه ای است که اجازه می دهد دیتابیس به فعالیت خود هنگام حذف کردن لاگ فایل ها ادامه دهد.

گزینه دیگر حذف دستی لاگ فایل ها می باشد، البته در صورتی که دیتابیس مورد نظر mount باشد عمل نخواهد کرد. بنابراین حذف لاگ فایل ها به صورت دستی را باید تا آنجایی که می توانید نادیده بگیرید مگر آن که بسیار مهم و ضروری است. شرایط حساس هم مثلاً شما خیلی وقت است که بکاپ کامل از اکسچنج تهیه نکرده اید و درایو حاوی لاگ فایل ها هم در حال پر شدن می باشد مثلاً ۳۰۰ گیگ آن کاملاً پر شده است. بنابراین با توجه به این که تهیه بکاپ از این لاگ فایل ها بسیار طول می کشد و این که فرایند truncation نیز طولانی خواهد شد باید اقدام به حذف دستی لاگ فایل ها کنید. هنگامی که دیتابیس Dismount شده است شما می توانید اقدام به حذف لاگ فایل ها کنید، البته با حذف لاگ فایل ها به صورت دستی دیگر قادر به بازگردانی Point in time نخواهید بود. با توجه به تمامی این بحث ها پیشنهاد نمی شود که از حذف دستی لاگ فایل ها استفاده کنید. بهتر است که از نرم افزار های تهیه بکاپ چون Backup Exec استفاده شود. به امید خدا نحوه پیاده سازی و استفاده از آن را در پروژه های آموزشی آینده بیان خواهیم کرد.

بررسی قابلیت Circular Logging در اکسچنج سرور

قابلیت Circular Logging سبب می شود تا اکسچنج سرور تنها ۶ یا ۷ لاگ فایل را نگه داری کند. بنابراین شما دیگر نگران افزایش حجم لاگ فایل ها نباشید از طرف دیگر لازم نیست تا یک بکاپ کامل Exchange Aware تهیه کنید تا لاگ فایل ها پاک شوند. از این گزینه زمانی استفاده می شود که نرم افزار تهیه بکاپ قابلیت پشتیبانی از اکسچنج سرور را ندارد، یا این که شما مشکل کمبود فضا دارید و یا نیازی به بازگردانی Point in Time ندارید. یکی دیگر از سناریو هایی که شما ممکن است از قابلیت Circular Logging استفاده کنید زمانی است که از Database Availability Group استفاده می کنید که حداقل سه نسخه از دیتابیس ها به همراه یک Lagged Database دارید. در این شرایط شما می توانید بدون تهیه بکاپ ادامه دهید. دلیل اصلی این امر آن است که شما هنگامی که سه نسخه از دیتابیس به همراه یک Lagged Database دارید، تمامی پیش نیاز های مورد نیاز برای انجام بازگردانی Point in Time تا چهارده روز پیش را خواهید داشت.

Transaction Logs

برخی تصورات غلط درباره Transaction لاگ ها در اکسچنج

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

1- Transaction ها تنها در لاگ ها ذخیره شده و پس از آن در دیتابیس – این تصور غلط به دلیل نحوه عملکرد دیتابیس ها در گذشته ایجاد شده است. امروزه Transaction ها در مموری، دیسک و لاگ ها تقریباً در همان لحظه ذخیره می شوند. یک تأخیر بسیار کم بین ذخیره آن ها در لاگ فایل ها و همچنین دیتابیس وجود دارد که آن هم آن‌قدر کم است که عملاً به حساب نمی آید.

2- در صورتی که هر شب یک بکاپ کامل انجام دهم می توانم از قابلیت Circular logging استفاده کنم. این خیلی به واقعیت نزدیک است اما هدف اصلی Transaction لاگ ها را پای مال می کند. و هدف اصلی بازگردانی دیتابیس به نزدیک ترین زمان ممکن به آنی است که دیتابیس اصلی در حالت سالم بوده است. در صورتی که شما هر شب بکاپ تهیه می کنید باید اطمینان حاصل کنید که لاگ فایل های بین این زمان بکاپ و آن زمان بکاپ را نگه داری می کنید. در غیر این صورت در هنگام بازگردانی دیتابیس شما تا ۲۴ ساعت ایمیل از دست خواهید داد. در صورتی که این از دست دادن ایمیل ها مشکلی برای سازمان شما بوجود نمی آورد می توانید به راحتی هر روز از دیتابیس های اکسچنج سرور بکاپ کامل تهیه کرده و از قابلیت Circular Logging نیز استفاده کنید. اما در صورتی که هر ایمیل برای شما مهم است این قابلیت را خاموش کنید.

3- پاک کردن لاگ ها به صورت دستی دیتابیس را خراب می کند. نه این طور نیست. همانطور که در بالا بیان کردیم پاک کردن دستی لاگ فایل ها در برخی از موارد لازم هم می شود و در هر زمان می توان انجام داد. خطر پاک کردن دستی لاگ ها از دست دادن داده ها است. شما به هیچ وجه نمی خواهید که لاگی که هنوز از آن بکاپ تهیه نشده است را پاک کنید. در صورتی که شما تمامی لاگ ها را به صورت دستی پاک کرده و دیتابیس هم از بین برود شما دیگر قادر به بازگردانی ایمیل های موجود در لاگ ها نخواهید بود. پس از بکاپ با توجه به این که دیگر به این لاگ ها نیازی نیست و از آن ها بکاپ تهیه شده است، لاگ ها به طور کامل پاک می شوند.

برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.