RESHARD موجود مستودع SVN كبير
-
26-09-2019 - |
سؤال
لدينا مستودع SVN كبير جدًا (50 جيجابايت ، أكثر من 100000 مراجعة). العمل معها بطيء للغاية وأخمن أن السبب في ذلك هو بنية الدليل المسطح في DB/Revs و DB/RevProps (حيث يكون كل مراجعة ملفًا واحدًا).
نستخدم تنسيق FSFS مع SVN 1.5 (على خادم Linux) ولكن تم إنشاء repo مع إصدار SVN أقدم. قرأت الآن أن SVN 1.5 يدعم "Sharding" وفهم أن هذه الميزة توزع المراجعات في أدلة متعددة حتى لا يحتوي دليل واحد على العديد من الملفات. يبدو هذا مفيدًا جدًا ، لكن يبدو أن هذه الميزة تستخدم فقط مع المستودعات التي يتم إنشاؤها حديثًا باستخدام SVN 1.5.
كيف يمكنني تحويل ريبو خطي كبير موجود إلى ريبو متخبط؟ يذكر الدليل أداة "FSFS-Reshard.py" ولكن هذا البرنامج النصي يقول "هذا البرنامج النصي غير مكتمل وليس جاهزًا لاستخدامه في البيانات الحية. ثق بنا.". لذلك أنا بالتأكيد لا أريد استخدام ذلك. هل هناك بديل؟
المحلول
أفضل طريقة كما ذكر تفريغ/حمولة. لكن يمكنك تجربة تطوير.
svnadmin upgrade
قم بعمل نسخة من الريبو أولاً ، جرب الترقية واختبارها .... (لا تفوت إنشاء نسخة احتياطية).
نصائح أخرى
سوف svnadmin dump
و svnadmin load
قم بالخدعة؟ http://subversion.apache.org/faq.html#dumpload
نظرًا لأن عملية التفريغ/الاستعادة تتطلب الكثير من مساحة القرص ووقت المعالجة ، فقد نشرت (في عام 2010) نسخة محسنة من fsfs-reshard.py
الذي يتضمن دعم Subversion 1.6 FSFS Format 5:https://github.com/ymartin59/svn-fsfs-reshard
وهو يدعم التبديل بين التخطيطات الخطية إلى المخططات ، وتفريغ شظايا عند الحاجة. بفضل حساب SHARD Statistics ، قد تتوقع أحجام المراجعة المعبأة في تحديد حجم Shard المناسب.
بالطبع يجب أن يكون تستخدم بعناية:
- أول إجراء اختبار على نسخة مستودع إذا أمكن
- احصل على نسخة احتياطية جاهزة لاستعادتها
- منع الوصول إلى المستودع عند المعالجة
- يركض
svnadmin verify
قبل وضعه على الهواء مباشرة