كيف يمكنني الحصول على إحداثيات سجل MySQL الثنائي من الملفات الثنائية؟
-
26-09-2020 - |
سؤال
أحاول إعداد النسخ المتماثل لقاعدة بيانات MySQL كبيرة (120 جيجابايت) وقد أخطأت.
لقد قمت بإيقاف تشغيل البرنامج الرئيسي، ونسخ ملفات البيانات، وأعدت تشغيل البرنامج الرئيسي.لقد قمت الآن بإعداد العبد وبدأت تشغيله، وأدركت أنني أهملت الحصول على MASTER_LOG_FILE
و MASTER_LOG_POS
القيم اللازمة لإعداد النسخ المتماثل.
لا يزال لدي نسخة لم تمسها من ملفات البيانات.هل هناك أي طريقة لتحديد MASTER_LOG_FILE
و MASTER_LOG_POS
من تلك الملفات؟
سؤال ذو صلة:
- ماذا يحدث إذا قمت بتعيين
MASTER_LOG_POS
إلى نقطة سابقة في الوقت المناسب؟ - هل أنا على حق في افتراض أنه سيتم تنفيذ الاستعلامات المكررة، مما قد يؤدي إلى بيانات مكررة؟
يحرر
لقد تم التحقيق في mysqlbinlog
الأمر واكتشفت ما يشبه المعلومات الصحيحة عن طريق تنفيذ:
mysqlbinlog --to-last-log --start-datetime='2015-06-21 20:05:00'
mysql-bin.000006 | grep end_log_pos
يبدو الإخراج شيئًا مثل هذا:
... a whole bunch more lines ...
#150621 20:10:21 server id 1 end_log_pos 720159843 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720161877 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720162762 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:22 server id 1 end_log_pos 720164796 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:22 server id 1 end_log_pos 720164815 Stop
أعتقد أنه يجب علي استخدام أحد هذين الموضعين الأخيرين، لكنني لست متأكدًا من أي منهما.
المحلول
نأمل أنك لم تبدأ mysqld على العبد بعد.
يحدث أن موضع binlog هو أيضًا حجم binlog في نهاية كل حدث binlog.في حالتك، يمكنك استخدام آخر binlog يراه العبد، وهو ما يمكنني افتراضه mysql-bin.000006
.احصل على الملف واستخدمه كموضع.
لذلك، على الرقيق سوف تعمل
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='...',
MASTER_PORT=3306,
MASTER_USER='repluser',
MASTER_PASSWORD='replpassword',
MASTER_LOG_FILE='mysql-bin.00006',
MASTER_LOG_POS=720164815;
START SLAVE;
وينبغي أن تفعل ذلك !!!
لقد ناقشت موضع binlog كونه الملف من قبل
Nov 30, 2012
: كيف يمكنك مراقبة ما إذا كانت ملفات MySQL binlog تالفة؟Oct 20, 2011
: كيفية التعامل مع النسخ المتماثل My SQL DB Master to Master عندما يكون هناك انقطاع في مساحة القرص
لقد سألت أيضا
ماذا يحدث إذا قمت بتعيين MASTER_LOG_POS على نقطة زمنية سابقة؟
نعم، سيعيد تشغيل حدث binlog ويسبب مشكلات.