2012-09-13 17 views
5

मेरे पास एक प्रश्न है। मेरे पास दो अलग-अलग सर्वरों पर दो टेबल हैं। दोनों टेबलों में एक ही संरचना है। एक सर्वर पर मास्टर टेबल दैनिक आधार पर अपडेट हो जाती है, इसलिए मैं एक अलग सर्वर पर दूसरी दास तालिका को अद्यतन करने के लिए क्रॉन जॉब या एक PHP स्क्रिप्ट क्रॉन चाहता हूं। मैंने कई स्क्रिप्ट देखी हैं लेकिन मेरी आवश्यकताओं को हल नहीं किया है।mysql 2 डेटाबेस से दो टेबल सिंक करें

+0

किस तरह से अपडेट किया गया? संरचना, डेटा, .. इसे कैसे अपडेट किया जाना चाहिए, आपकी स्क्रिप्ट्स ने आपकी आवश्यकताओं को हल क्यों नहीं किया। आपकी आवश्यकताओं क्या हैं। –

+0

इसकी mysql .. संरचना के बारे में नहीं है .. जो डेटा बढ़ता रहता है .. मैं एक PHP क्रॉन नौकरी करना चाहता हूं .. लेकिन मुझे नहीं पता कि यह सबसे सरल और सबसे अनुकूलित तरीके से कैसे जाना है। मैं मास्टर टेबल से डेटा का चयन नहीं करना चाहता हूं और जब तक वे दास टेबल में डाले जाते हैं तब तक उन्हें लूप नहीं करना चाहिए। इसमें बहुत अधिक समय लगता है। – user1587161

+0

इसलिए अगर मैं इसे – user1587161

उत्तर

7

मुझे विश्वास नहीं है कि आपको ऐसा करने के लिए उपयुक्त स्क्रिप्ट नहीं मिली है। सर्वर से सर्वर बैंडविड्थ और कनेक्टिविटी, और तालिका डेटा आकार के आधार पर आप कर सकते हैं:

  • सीधे पूरे तालिका हस्तांतरण: MySQL संपीड़न के साथ

    mysqldump [options] sourcedatabase tablename \ 
        | mysql [options] --host remoteserver --user username ... 
    
  • हस्तांतरण तालिका

    # same as above, mysql has the "-C" flag 
    
  • एसएसएच एन्क्रिप्शन और संपीड़न का उपयोग करके स्थानांतरण; mysql केवल संशोधनों

    mysqldump [options] sourcedb tbl > dump.sql 
    rsync [-z] dump.sql [email protected]:/path/to/remote/dump.sql 
    ssh [email protected] "mysql [options] < /path/to/remote/dump.sql" 
    

सब से ऊपर सरल हैं तालिका अधिलेखित कर देता है हस्तांतरण करने के लिए मध्यवर्ती एसक्यूएल फ़ाइल और rsync का उपयोग दूर से

mysqldump [options] sourcedatabase tablename \ 
    | ssh -C [email protected] 'mysql [options]' 
  • हस्तांतरण निष्पादित किया जाता है, दूरस्थ डेटा खो दिया है और गुरु ने ले ली है प्रति। Mysqldump-plus-rsync-plus-ssh एक समय में संशोधनों के लगभग आनुपातिक रूप से चलता है, जिसका अर्थ है कि यदि आपके पास 10-जीबी एसक्यूएल डंप है और एक दर्जन इंसर्ट्स जोड़ें, तो ट्रांसफर चरण को सिंक्रनाइज़ करने के लिए कुछ सेकंड की आवश्यकता होगी दो एसक्यूएल फाइलें।

    सम्मिलित चरण को अनुकूलित करने के लिए, या तो आप पूर्ण MySQL प्रतिकृति के लिए जाते हैं, या आपको सिंक समय पर मैन्युअल रूप से दोहराने के लिए तालिका पर संचालन की पहचान करने के लिए एक तरीका की आवश्यकता होगी। इसके लिए तालिका संरचना में बदलाव की आवश्यकता हो सकती है, उदा। "अंतिम-सिंक-ऑन" और "ज़रूरतों को हटाने" कॉलम, या यहां तक ​​कि सहायक तालिकाओं का परिचय भी जोड़ना।

  • 1

    आप में एक साधारण समाधान - Data Synchronization tool का उपयोग कर सकते हैं।

    1. डेटा तुलना प्रोजेक्ट बनाएं जो दो अलग-अलग MySQL सर्वरों पर दो तालिकाओं की तुलना और सिंक्रनाइज़ करेगा।
    2. निर्मित डेटा तुलना परियोजना दस्तावेज़ (* .dcomp फ़ाइल) का उपयोग कर कमांड लाइन मोड में एप्लिकेशन चलाएं।
    संबंधित मुद्दे