कौन सी तालिकाएँ साफ़ करना सुरक्षित हैं?


40

मुझे एक क्लाइंट साइट विरासत में मिली है जिसमें बिना किसी कारण के एक बहुत बड़ा डेटाबेस है। इसमें मध्यम मात्रा में सामग्री और बहुत कम सक्षम मॉड्यूल हैं। हालांकि, डेटाबेस आसानी से घूमने के लिए बहुत बड़ा है और मैं इसे साफ करना चाहता हूं।

मैंने मानक कैश तालिकाओं, syslog और accesslog को साफ़ कर दिया है।

क्या कोई अन्य तालिका है जो मैं एक मानक Drupal साइट में सुरक्षित रूप से काट-छाँट कर सकता हूं?


1
आप phpmyadmin में उनके आकार के आधार पर तालिकाओं को सॉर्ट कर सकते हैं। यह कोशिश करें और फिर देखें कि कौन सी सारणी सबसे बड़ी हैं और यहां रिपोर्ट करें। मैंने उदाहरण के लिए विशाल सत्र तालिकाएँ देखीं जो किसी कारण से साफ़ नहीं हुई हैं। अगर आप उपयोगकर्ताओं के साथ फिर से लॉग इन करने के लिए रह सकते हैं (और संभवतः साइट पर मौजूद हैं, तो संभवतः आप डेटा के साथ इसे समन्वित कर सकते हैं, इसलिए आप उपयोगकर्ताओं के साथ इसे समन्वित कर सकते हैं)
बर्दिर

बस एक ओर ध्यान दें, कि नीचे दिए गए सभी उत्तर जो कि ट्रंकटिंग {cache_form}का उल्लेख करते हैं, वास्तव में सही नहीं हैं। यह एक सच्चा कैश टेबल नहीं है। इसमें प्रगति प्रपत्र प्रस्तुतियाँ शामिल हैं। यदि आप इस तालिका के सभी डेटा को हटाते हैं, तो आपका उपयोगकर्ता डेटा खो सकता है । इस तालिका के साथ करने के लिए उचित बात प्रविष्टियों को समाप्त करना है।
mpdonadio

जवाबों:


21

बैकअप और माइग्रेट मॉड्यूल का उपयोग करें , यह आवश्यक डेटा स्किप करने के लिए अच्छी चूक के साथ आता है । डिफ़ॉल्ट रूप से यह कैश, वॉचडॉग और कुछ अन्य तालिकाओं के बिना एक डीबी बैकअप उत्पन्न करता है।

यदि यह phpMyAdmin के साथ एक नज़र रखने में मदद नहीं करता है और हमें बताएं कि किन तालिकाओं में बहुत सारी प्रविष्टियाँ हैं।


1
यह पहला स्थान है जहां मैं गया था। हालाँकि, डेटाबेस एक टमटम पर है और इस विधि से बैकअप नहीं होगा। मेरा इरादा डेटाबेस को खाली करना है ताकि मैं बैकअप का उपयोग कर सकूं और नियमित रूप से माइग्रेट कर सकूं। अनिवार्य रूप से मैं सोच रहा हूं कि क्या कोई और मेज है जिसे मैं साफ कर सकता हूं (जो कि BAM द्वारा डिफ़ॉल्ट रूप से स्किप नहीं की गई है)।
निगेल वाटर्स

यदि आपके पास कमांड लाइन एक्सेस है तो बैकअप शुरू करने और माइग्रेट करने के लिए ड्रश का उपयोग कर सकते हैं। या कमांड लाइन पर mysql का उपयोग करें (उदाहरण: mysqldump --host = your.host.com --user = db_user --compress --password your_pw> dip.sql) इस तरह से आप टाइमआउट में नहीं चलेंगे। बिना बैकअप के सामान्य क्लियरिंग में बहुत बचत नहीं होती है। आप आसानी से टूटे हुए पृष्ठ के साथ समाप्त हो सकते हैं और वापस जाने का कोई रास्ता नहीं।
BetaRide

समस्या टाइमआउट के साथ नहीं है। मुझे पता है कि मैं ssh / drush के माध्यम से आसानी से बैकअप चला सकता हूं। मैं डेटाबेस को साफ करना चाहूंगा क्योंकि इसने पिछले कुछ वर्षों में एक से कई हाथों को देखा है और वहां बहुत सारे अनावश्यक संकट हैं। मुझे बस यह जानने की जरूरत है कि मैं किन तालिकाओं को सुरक्षित रूप से हटा सकता हूं, (यह नहीं जानता कि बैकअप कैसे लें या मेरी साइट को कैसे स्थानांतरित करें)।
निगेल वाटर

@ बायराइड सही है, BAM को बाहर करने वाले डिफ़ॉल्ट सुरक्षित हैं। दूसरों के पास वास्तविक डेटा हो सकता है या नहीं भी हो सकता है।
mpdonadio

22

ड्रुपल 7 टेबल जिन्हें बाहर रखा जा सकता है

यहाँ Drupal 7 में तालिकाओं की एक सूची है जिसे आप या तो स्पष्ट कर सकते हैं (डेटाबेस आकार को कम करने के लिए) या सुरक्षित रूप से माइग्रेशन करने के लिए बाहर कर सकते हैं (जैसा कि इस सवाल में है कि स्थानीय रूप से निर्यात किए गए डेटाबेस आकार को कम करने के लिए मेरे सर्वर आयात सीमा के आसपास कैसे प्राप्त करें? ):

  • accesslog
  • जत्था
  • सभी कैश संबंधित टेबल, जैसे:
    • कैश *
    • cache_block
    • cache_content
    • cache_filter *
    • cache_form
    • cache_calendar_ical
    • cache_menu *
    • cache_page *
    • cache_views
    • * _cache, जैसे features_cache या views_data_object_export_cache
  • ctools_views_cache
  • ctools_object_cache
  • devel_queries
  • devel_times
  • बाढ़
  • इतिहास
  • कतार
  • विभिन्न खोज_ * टेबल, जैसे:
    • search_dataset
    • search_index
    • search_keywords_log
    • search_total
  • सिकंदरा
  • सत्र
  • प्रहरी
  • webform_submitted_data

आमतौर पर टेबल जैसे कि search_indexऔर watchdogबहुत सारे डेटाबेस स्पेस का उपयोग करते हैं, इसलिए सिर्फ उन 2 टेबल्स को खत्म करने से पहले से ही एक बड़ा अंतर आ सकता है।

अन्य तालिकाएँ जिन्हें बाहर रखा जा सकता है

अपनी शेष तालिकाओं के आकार की जाँच करें और पहचानें कि उनमें से कौन सा आकार सबसे बड़ा है।

आमतौर पर आपको सत्र तालिका मिल सकती है जिसके लिए कोई सफाई प्रक्रिया नहीं है। ऐसी तालिकाओं को आप शायद बाहर कर सकते हैं।

मॉड्यूल बैकअप और माइग्रेट

" सर्वर आयात सीमा के आसपास पाने के लिए स्थानीय रूप से निर्यात किए गए डेटाबेस आकार को कम करने के लिए " के रूप में विस्तृत चुनौती को और कम करने के लिए , बैकअप और माइग्रेट मॉड्यूल को भी देखें। यहाँ इसके परियोजना पृष्ठ का एक उद्धरण (बोल्ड मार्कअप यहाँ जोड़ा गया है):

बैक अप लें और अपने Drupal MySQL डेटाबेस, कोड, और फ़ाइलों को पुनर्स्थापित करें या वातावरण के बीच एक साइट पर जाएं। बैकअप और माइग्रेट gzip, bzip और ज़िप कंप्रेशन के साथ-साथ स्वचालित शेड्यूल किए गए बैकअप का समर्थन करता है।

बैकअप और माइग्रेट के साथ आप अपने कुछ या सभी डेटाबेस तालिकाओं को फ़ाइल डाउनलोड करने के लिए डंप कर सकते हैं या सर्वर या ऑफ़साइट पर फ़ाइल को सहेज सकते हैं, और अपलोड किए गए या पहले से सहेजे गए डेटाबेस डंप से पुनर्स्थापित कर सकते हैं। आप चुन सकते हैं कि कौन-सी तालिकाएँ और कौन-सा डेटा बैकअप और कैश डेटा डिफ़ॉल्ट रूप से बाहर रखा गया है

और भी अधिक है: यदि आपका स्थानीय वातावरण (जैसे विन या मैक) ओएस से भिन्न है कि आपकी होस्ट की गई वेबसाइट का सर्वर लिनक्स की तरह चल रहा है, तो ओएस-एस के बीच ये अंतर संभावित अतिरिक्त चुनौतियों का सामना करते हैं। मेरे पास विभिन्न ओएस के बीच बैकअप और माइग्रेट मॉड्यूल के साथ अच्छे अनुभव हैं, जिससे उन स्थितियों में कोई समस्या नहीं हुई (ठीक काम किया है) जहां पहले MySql निर्यात / आयात विफल रहा था।


अच्छा जोड़ने के लिए उस के साथ किसी भी तालिका cache_prepended या _cacheसंलग्न सुरक्षित हैं इस तरह के रूप में भी काटना, features_cacheया views_data_object_export_cacheआदि
Beebee

1
चेतावनी का शब्द, खोज तालिका डेटा को बाहर रखा जा सकता है, लेकिन बड़ी साइटों पर अनुक्रमित के पुनर्निर्माण के लिए बहुत, बहुत लंबा समय लग सकता है। इसे केस-बाय-बेस आधार पर जज करें।
mpdonadio

2
साथ ही, कैश्ड डेटा के बारे में B & M का अंश थोड़ा गलत है। किसी साइट पर सक्षम होने पर, यह कैश टेबल को बाहर कर देगा। हालाँकि, यदि आप B & M सेट होने के बाद मॉड्यूल जोड़ते हैं, तो कैश टेबल को डेटा सूची से बाहर नहीं जोड़ा जा सकता है। मैंने ऐसा कई बार देखा है, आमतौर पर जब मैं डिफ़ॉल्ट प्रोफाइल पर सेटिंग्स को ओवरराइड करता हूं।
mpdonadio

@MPD: इस दिलचस्प प्रतिक्रिया के लिए धन्यवाद (उस के बारे में अभी तक पता नहीं है!)। खोज तालिका के बारे में: मान्य बिंदु। लेकिन व्यक्तिगत रूप से मैं हमेशा पुनर्निर्माण दृष्टिकोण के लिए जाऊंगा: यह सीमा के आसपास जाने में मदद करता है और यह सुनिश्चित करता है कि सूचकांक लक्ष्य में वास्तविक सामग्री से मेल खाता है। आपकी दूसरी टिप्पणी के बारे में: अंश परियोजना पृष्ठ से एक कट-एंड-पास्ट है, इसलिए हो सकता है कि आप इसके बारे में कोई समस्या दर्ज करना चाहते हों, इसकी समस्या कतार में (Drupal.SE, बग, आदि के बारे में रिपोर्ट करने के लिए जगह नहीं है?) ।
पियरे.वीयरेंस

@ पियरे.वीयरेंस से मेल खाते हुए कंटेंट से कोई फर्क नहीं पड़ता, यह मानते हुए कि आपके पास क्रोन चल रहा है और सुनिश्चित करें कि अनुक्रमण होता है। B & M, बहुत यकीन है कि एक ज्ञात मुद्दा है। साथ ही, सत्र डेटा के बारे में अनुभाग 100% सही नहीं है। वह तालिका बड़ी हो जाती है क्योंकि डिफ़ॉल्ट सत्र का समय लगभग तीन सप्ताह है; _drupal_session_garbage_collectionसिस्टम सेटिंग के आधार पर उस तालिका को ठीक रखेंगे।
एमपीडेनडिओ

19

अपने अनुभव में, मैं सभी "कैश_ *" तालिकाओं को शुद्ध करता हूं।

  • प्लस "वॉचडॉग" अगर मुझे पिछले ड्रुपल लॉग की परवाह नहीं है
  • प्लस "एक्सेसलॉग" अगर मुझे लॉग-इन उपयोगकर्ताओं की परवाह नहीं है
  • प्लस "खोज" अगर मैं अनुक्रमित नोड्स सामग्री के बारे में परवाह नहीं करता हूं

1
यहाँ भी, मैं भी सत्र होगा।
एलेक्स वेबर

2
इसे नोट करने वाले किसी व्यक्ति को नोट करें: पहले एक बैकअप बनाएं। और टेबल को मत गिराओ, बल्कि खाली करो या काटो।
timofey.com

9

मैं कभी-कभी इस एसक्यूएल को शीर्ष तालिकाओं के विकास पर नजर रखने के लिए चलाता हूं:

SELECT * 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =  'yourdbnamehere'
ORDER BY table_rows DESC 

मुझे विकास के लिए किस कॉलम की जांच करनी चाहिए?, आपका मतलब है TABLE_ROWS
Bala

8

वॉचडॉग और सत्र भी साफ़ किए जा सकते हैं, ध्यान रखें कि सभी उपयोगकर्ता लॉग आउट हो जाएंगे।


6

MySQL के साथ आप mysqldump प्रोग्राम के साथ डेटाबेस को उसकी संपूर्णता या भागों में निर्यात करने के लिए मज़ेदार चीज़ें कर सकते हैं। उदाहरण के लिए यह सिर्फ संरचना निर्यात करता है:

mysqldump -u root -pBatteryHorseStapleObviously -h some_host --no-data dbname > ~/dbname.sql

फिर आप डेटा निर्यात करने के लिए 'उपेक्षा तालिका' विकल्प का उपयोग कर सकते हैं, जैसे

mysqldump -u root -pBatteryHorseStapleObviously -h some_host --ignore-table=dbname.huge_table --ignore-table=dbname.massive_table --ignore-table=dbname.useless_table some_host >> ~/dbname.sql

यह पहले फ़ाइल के अंत में डेटा को कुछ बड़े तालिकाओं को अनदेखा करता है।

यदि आपको बड़े पैमाने पर तालिकाओं की आवश्यकता है, तो आप उपरोक्त दृष्टिकोण का उपयोग करके उन्हें एक अलग फ़ाइल में निर्यात कर सकते हैं, फिर आप उन्हें चंक्स में आयात कर सकते हैं (हालांकि fk चेक बंद होने की आवश्यकता हो सकती है)।

आपने अपनी फ़ाइल को अपलोड करने से पहले gzip किया, या यह एक मूर्खतापूर्ण प्रश्न है?


5

कैश तालिकाओं को साफ करने के लिए OptimizeDB मॉड्यूल का उपयोग करेंडाटाबेस प्रशासन भी उपयोगी है।

डेटाबेस का बैकअप रखना न भूलें।


डेटाबेस अब 14Mo है, मैंने OptimizeDB, Thak you again
Mitch

@ आपका स्वागत है
M ama D

2

नहीं यह लेकिन मेरे अनुभव साझा करने ... यदि आप बैकअप और विस्थापित मॉड्यूल का उपयोग कर रहे नहीं और मैन्युअल रूप से उन्हें निर्यात तालिकाओं आप खाली कर सकता है के कुछ / truncate होगा पर सुपर विशेषज्ञ watchdog, cache, cache_menu, cache_block, cache_content, cache_formके रूप में वे एक बड़ी शामिल हो सकता है कैश्ड स्टफ क्लियरिंग की मात्रा जो मुझे लगता है कि चोट नहीं पहुंचाएगी ... लेकिन फिर से यह मेरा अनुभव है और मुझे इस वजह से परेशानी या डेटा हानि का सामना नहीं करना पड़ा।


2

कुछ विचार:

  • डेटा रखने के विचारों का उपयोग करके RSS फ़ीड्स बनाने के लिए एक पूरी तरह से अलग दृष्टिकोण होगा । फिर एक नया ड्रुपल इंस्टॉलेशन बनाएं और इस डेटा को फ़ीड एपीआई के साथ आयात करें ।
  • और बस एक अन्य दृष्टिकोण: एक छात्र को किराए पर लें और उसे डेटा को अपने नए इंस्टॉलेशन में मैन्युअल रूप से स्थानांतरित करने दें।
  • या यह एक: हमें बताएं कि तालिकाओं में बहुत बड़ा क्या है और इसका कारण क्या है (यदि आप जानते हैं)।

2

चेक example.drushrc.phpजो इन सूची:

$options['structure-tables']['common'] = array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog');
$options['skip-tables']['common'] = array('migration_*');

विभिन्न वातावरणों के बीच डेटाबेस को स्थानांतरित करने के संदर्भ में उन्हें साफ़ करना सुरक्षित है (विशेषकर जब आप बड़े डेटाबेस के साथ काम कर रहे हों )। हालाँकि आपको अभी भी यह समझने की ज़रूरत है कि आप क्या साफ़ कर रहे हैं।


1

अतिरिक्त तालिकाएँ जिन्हें साफ़ किया जा सकता है:

  • जत्था
  • webform_submitted_data

अन्य चीजें जो कुछ जगह ले सकती हैं: - आपकी सामग्री के पुराने संस्करण (सरल ट्रंकट के साथ साफ करना संभव नहीं)। - loc_source और loc_target। यदि आपके पास ऐसी भाषाएं हैं जिनका उपयोग अब और मॉड्यूल के लिए स्ट्रिंग अनुवादों में नहीं किया जाता है जिनका आप अब उपयोग नहीं करते हैं। इन तालिकाओं को कभी साफ नहीं किया गया लगता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.