منتدى استراحات زايد

منتدى استراحات زايد (http://vb.ma7room.com/index.php)
-   منتدى أخبار المواقع والمنتديات العربية والأجنبية (http://vb.ma7room.com/forumdisplay.php?f=183)
-   -   حل مشكلة امتلاء القرص الصلب بسبب MySQL Binary Log (http://vb.ma7room.com/showthread.php?t=1310024)

محروم.كوم 09-02-2013 08:10 AM

حل مشكلة امتلاء القرص الصلب بسبب MySQL Binary Log
 
بسم الله الرحمن الرحيم

السلام عليكم ورحمه الله وبركاته

https://encrypted-tbn3.gstatic.com/i...SC5q287cPGqrYq

المشكلة:-




ملفات بإحجام كبيرة يصل حجم كل ملف 1 GB وشوية بداخل var/lib/mysql وتكون هذه الملفات بأسماء مثل mysql-bin.000001 و mysql-bin.00002 ..الخ الخ.
في حالة كان var بارتشن خاص فراح تاكل كل البارتشن واذا كان var ضمن البارتشن / فانفس الشيء راح تاكل كمية كبيرة من القرص. وايضاً سوف تتوقف القواعد وخادم mysql لانة لايستطيع ايجاد مساحة للكتابة فيها واذا كان var ضمن البارتشن / احتمال كبير تتوقف معظم وظائف النظام في حالة الامتلاء الكامل للقرص الصلب.

ماهية هذه الملفات:-

هذه الملفات عبارة عن ملفات LOG او تسجيل بصيغة Binary. تقوم هذه الملفات بتسجيل جميع الأحداث التي تحصل في mysql والكشوفات التي يتم تحديثها او التي قد تم فعلاً تحديثها. ايضاً من الممكن استخدامها لتقوم بتسجيل جميع الاستعلامات التي تحصل في mysql.

الغرض من هذه الملفات:-

النسخ الاحتياطي: في حالة قمت بإرجاع نسخة احتياطية اقدم , تستطيع ارجاع القاعدة إلى اخر point او نقطة كانت عليها.
عملية التكرار: في حالة كنت تستخدم اكثر من خادم لقواعد البيانات, فان هذه الملفات تعمل او تساعد على عملية التكرار بين السيد والخادم (بمصطلح ابسط بين الـ Master والـ Slaves).
حل هذه المشكلة:-

اولاً: استخدام الطريقة هذه تحت مسؤليتك ويجب عليك معرفة ماتقوم بة قبل التنفيذ. واذا كنت تستخدم اكثر من سيرفر لقواعد البيانات فلاتقم بعمل شيء قبل استشارة مختص.
ثانياً: يجب ان تعلم ان هذه الخاصية بشكل افتراضي غير مفعلة, وان كانت مفعلة فان مدير النظام هو من قام بتفعيلها.
الطريقة:

قم بالدخول على السيرفر بالمستخدم root كالعادة.

1- نذهب إلى المجلد الذي يحتوي على القواعد, بالإضافة إلى امر عرض المحتويات.

رمز PHP:
cd /var/lib/mysql/ && ls -la


لنفرض ان الناتج كان كتالي

رمز PHP:
XXXXXXXXXXXX
drwxr
-x--x 14 mysql mysql 4096 Oct 7 20:09 ./
drwxr-xr-x 16 root root 4096 Aug 15 14:06 ../
-
rw-rw---- 1 mysql mysql 3135 Aug 15 13:33 host.err
-rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 host.domain-name.err
-rw-rw---- 1 mysql mysql 6 Oct 7 20:09 host.domain-name.com.pid
drwx
------ 2 mysql mysql 4096 Oct 7 19:00 modsec/
drwx--x--x 2 mysql mysql 4096 Oct 7 19:24 mysql/
srwxrwxrwx 1 mysql mysql 0 Oct 7 20:09 mysql.sock=
-
rw-rw---- 1 mysql mysql 10485760 Oct 7 18:32 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Oct 7 18:32 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Aug 15 08:21 ib_logfile1
drwx
------ 2 mysql mysql 20480 Oct 8 10:33 username_dbname/
-
rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 mysql-bin.000001
-rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 mysql-bin.000002
-rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 mysql-bin.000003
-rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 mysql-bin.000004
-rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 mysql-bin.000005
-rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 mysql-bin.000006
-rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 mysql-bin.000007
-rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 mysql-bin.000008


جيد, الان نفتح ملف إعدادات mysql والي يكون اسمة افتراضياً my.cnf


رمز PHP:
nano /etc/my.cnf


نبحث عن

رمز PHP:
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days
= 10
max_binlog_size
= 500M


او مايعدلها, ونضع في بداية كل سطر علامة # لصيبح على الشكل التالي

رمز PHP:
#log_bin = /var/log/mysql/mysql-bin.log
#expire_logs_days = 10
#max_binlog_size = 500M


تأكد انك قمت بالعملية بشكل صحيح, اي خطأ يسبب في توقف خادم mysql
نقوم بحفظ الملف, ثم اعادة تشغيل لخادم mysql عبر الامر


رمز PHP:
service mysql restart


الان, ننفذ الاوامر هذه (جمعتها داخل امر واحد للسرعة)

رمز PHP:
cd /var/lib/mysql/ && /usr/bin/mysqlcheck -or --all-databases && service mysql restart && chattr -i mysql-bin* && rm -rf mysql-bin* && /usr/bin/mysqlcheck -or --all-databases && service mysql restart && ls -la



بياخذ وقت (حسب عدد القواعد وحجمها وحسب عدد وحجم ملفات الـ mysql-bin)
وبعد الانتهاء سوف يظهر لنا ناتج بالشكل التالي

رمز PHP:
total XXXXXXXXXXXX
drwxr
-x--x 14 mysql mysql 4096 Oct 7 20:09 ./
drwxr-xr-x 16 root root 4096 Aug 15 14:06 ../
-
rw-rw---- 1 mysql mysql 3135 Aug 15 13:33 host.err
-rw-rw---- 1 mysql mysql 316672 Oct 7 20:09 host.domain-name.err
-rw-rw---- 1 mysql mysql 6 Oct 7 20:09 host.domain-name.com.pid
drwx
------ 2 mysql mysql 4096 Oct 7 19:00 modsec/
drwx--x--x 2 mysql mysql 4096 Oct 7 19:24 mysql/
srwxrwxrwx 1 mysql mysql 0 Oct 7 20:09 mysql.sock=
-
rw-rw---- 1 mysql mysql 10485760 Oct 7 18:32 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Oct 7 18:32 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Aug 15 08:21 ib_logfile1
drwx
------ 2 mysql mysql 20480 Oct 8 10:33 username_dbname/


لاحظ ان ملفات mysql-bin اختفت, ولو نفذنا الامر التالي

رمز PHP:
df -h


راح نلاحظ ان المساحة المستهلكة قلت.

السلام عليكم ورحمه الله وبركاته


الساعة الآن 02:11 PM

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2 TranZ By Almuhajir


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227