वहाँ MySQL में Federated tables है:
संघीय भंडारण इंजन आप प्रतिकृति या क्लस्टर प्रौद्योगिकी का उपयोग कर के बिना एक दूरस्थ MySQL डेटाबेस से डेटा एक्सेस करने देता है। स्थानीय फ़ेडरेटेड तालिका क्वेरी करने से स्वचालित रूप से दूरस्थ (फ़ेडरेटेड) तालिकाओं से डेटा खींचता है। स्थानीय टेबल पर कोई डेटा संग्रहीत नहीं किया जाता है।
सबसे पहले, आपके पास रिमोट सर्वर पर एक टेबल होना चाहिए जिसे आप एक फीडरेटेड टेबल का उपयोग करके एक्सेस करना चाहते हैं। मान लीजिए कि दूरस्थ तालिका Sakila डेटाबेस में है और इस तरह परिभाषित किया गया है:
CREATE TABLE test_table (
id INT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL
PRIMARY KEY (id)
)
ENGINE=MyISAM
DEFAULT CHARSET=latin1;
इसके बाद, दूरदराज के मेज तक पहुँचने के लिए स्थानीय सर्वर पर एक संघीय तालिका बनाने:
CREATE TABLE federated_table (
id INT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL
PRIMARY KEY (id)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user:[email protected]:3306/sakila/test_table';
नमूना कनेक्शन तार:
CONNECTION='mysql://username:[email protected]:port/database/tablename'
CONNECTION='mysql://[email protected]/database/tablename'
CONNECTION='mysql://username:[email protected]/database/tablename'
इस तालिका के बुनियादी ढांचे को दूरस्थ तालिका के कि, से मेल खाते हैं, सिवाय इसके कि इंजन तालिका विकल्प संघीय होना चाहिए चाहिए।
निष्पादित करें: अगर संघीय भंडारण इंजन अपने स्थानीय सर्वर पर उपलब्ध है
show variables like '%federated%';
जाँच करने के लिए।
स्थानीयहोस्ट में तालिका federated_table
दूरस्थ सर्वर में test_table
की आभासी तालिका बन जाती है।
अब आप स्थानीयहोस्ट सर्वर में डीबी में टेबल के बीच जॉइन का उपयोग कर सकते हैं।
SELECT * FROM `federated_table` JOIN `test`;
federated_table
में: यदि कोई तालिका अपने स्थानीय होस्ट सर्वर में test
कहा जाता है, और आप पूर्व sakila.test_table जो दूरस्थ सर्वर में है से जोड़ना चाहते हैं, नीचे दिखाए गए जैसा एक क्वेरी लिखने क्वेरी वास्तव में दूरस्थ सर्वर में test_table का संदर्भ लेंगे।
संघीय स्टोरेज इंजन को सक्षम करने पर
संघीय भंडारण इंजन चल रहा सर्वर में डिफ़ॉल्ट रूप से सक्षम नहीं है; FEDERATED को सक्षम करने के लिए, आपको --federated
विकल्प का उपयोग करके MySQL सर्वर बाइनरी शुरू करनी होगी।
नोट:
वैकल्पिक स्टोरेज इंजनों को विशेषाधिकारों की आवश्यकता होती है और --skip-grant-tables
निर्दिष्ट होने पर लोड होने में विफल हो जाएगा।
परिणाम पूरे डाटाबेस लोड करने के लिए असफल हो जायेगी और निम्न त्रुटि लॉग में दिखाई देगा:
110318 21:37:23 [ERROR] /usr/local/libexec/mysqld: unknown option '--federated'
बदले में इसका मतलब यह है 5.x से एक उन्नत दो चरणों में किया जाना चाहिए कि अगर आप संघीय टेबल है। एक बार --skip-grant-tables
और बिना --federated
के साथ, --skip-grant-tables
के बिना और --federated
के साथ।
स्रोत: The FEDERATED Storage Engine
धन्यवाद, खासकर त्वरित ट्यूटोरियल के लिए। दुर्भाग्य से मुझे इसे काम करने में परेशानी है। '% federated%' जैसे चर दिखाएं; खाली सेट देता है। मुझे # my.ini में डिफ़ॉल्ट स्किप-फ़ेडरेटेड द्वारा संघीय अक्षम करें, मैंने स्किप लाइन पर टिप्पणी की है और सेवाओं को पुनरारंभ किया है, मैंने इस फ़ाइल में [mysqld] अनुभाग में फ़ेडरेटेड भी जोड़ा है और सेवाओं को पुनरारंभ किया है। –
आप किस MySQL संस्करण का उपयोग कर रहे हैं? – Jacob
नहीं, ठीक है .. ऐसा लगता है कि यह अब काम कर रहा है, भले ही खाली सेट रिटर्न। धन्यवाद:) –