it-swarm.asia

هل يؤدي تشغيل pg_dump على قاعدة بيانات مباشرة إلى إنشاء نسخ احتياطية متسقة؟

لدي قاعدة بيانات سعة 3 جيجا بايت يتم تعديلها باستمرار وأحتاج إلى عمل نسخ احتياطية دون إيقاف الخادم (Postgres 8.3).

يتم تشغيل pg_dump لمدة 5 دقائق. ماذا لو تم تعديل البيانات أثناء العملية؟ هل أحصل على نسخ احتياطية متسقة؟ لا أريد أن أعرف متى تقع الكارثة.

وثائق Postgres http://www.postgresql.org/docs/8.3/static/app-pgdump.html لا يقول أي شيء عن هذا.

38
Roman

من يدوي :

يقوم بعمل نسخ احتياطية متسقة حتى إذا تم استخدام قاعدة البيانات في وقت واحد.

لذا نعم ، يمكنك الوثوق في النسخة الاحتياطية. بالطبع ، إنه PostgreSQL ، يمكنك الوثوق ببياناتك في PostgreSQL.

56
Frank Heikens

تبدأ pg_dump معاملة ، على نحو مشابه لكيفية عمل أي استعلام آخر طويل المدى. ضمانات الاتساق هناك تأتي من تنفيذ MVCC . سيكون التفريغ دائمًا متسقًا ذاتيًا ضمن تلك القواعد.

جميع الأجزاء الغامضة من MVCC تدور حول أشياء مثل ترتيب معاملات UPDATE التي تصبح مرئية للعملاء الآخرين وكيف يتم الحصول على الأقفال. pg_dump صارمة بشأن الطلب ويكتسب قفل قراءة على قاعدة البيانات بأكملها لتفريغها. بالنسبة لمعظم الناس ، هذا ما يتوقعونه ، والآلية المستخدمة لا تسبب أي مشاكل. يتمثل خطر التزامن الرئيسي في أن العملاء الذين يحاولون تغيير بنية قاعدة البيانات سيتم حظرهم أثناء تشغيل التفريغ. هذا لا يؤثر على جودة التفريغ بالرغم من ذلك.

12
Greg Smith

يبدأ التفريغ بإعداد TRANSACTION ISOLATION LEVEL SERIALIZABLE.

يرجى قراءة الدليل على عزل المعاملات وعلى سبيل المثال مناقشة قائمة المستخدمين حول هذا الموضوع .

اقتبس:

سترى النسخة الاحتياطية فقط المعاملات التي تم تنفيذها قبل تعيين مستوى العزل.

في الأساس كل شيء بعد pg_dump تعيين مستوى عزل المعاملة not جزء من هذا التفريغ.

لا تتأثر (القراءة) عمليات القراءة/الكتابة خلال تلك الفترة.

12
Dennis Nolte