zartosht
November 21st, 2014, 17:29
درود بر همگی
MySQL server دارای چندین لاگ میباشد که با استفاده از آنها مشخص میشود چه فعالیتهایی در حال وقوع است؛ لاگهای دیتابیس ابزارهای مفیدی برای آنالیزنمودن کارائی و یا مشکلات احتمالی دیتابیس میباشند و در واقعیت در بسیاری مواقع با بررسی لاگ فایلها میتوان راهحلهای مناسب جهت رفع مشکلات ارائه نمود.
http://blog.iranserver.com/wp-content/uploads/2014/11/mysql_storage_engine.gif
در جدول زیر لیست لاگهای MySQL و اطلاعاتی که با فعال شدن هر لاگ در آن ذخیره میشود نمایش داده شده است:
نوع لاگ
اطلاعاتی که در لاگ ذخیره می شود
Error Log
مواجه شدن با مشکلات در زمان start یا دراجرا بودن یا stop شدن mysql
General query Log
برقرارشدن صحیح اتصالات و دستوارت کلاینت ها
Binary Log
رویدادهایی که تغییرات دیتابیس را تشریح می کند مانند عملیات ایجاد جدول یا تغییرات روی داده های جداول (همچنین برای replication استفاده می شود)
Relay Log
تغییرات داده که از replication master server دریافت می شود
Slow query Log
اطلاعات query هایی که زمان اجرایی بیش از یک مدت زمان تعیین شده دارند
DDL Log (metadata Log)
سوابق عملیات metadata تولید شده توسط دستورات تعریف داده مانندDROP و Alter و create. ، این اطلاعات در فایل ddl_log.log بصورت باینری ذخیره می شوند
در ادامه به تشریح سه نوع لاگ پرکاربرد MySQL و نحوه فعال سازی و دسترسی به آنها میپردازیم.
۱- Error log:
در Error Log مشکلاتی که در زمان start شدن یا متوقف شدن سرویس MySQL اتفاق میافتد و همچنین خطاهای بحرانی که در زمان اجرای این سرویس رخ میدهد ثبت میشود، درصورتیکه MySQL متوجه شود که جدولی نیاز به automatically checked (بررسی خودکار) یا repair (تعمیر) دارد این پیام در Error log ثبت میگردد.
مسیر ذخیره سازی فایل Error log:
مسیر ذخیره سازی لاگهای Mysql در فایل my.cnf قابل تعریف و تغییر میباشد، بطور پیش فرض در سیستم عامل های مبتنی بر red hat محل ذخیره شدن error log در /var/lib/mysql/ است.
نحوه دسترسی به فایل Error log:
جهت مشاهده و بررسی خطاهای ثبت شده در Error Log میتوانید از دستور زیر استفاده کنید:
tail -f /var/lib/mysql/server.hostname.com.err
server.hostname.com.err متناسب با نام سرور متفاوت میباشد و /var/lib/mysql/ مسیر ذخیره شدن فایل error log میباشد که در صورتیکه محل ذخیره سازی متفاوت باشد این مسیر نیز باید تغییر کند.
۲- General query log:
فعالیتهایی مانند هر اتصال connectionای که به دیتابیس متصل میشود و کلیه queryهایی که از سمت کلاینتها به دیتابیس فرستاده میشود در General query log ثبت میگردد. General query log برای اهداف عیب یابی، شناسائی باگ های برنامه، صحت عملکرد دستورات نوشته شده مفید میباشند. بهعنوان مثال زمانی که تصور میکنید خطا از سمت کلاینت است و میخواهید چک کنید دقیقا چه دستوری از سمت کلاینت به سرویس MySQL ارسال شدهاست.
نحوه فعالسازی General query log:
چنانچه تمایل به فعال نمودن General query log دارید، در فایل my.cnf دستورات زیر را اضافه نمائید.
[mysqld]
general_log_file = /var/log/mysql/mysql.log
general_log = 1
log-output = file
log_output
log_output مشخص کننده روش نوشته شدن لاگ فایلها است که در file یا در Table ذخیره شود.
مقدار فیلد general_log_file نام و مسیر ذخیره شدن فایل لاگ است.
مقدار یک در فیلد general_log مشخص کننده فعال و ۰ غیرفعال بودن General query log است.
پس از اضافه نمودن این تغییرات سرویس MySQL جهت اعمال تغییرات باید restart شود.
نحوه دسترسی به فایل General query log:
به کمک دستور زیر میتوانید به General query log دسترسی داشته باشید.
tail -f /var/log/mysql/mysql.log
۳- Slow query log:
در Slow query log اطلاعات مربوط به query (جستجو)هایی که زمان اجرای آنها بیشتر از زمان تعیین شده در long_query_time طول میکشد ثبت میگردد. جستجوهای کند MySQL منجر به کند شدن سرور میگردد.
Slow query log بهصورت پیش فرض غیرفعال است، با فعال نمودن آن، جستجوهایی که زمان زیادی جهت اجرا شدن آنها صرف میشود را شناسائی و راهکاری جهت بهینه نمودن جستجویا حذف آن جهت بهینه شدن کارائی سرویس MySQL بیابید.
نحوه فعالسازی Slow query log:
چنانچه تمایل به فعال نمودن Slow query log دارید، در فایل my.cnf دستورات زیر را اضافه نمائید.
[mysqld]
long_query_time=1
slow_query_log=1
slow_query_log_file= /var/log/mysql/log-slow-queries.log
long_query_time حداقل زمانی که دستور اجرا شده احتیاج دارد (برحسب ثانیه).
مقدار یک در فیلد slow_query_log نشانه فعال و ۰ غیرفعال بودن Slow query log است.
مقدار slow_query_log_file نام و مسیر ذخیره شدن فایل لاگ میباشد.
پس از اضافه نمودن این تغییرات سرویس MySQL جهت اعمال تغییرات باید restart شود.
نحوه دسترسی به فایل Slow query log:
tail -f /var/log/mysql/log-slow-queries.log
زمان مناسب جهت فعال کردن لاگها:
Error log بهتر است همیشه فعال باشد.
General query log بهتر است برای موارد خاصی همچون موارد زیر فعال شود؛ بهدلیل حجمی که لاگ فایلها اشغال میکنند بهتر است پس از اتمام بررسی غیر فعال شوند.
بررسی اتصال صحیح برنامه کاربردی تحت وب به MySQL.
نظارت بر اجراشدن صحیح Query در برنامه کاربردی.
تست memcached یا نرمافزارهای مشابه.
Slow Query log را ترجیحا برای یک دوره زمانی کوتاه ۲-۳ روزه فعال کنید، هنگامی که عملکرد برنامه به دلایلی کاهش پیدا میکند و میخواهید جستجوهایی که باعث این کاهش است را کشف کنید، استفاده از Slow Query log توصیه میگردد.
منبع :
لاگها در MySQL server - ایران سرور (http://blog.iranserver.com/log-mysql-server/)
MySQL server دارای چندین لاگ میباشد که با استفاده از آنها مشخص میشود چه فعالیتهایی در حال وقوع است؛ لاگهای دیتابیس ابزارهای مفیدی برای آنالیزنمودن کارائی و یا مشکلات احتمالی دیتابیس میباشند و در واقعیت در بسیاری مواقع با بررسی لاگ فایلها میتوان راهحلهای مناسب جهت رفع مشکلات ارائه نمود.
http://blog.iranserver.com/wp-content/uploads/2014/11/mysql_storage_engine.gif
در جدول زیر لیست لاگهای MySQL و اطلاعاتی که با فعال شدن هر لاگ در آن ذخیره میشود نمایش داده شده است:
نوع لاگ
اطلاعاتی که در لاگ ذخیره می شود
Error Log
مواجه شدن با مشکلات در زمان start یا دراجرا بودن یا stop شدن mysql
General query Log
برقرارشدن صحیح اتصالات و دستوارت کلاینت ها
Binary Log
رویدادهایی که تغییرات دیتابیس را تشریح می کند مانند عملیات ایجاد جدول یا تغییرات روی داده های جداول (همچنین برای replication استفاده می شود)
Relay Log
تغییرات داده که از replication master server دریافت می شود
Slow query Log
اطلاعات query هایی که زمان اجرایی بیش از یک مدت زمان تعیین شده دارند
DDL Log (metadata Log)
سوابق عملیات metadata تولید شده توسط دستورات تعریف داده مانندDROP و Alter و create. ، این اطلاعات در فایل ddl_log.log بصورت باینری ذخیره می شوند
در ادامه به تشریح سه نوع لاگ پرکاربرد MySQL و نحوه فعال سازی و دسترسی به آنها میپردازیم.
۱- Error log:
در Error Log مشکلاتی که در زمان start شدن یا متوقف شدن سرویس MySQL اتفاق میافتد و همچنین خطاهای بحرانی که در زمان اجرای این سرویس رخ میدهد ثبت میشود، درصورتیکه MySQL متوجه شود که جدولی نیاز به automatically checked (بررسی خودکار) یا repair (تعمیر) دارد این پیام در Error log ثبت میگردد.
مسیر ذخیره سازی فایل Error log:
مسیر ذخیره سازی لاگهای Mysql در فایل my.cnf قابل تعریف و تغییر میباشد، بطور پیش فرض در سیستم عامل های مبتنی بر red hat محل ذخیره شدن error log در /var/lib/mysql/ است.
نحوه دسترسی به فایل Error log:
جهت مشاهده و بررسی خطاهای ثبت شده در Error Log میتوانید از دستور زیر استفاده کنید:
tail -f /var/lib/mysql/server.hostname.com.err
server.hostname.com.err متناسب با نام سرور متفاوت میباشد و /var/lib/mysql/ مسیر ذخیره شدن فایل error log میباشد که در صورتیکه محل ذخیره سازی متفاوت باشد این مسیر نیز باید تغییر کند.
۲- General query log:
فعالیتهایی مانند هر اتصال connectionای که به دیتابیس متصل میشود و کلیه queryهایی که از سمت کلاینتها به دیتابیس فرستاده میشود در General query log ثبت میگردد. General query log برای اهداف عیب یابی، شناسائی باگ های برنامه، صحت عملکرد دستورات نوشته شده مفید میباشند. بهعنوان مثال زمانی که تصور میکنید خطا از سمت کلاینت است و میخواهید چک کنید دقیقا چه دستوری از سمت کلاینت به سرویس MySQL ارسال شدهاست.
نحوه فعالسازی General query log:
چنانچه تمایل به فعال نمودن General query log دارید، در فایل my.cnf دستورات زیر را اضافه نمائید.
[mysqld]
general_log_file = /var/log/mysql/mysql.log
general_log = 1
log-output = file
log_output
log_output مشخص کننده روش نوشته شدن لاگ فایلها است که در file یا در Table ذخیره شود.
مقدار فیلد general_log_file نام و مسیر ذخیره شدن فایل لاگ است.
مقدار یک در فیلد general_log مشخص کننده فعال و ۰ غیرفعال بودن General query log است.
پس از اضافه نمودن این تغییرات سرویس MySQL جهت اعمال تغییرات باید restart شود.
نحوه دسترسی به فایل General query log:
به کمک دستور زیر میتوانید به General query log دسترسی داشته باشید.
tail -f /var/log/mysql/mysql.log
۳- Slow query log:
در Slow query log اطلاعات مربوط به query (جستجو)هایی که زمان اجرای آنها بیشتر از زمان تعیین شده در long_query_time طول میکشد ثبت میگردد. جستجوهای کند MySQL منجر به کند شدن سرور میگردد.
Slow query log بهصورت پیش فرض غیرفعال است، با فعال نمودن آن، جستجوهایی که زمان زیادی جهت اجرا شدن آنها صرف میشود را شناسائی و راهکاری جهت بهینه نمودن جستجویا حذف آن جهت بهینه شدن کارائی سرویس MySQL بیابید.
نحوه فعالسازی Slow query log:
چنانچه تمایل به فعال نمودن Slow query log دارید، در فایل my.cnf دستورات زیر را اضافه نمائید.
[mysqld]
long_query_time=1
slow_query_log=1
slow_query_log_file= /var/log/mysql/log-slow-queries.log
long_query_time حداقل زمانی که دستور اجرا شده احتیاج دارد (برحسب ثانیه).
مقدار یک در فیلد slow_query_log نشانه فعال و ۰ غیرفعال بودن Slow query log است.
مقدار slow_query_log_file نام و مسیر ذخیره شدن فایل لاگ میباشد.
پس از اضافه نمودن این تغییرات سرویس MySQL جهت اعمال تغییرات باید restart شود.
نحوه دسترسی به فایل Slow query log:
tail -f /var/log/mysql/log-slow-queries.log
زمان مناسب جهت فعال کردن لاگها:
Error log بهتر است همیشه فعال باشد.
General query log بهتر است برای موارد خاصی همچون موارد زیر فعال شود؛ بهدلیل حجمی که لاگ فایلها اشغال میکنند بهتر است پس از اتمام بررسی غیر فعال شوند.
بررسی اتصال صحیح برنامه کاربردی تحت وب به MySQL.
نظارت بر اجراشدن صحیح Query در برنامه کاربردی.
تست memcached یا نرمافزارهای مشابه.
Slow Query log را ترجیحا برای یک دوره زمانی کوتاه ۲-۳ روزه فعال کنید، هنگامی که عملکرد برنامه به دلایلی کاهش پیدا میکند و میخواهید جستجوهایی که باعث این کاهش است را کشف کنید، استفاده از Slow Query log توصیه میگردد.
منبع :
لاگها در MySQL server - ایران سرور (http://blog.iranserver.com/log-mysql-server/)