GoGPT Best VPN GoSearch

ऑनवर्क्स फ़ेविकॉन

पीटी-टेबल-सिंकप - क्लाउड में ऑनलाइन

उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर पर ऑनवर्क्स फ्री होस्टिंग प्रदाता में पीटी-टेबल-सिंकप चलाएं।

यह कमांड पीटी-टेबल-सिंकप है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।

कार्यक्रम:

नाम


पीटी-टेबल-सिंक - MySQL टेबल डेटा को कुशलतापूर्वक सिंक्रोनाइज़ करें।

SYNOPSIS


उपयोग: पीटी-टेबल-सिंक [विकल्प] डीएसएन [डीएसएन]

पीटी-टेबल-सिंक MySQL तालिकाओं के बीच डेटा को कुशलतापूर्वक सिंक्रनाइज़ करता है।

यह टूल डेटा बदलता है, इसलिए अधिकतम सुरक्षा के लिए, आपको उपयोग करने से पहले अपने डेटा का बैकअप लेना चाहिए
यह। जब किसी सर्वर को "--रेप्लिकेट" या के साथ प्रतिकृति स्लेव सिंक्रनाइज़ किया जाता है
"--सिंक-टू-मास्टर" विधियाँ, यह हमेशा प्रतिकृति मास्टर पर परिवर्तन करता है, कभी नहीँ
प्रतिकृति दास सीधे। प्रतिकृति लाने का यह सामान्यतः एकमात्र सुरक्षित तरीका है
अपने स्वामी के साथ तालमेल में वापस; प्रतिकृति में परिवर्तन आमतौर पर इसका स्रोत होते हैं
सबसे पहले समस्याएं. हालाँकि, यह मास्टर पर जो परिवर्तन करता है वह नो-ऑप होना चाहिए
परिवर्तन जो डेटा को उनके वर्तमान मानों पर सेट करते हैं, और वास्तव में केवल प्रतिकृति को प्रभावित करते हैं।

होस्ट1 पर db.tbl को होस्ट2 पर सिंक करें:

पीटी-टेबल-सिंक --निष्पादित करें h=host1,D=db,t=tbl h=host2

होस्ट1 पर सभी तालिकाओं को होस्ट2 और होस्ट3 में सिंक करें:

पीटी-टेबल-सिंक --निष्पादित होस्ट1 होस्ट2 होस्ट3

स्लेव1 को उसके प्रतिकृति मास्टर के समान डेटा बनाएं:

पीटी-टेबल-सिंक --निष्पादित करें --सिंक-टू-मास्टर स्लेव1

मास्टर1 के सभी दासों पर पीटी-टेबल-चेकसम में पाए गए मतभेदों को हल करें:

पीटी-टेबल-सिंक --निष्पादित करें --प्रतिकृति परीक्षण.चेकसम मास्टर1

उपरोक्त के समान ही लेकिन केवल स्लेव1 पर मतभेदों को हल करें:

पीटी-टेबल-सिंक --निष्पादित करें --प्रतिकृति परीक्षण.चेकसम \
--सिंक-टू-मास्टर स्लेव1

मास्टर2 को मास्टर-मास्टर प्रतिकृति कॉन्फ़िगरेशन में सिंक करें, जहां मास्टर2 की db.tbl की प्रतिलिपि
गलत होने का ज्ञात या संदेह है:

pt-table-sync --execute --sync-to-master h=master2,D=db,t=tbl

ध्यान दें कि मास्टर-मास्टर कॉन्फ़िगरेशन में, निम्नलिखित वह नहीं करेगा जो आप चाहते हैं,
क्योंकि यह सीधे मास्टर2 पर परिवर्तन करेगा, जो फिर प्रतिकृति के माध्यम से प्रवाहित होगा
और मास्टर1 का डेटा बदलें:

# मास्टर-मास्टर सेटअप में ऐसा न करें!
पीटी-टेबल-सिंक --निष्पादित करें h=master1,D=db,t=tbl master2

जोखिम


चेतावनी: पीटी-टेबल-सिंक डेटा बदलता है! इस उपकरण का उपयोग करने से पहले, कृपया:

उपकरण के दस्तावेज़ीकरण पढ़ें

उपकरण के ज्ञात "बग्स" की समीक्षा करें

· गैर-उत्पादन सर्वर पर उपकरण का परीक्षण करें

· अपने उत्पादन सर्वर का बैकअप लें और बैकअप सत्यापित करें

पीटी-टेबल-सिंक परिपक्व है, वास्तविक दुनिया में सिद्ध है, और अच्छी तरह से परीक्षण किया गया है, लेकिन यदि उपयोग किया जाता है
अनुचित तरीके से इसके प्रतिकूल परिणाम हो सकते हैं। हमेशा पहले सिंकिंग का परीक्षण करें
"--ड्राई-रन" और "--प्रिंट"।

वर्णन


पीटी-टेबल-सिंक टेबल डेटा का एक-तरफ़ा और द्वि-दिशात्मक सिंक्रनाइज़ेशन करता है। ऐसा होता है नहीं
तालिका संरचनाओं, अनुक्रमणिका, या किसी अन्य स्कीमा ऑब्जेक्ट को सिंक्रनाइज़ करें। निम्नलिखित
एकतरफ़ा तुल्यकालन का वर्णन करता है। "द्विदिशात्मक सिंकिंग" का वर्णन बाद में किया गया है।

यह उपकरण जटिल है और कई अलग-अलग तरीकों से कार्य करता है। इसे सुरक्षित रूप से उपयोग करने के लिए और
प्रभावी ढंग से, आपको तीन बातें समझनी चाहिए: "--प्रतिकृति" का उद्देश्य, खोजना
अंतर, और मेजबानों को निर्दिष्ट करना। ये तीन अवधारणाएँ बारीकी से संबंधित और निर्धारित हैं
टूल कैसे चलेगा. निम्नलिखित संक्षिप्त तर्क है:

यदि डीएसएन के पास आंशिक रूप से है, तो केवल उस तालिका को सिंक करें:
यदि 1 डीएसएन:
यदि --सिंक-टू-मास्टर:
डीएसएन एक गुलाम है. इसके मास्टर से कनेक्ट करें और सिंक करें।
यदि 1 डीएसएन से अधिक:
पहला डीएसएन स्रोत है। प्रत्येक DSN को बारी-बारी से सिंक करें।
अन्यथा यदि --प्रतिकृति:
यदि --सिंक-टू-मास्टर:
डीएसएन एक गुलाम है. इसके मास्टर से जुड़ें, रिकॉर्ड ढूंढें
मतभेदों का, और समाधान।
अन्य:
डीएसएन मास्टर है. दास खोजें और प्रत्येक से जुड़ें,
मतभेदों के रिकॉर्ड ढूंढें और ठीक करें।
अन्य:
यदि केवल 1 डीएसएन और --सिंक-टू-मास्टर:
डीएसएन एक गुलाम है. इसके मास्टर से कनेक्ट करें, टेबल ढूंढें और
--डेटाबेस आदि के साथ फ़िल्टर करें, और प्रत्येक तालिका को मास्टर के साथ सिंक करें।
अन्य:
टेबल ढूंढें, --डेटाबेस आदि के साथ फ़िल्टर करें, और प्रत्येक को सिंक करें
पहले को डीएसएन.

पीटी-टेबल-सिंक दो तरीकों में से एक में चल सकता है: "--रेप्लिकेट" के साथ या बिना। डिफ़ॉल्ट है
"--रेप्लिकेट" के बिना चलाने के लिए जो पीटी-टेबल-सिंक को स्वचालित रूप से अंतर खोजने का कारण बनता है
कई एल्गोरिदम में से एक के साथ कुशलतापूर्वक (देखें "एल्गोरिदम")। वैकल्पिक रूप से, मान
यदि निर्दिष्ट किया गया है, तो "--रेप्लिकेट" पीटी-टेबल-सिंक को पहले से पाए गए अंतरों का उपयोग करने का कारण बनता है
पहले pt-table-checksum को अपने स्वयं के "--रेप्लिकेट" विकल्प के साथ चलाकर। कठोरता से
बोलते हुए, आपको "--रेप्लिकेट" का उपयोग करने की आवश्यकता नहीं है क्योंकि पीटी-टेबल-सिंक अंतर ढूंढ सकता है,
लेकिन कई लोग "--रेप्लिकेट" का उपयोग करते हैं, उदाहरण के लिए, वे नियमित रूप से पीटी-टेबल का उपयोग करके चेकसम करते हैं-
चेकसम फिर पीटी-टेबल-सिंक के साथ आवश्यकतानुसार मतभेदों को ठीक करें। यदि आप अनिश्चित हैं, तो प्रत्येक को पढ़ें
टूल का दस्तावेज़ीकरण सावधानीपूर्वक करें और स्वयं निर्णय लें, या किसी विशेषज्ञ से परामर्श लें।

भले ही "--रेप्लिकेट" का उपयोग किया गया हो या नहीं, आपको यह निर्दिष्ट करना होगा कि कौन सा होस्ट करना है
साथ-साथ करना। दो तरीके हैं: "--सिंक-टू-मास्टर" के साथ या बिना। निर्दिष्ट करना
"--सिंक-टू-मास्टर" पीटी-टेबल-सिंक को कमांड लाइन पर एक और केवल स्लेव डीएसएन की अपेक्षा करता है।
टूल स्वचालित रूप से स्लेव के मास्टर की खोज करेगा और उसे सिंक करेगा ताकि उसका डेटा हो
उसके स्वामी के समान। यह तब मास्टर पर परिवर्तन करके पूरा किया जाता है
प्रतिकृति के माध्यम से प्रवाहित करें और इसके मतभेदों को हल करने के लिए दास को अद्यतन करें। Be सावधान
यद्यपि: यद्यपि यह विकल्प एकल दास को निर्दिष्ट और सिंक करता है, यदि अन्य दास हैं
उसी मास्टर पर, वे दास के लिए इच्छित परिवर्तनों को प्रतिकृति के माध्यम से प्राप्त करेंगे
जिसे आप सिंक करने का प्रयास कर रहे हैं.

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

कमांड लाइन पर प्रत्येक होस्ट को DSN के रूप में निर्दिष्ट किया गया है। पहला डीएसएन (या मामलों के लिए केवल डीएसएन)।
जैसे "--सिंक-टू-मास्टर") अन्य डीएसएन के लिए डिफ़ॉल्ट मान प्रदान करता है, चाहे वे अन्य डीएसएन हों
कमांड लाइन पर निर्दिष्ट होते हैं या टूल द्वारा स्वतः खोजे जाते हैं। तो इस उदाहरण में,

पीटी-टेबल-सिंक --निष्पादित करें h=host1,u=msandbox,p=msandbox h=host2

होस्ट2 डीएसएन को होस्ट1 डीएसएन से "यू" और "पी" डीएसएन भाग प्राप्त होते हैं। उपयोग
"--एक्सप्लेन-होस्ट्स" विकल्प यह देखने के लिए कि पीटी-टेबल-सिंक किस प्रकार दिए गए डीएसएन की व्याख्या करेगा
कमांड लाइन।

आउटपुट


यदि आप "--verbose" विकल्प निर्दिष्ट करते हैं, तो आपको अंतरों के बारे में जानकारी दिखाई देगी
टेबलों के बीच. प्रति टेबल एक पंक्ति है. प्रत्येक सर्वर अलग से मुद्रित होता है. के लिए
उदाहरण,

# सिंक किया जा रहा है h=host1,D=test,t=test1
# डिलीट रिप्लेस इंसर्ट अपडेट एल्गोरिदम स्टार्ट एंड एग्जिट डेटाबेस.टेबल
# 0 0 3 0 खंड 13:00:00 13:00:17 2 परीक्षण.परीक्षण1

होस्ट1 पर टेबल test.test1 को सिंक्रोनाइज़ करने के लिए 3 "INSERT" स्टेटमेंट की आवश्यकता होती है और इसमें इसका उपयोग किया जाता है
चंक एल्गोरिथम ("एल्गोरिदम" देखें)। इस तालिका के लिए सिंक ऑपरेशन 13:00:00 बजे शुरू हुआ
और 17 सेकंड बाद समाप्त हुआ (स्रोत होस्ट पर "अभी ()" से लिया गया समय)। क्योंकि
अंतर पाया गया, इसका "EXIT STATUS" 2 था।

यदि आप "--प्रिंट" विकल्प निर्दिष्ट करते हैं, तो आपको स्क्रिप्ट के वास्तविक SQL कथन दिखाई देंगे
यदि "--execute" भी निर्दिष्ट है तो तालिका को सिंक्रनाइज़ करने के लिए उपयोग करता है।

यदि आप SQL कथन देखना चाहते हैं जिसका उपयोग पीटी-टेबल-सिंक खंडों का चयन करने के लिए कर रहा है,
निबल्स, पंक्तियाँ इत्यादि, फिर एक बार "--प्रिंट" और दो बार "--वर्बोज़" निर्दिष्ट करें। ध्यान से
हालाँकि: यह बहुत सारे SQL स्टेटमेंट प्रिंट कर सकता है।

ऐसे मामले हैं जहां "INSERT", "UPDATE" या "DELETE" कथनों का कोई संयोजन नहीं हो सकता है
कुछ अद्वितीय कुंजी का उल्लंघन किए बिना मतभेदों को हल करें। उदाहरण के लिए, मान लीजिए कि वहाँ एक है
कॉलम ए पर प्राथमिक कुंजी और कॉलम बी पर एक अद्वितीय कुंजी। फिर इन्हें सिंक करने का कोई तरीका नहीं है
सीधे अद्यतन विवरण वाली दो तालिकाएँ:

+---+---+ +---+---+
| ए | बी | | ए | बी |
+---+---+ +---+---+
| 1 | 2 | | 1 | 1 |
| 2 | 1 | | 2 | 2 |
+---+---+ +---+---+

इस मामले में टूल क्वेरी को "हटाएं" और "प्रतिस्थापित करें" के रूप में पुनः लिखता है। यह स्वचालित रूप से है
पहले सूचकांक उल्लंघन के बाद संभाला गया, इसलिए आपको इसके बारे में चिंता करने की ज़रूरत नहीं है।

किसी भी मास्टर-मास्टर सेटअप में पीटी-टेबल-सिंक का उपयोग करते समय सावधान रहें। मास्टर-मास्टर प्रतिकृति
यह स्वाभाविक रूप से मुश्किल है, और गलतियाँ करना आसान है। आपको यह सुनिश्चित करना होगा कि आप उपयोग कर रहे हैं
मास्टर-मास्टर प्रतिकृति के लिए उपकरण सही ढंग से। के सिंहावलोकन के लिए "सारांश" देखें
सही उपयोग.

उन तालिकाओं से भी सावधान रहें जिनमें "ON DELETE" या "ON" के साथ विदेशी कुंजी बाधाएं हैं
अद्यतन" परिभाषाएँ क्योंकि इससे चाइल्ड टेबल पर अनपेक्षित परिवर्तन हो सकते हैं। देखें
"--[नहीं]चेक-चाइल्ड-टेबल"।

सामान्य तौर पर, यह टूल तब सबसे उपयुक्त होता है जब आपकी तालिकाओं में प्राथमिक कुंजी या अद्वितीय अनुक्रमणिका होती है।
हालाँकि यह प्राथमिक कुंजी या अद्वितीय सूचकांक की कमी वाली तालिकाओं में डेटा को सिंक्रनाइज़ कर सकता है, लेकिन ऐसा हो सकता है
उस डेटा को किसी अन्य माध्यम से सिंक्रनाइज़ करना सर्वोत्तम होगा।

प्रतिकृति सुरक्षा


प्रतिकृति मास्टर और स्लेव को सुरक्षित रूप से सिंक्रनाइज़ करना सामान्य तौर पर एक गैर-मामूली समस्या है।
सोचने के लिए सभी प्रकार के मुद्दे हैं, जैसे डेटा बदलने वाली अन्य प्रक्रियाएं,
दास पर डेटा बदलने की कोशिश कर रहा है, चाहे गंतव्य और स्रोत मास्टर-मास्टर हों
जोड़ी, और भी बहुत कुछ।

सामान्य तौर पर, ऐसा करने का सुरक्षित तरीका मास्टर पर डेटा बदलना है, और परिवर्तन करना है
किसी भी अन्य परिवर्तन की तरह दास की प्रतिकृति के माध्यम से प्रवाहित करें। हालाँकि, यह तभी काम करता है जब
मास्टर पर तालिका में REPLACE करना संभव है। REPLACE केवल तभी काम करता है जब कोई हो
तालिका पर अद्वितीय सूचकांक (अन्यथा यह सामान्य INSERT की तरह ही कार्य करता है)।

यदि आपकी तालिका में अद्वितीय कुंजियाँ हैं, तो आपको "--सिंक-टू-मास्टर" और/या "--रेप्लिकेट" का उपयोग करना चाहिए
किसी दास को उसके स्वामी के साथ समन्वयित करने के विकल्प। यह आम तौर पर सही काम करेगा. कब
टेबल पर कोई अद्वितीय कुंजी नहीं है, डेटा को बदलने के अलावा कोई विकल्प नहीं है
स्लेव, और पीटी-टेबल-सिंक यह पता लगाएगा कि आप ऐसा करने का प्रयास कर रहे हैं। यह शिकायत करेगा और
जब तक आप "--नो-चेक-स्लेव" निर्दिष्ट नहीं करते तब तक मरें (देखें "--[नो]चेक-स्लेव")।

यदि आप मास्टर-मास्टर जोड़ी पर प्राथमिक या अद्वितीय कुंजी के बिना किसी तालिका को सिंक कर रहे हैं, तो आप
गंतव्य सर्वर पर डेटा बदलना होगा। इसलिए, आपको निर्दिष्ट करने की आवश्यकता है
सुरक्षा के लिए "--नो-बिन-लॉग" (देखें "--[नो]बिन-लॉग")। यदि आप नहीं करते हैं, तो आप जो परिवर्तन करते हैं
गंतव्य सर्वर वापस स्रोत सर्वर पर प्रतिकृति बना देगा और वहां डेटा बदल देगा!

मास्टर-मास्टर जोड़ी पर करने के लिए आम तौर पर सुरक्षित चीज़ "--सिंक-टू-मास्टर" का उपयोग करना है
विकल्प ताकि आप गंतव्य सर्वर पर डेटा न बदलें। आपको भी इसकी आवश्यकता होगी
पीटी-टेबल-सिंक को डेटा बदलने की शिकायत से बचाने के लिए "--नो-चेक-स्लेव" निर्दिष्ट करें
एक गुलाम पर.

एल्गोरिदम


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

टुकड़ा
एक सूचकांक ढूँढता है जिसका पहला कॉलम संख्यात्मक है (तिथि और समय प्रकार सहित), और
कॉलम के मानों की सीमा को लगभग "--चंक-आकार" पंक्तियों के टुकड़ों में विभाजित करता है।
संपूर्ण खंड का चेकसमिंग करके एक समय में एक खंड को सिंक करता है। यदि टुकड़ा अलग है
स्रोत और गंतव्य, पंक्तियों को खोजने के लिए प्रत्येक खंड की पंक्तियों को व्यक्तिगत रूप से चेकसम करता है
भिन्न होते हैं।

यह तब कुशल होता है जब कॉलम में टुकड़ों को समाप्त करने के लिए पर्याप्त कार्डिनैलिटी होती है
सही साइज़ के बारे में.

प्रारंभिक प्रति-चंक चेकसम काफी छोटा है और इसके परिणामस्वरूप न्यूनतम नेटवर्क ट्रैफ़िक होता है
और स्मृति खपत. यदि किसी हिस्से की पंक्तियों की जांच की जानी है, तो केवल प्राथमिक कुंजी
कॉलम और चेकसम नेटवर्क पर भेजे जाते हैं, पूरी पंक्ति पर नहीं। यदि एक पंक्ति है
भिन्न पाए जाने पर पूरी पंक्ति लाई जाएगी, लेकिन उससे पहले नहीं।

ध्यान दें कि यदि सभी मानों वाले चार कॉलम को खंडित किया जाए तो यह एल्गोरिदम काम नहीं करेगा
उसी चरित्र से शुरुआत करें. उस स्थिति में, टूल बाहर निकल जाएगा और चुनने का सुझाव देगा
अलग एल्गोरिदम.

कुतरना
एक सूचकांक ढूंढता है और सूचकांक को "--चंक-आकार" पंक्तियों के निश्चित आकार के निबल्स में चढ़ता है,
एक गैर-बैकट्रैकिंग एल्गोरिदम का उपयोग करना (इस एल्गोरिदम पर अधिक जानकारी के लिए पीटी-आर्काइवर देखें)। यह
"चंक" के समान है, लेकिन प्रत्येक की सीमाओं की पूर्व-गणना करने के बजाय
सूचकांक कार्डिनैलिटी के आधार पर तालिका का टुकड़ा, यह प्रत्येक निबल को परिभाषित करने के लिए "LIMIT" का उपयोग करता है
ऊपरी सीमा, और निचली सीमा को परिभाषित करने के लिए पिछले निबल की ऊपरी सीमा।

यह चरणों में काम करता है: एक क्वेरी उस पंक्ति को ढूंढती है जो अगले निबल के ऊपरी भाग को परिभाषित करेगी
सीमा, और अगली क्वेरी संपूर्ण निबल का चेकसम करती है। अगर कुतरना अलग है
स्रोत और गंतव्य के बीच, यह "चंक" की तरह, पंक्ति-दर-पंक्ति जांच करता है
करता है.

समूह द्वारा
एक COUNT(*) कॉलम जोड़कर, सभी कॉलमों द्वारा समूहीकृत संपूर्ण तालिका का चयन करता है।
सभी स्तंभों की तुलना करता है, और यदि वे समान हैं, तो COUNT(*) स्तंभ के मान की तुलना करता है
निर्धारित करें कि गंतव्य में कितनी पंक्तियाँ सम्मिलित करनी हैं या हटानी हैं। टेबलों पर काम करता है
बिना किसी प्राथमिक कुंजी या अद्वितीय अनुक्रमणिका के।

धारा
संपूर्ण तालिका को एक बड़ी स्ट्रीम में चुनता है और सभी स्तंभों की तुलना करता है। सभी का चयन करता है
कॉलम. अन्य एल्गोरिदम की तुलना में बहुत कम कुशल, लेकिन जब कोई नहीं होता तो काम करता है
उनके उपयोग के लिए उपयुक्त सूचकांक।

भविष्य की योजनाएँ
भविष्य के एल्गोरिदम की संभावनाएं TempTable हैं (जिसे मैं मूल रूप से बॉटम-अप कहता हूं
इस टूल के पुराने संस्करणों में), ड्रिलडाउन (जिसे मैं मूल रूप से टॉप-डाउन कहता था), और
GroupByPrefix (SqlYOG जॉब एजेंट कैसे काम करता है इसके समान)। प्रत्येक एल्गोरिदम में ताकत होती है
और कमजोरियाँ. यदि आप खोजने के लिए अपनी पसंदीदा तकनीक लागू करना चाहते हैं
संभवतः भिन्न-भिन्न सर्वरों पर डेटा के दो स्रोतों के बीच अंतर, मैं इसके लिए इच्छुक हूँ
मदद करना। एल्गोरिदम एक सरल इंटरफ़ेस का पालन करता है जिससे लिखना काफी आसान हो जाता है
अपनी खुद की।

द्विदिश सिंक करना


द्विदिश सिंकिंग एक नई, प्रायोगिक सुविधा है। इसे विश्वसनीय रूप से काम करने के लिए वहाँ हैं
कई सख्त सीमाएँ:

* केवल एक सर्वर को अन्य स्वतंत्र सर्वर से सिंक करते समय काम करता है
* प्रतिकृति के साथ किसी भी तरह से काम नहीं करता
* आवश्यक है कि तालिकाएँ चंक एल्गोरिथम के साथ खंडित हों
* एन-वे नहीं है, केवल एक समय में दो सर्वरों के बीच द्विदिशात्मक है
* DELETE परिवर्तनों को संभाल नहीं पाता

उदाहरण के लिए, मान लें कि हमारे पास तीन सर्वर हैं: c1, r1, r2। c1 केंद्रीय सर्वर है, a
अन्य सर्वरों के लिए छद्म-मास्टर (जैसे कि r1 और r2, c1 के गुलाम नहीं हैं)। r1 और r2 हैं
दूरस्थ सर्वर. तालिका foo में पंक्तियों को अद्यतन किया जाता है और तीनों सर्वरों पर डाला जाता है और हम
सभी सर्वरों के बीच सभी परिवर्तनों को सिंक्रनाइज़ करना चाहते हैं। टेबल फू में कॉलम हैं:

आईडी int प्राथमिक कुंजी
टीएस टाइमस्टैम्प स्वतः अपडेट हो गया
नाम वर्चर

ऑटो-इंक्रीमेंट ऑफ़सेट का उपयोग किया जाता है ताकि किसी भी सर्वर से नई पंक्तियाँ परस्पर विरोधी न बनें
प्राथमिक कुंजी (आईडी) मान। सामान्य तौर पर, ts कॉलम द्वारा निर्धारित नई पंक्तियाँ लें
प्राथमिकता जब द्विदिश सिंक के दौरान एक ही लेकिन भिन्न पंक्ति पाई जाती है। "वही
लेकिन भिन्न" का अर्थ है कि दो पंक्तियों में समान प्राथमिक कुंजी (आईडी) मान है लेकिन भिन्न है
किसी अन्य कॉलम के लिए मान, जैसे इस उदाहरण में नाम कॉलम। समान लेकिन भिन्न
झगड़ों का समाधान "संघर्ष" से होता है। एक संघर्ष प्रतिस्पर्धा के कुछ स्तंभों की तुलना करता है
"विजेता" निर्धारित करने के लिए पंक्तियाँ। विजेता पंक्ति स्रोत बन जाती है और उसके मूल्यों का उपयोग किया जाता है
दूसरी पंक्ति को अद्यतन करने के लिए.

द्विदिश समन्वयन प्राप्त करने के लिए उपयोग किए जाने वाले तीन स्तंभों के बीच सूक्ष्म अंतर हैं
आपको इससे परिचित होना चाहिए: खंड स्तंभ ("--खंड-स्तंभ"), तुलना स्तंभ
("--कॉलम"), और संघर्ष कॉलम ("--संघर्ष-कॉलम")। खंड स्तंभ का ही उपयोग किया जाता है
मेज का टुकड़ा करना; उदाहरण के लिए "जहां आईडी >= 5 और आईडी <10"। टुकड़ों को चेकसम किया जाता है और कब
चंक चेकसम एक अंतर प्रकट करता है, उपकरण उस चंक और चेकसम में पंक्तियों का चयन करता है
प्रत्येक पंक्ति के लिए "--कॉलम"। यदि किसी कॉलम का चेकसम भिन्न है, तो पंक्तियों में एक या अधिक हैं
परस्पर विरोधी स्तंभ मान. पारंपरिक यूनिडायरेक्शनल सिंक में, संघर्ष एक विवाद है
बिंदु क्योंकि इसे संपूर्ण गंतव्य पंक्ति को अद्यतन करके ही हल किया जा सकता है
स्रोत पंक्ति के मान. हालाँकि, एक द्विदिश सिंक में, "--संघर्ष-स्तंभ" (in
नीचे दिए गए अन्य "--संघर्ष-*" विकल्पों की सूची के अनुसार) की तुलना यह निर्धारित करने के लिए की जाती है
पंक्ति "सही" या "आधिकारिक" है; यह पंक्ति "स्रोत" बन जाती है।

सभी तीन सर्वरों को पूरी तरह से सिंक करने के लिए, पीटी-टेबल-सिंक के दो रन की आवश्यकता होती है। पहला
सिंक c1 और r1 चलाएँ, फिर r1 से किसी भी बदलाव सहित c2 और r1 को सिंक करें। इस बिंदु पर c1
और r2 पूरी तरह से सिंक में हैं, लेकिन r1 में r2 से कोई बदलाव नहीं है क्योंकि c1 में ऐसा नहीं हुआ
जब इसे और r1 को समन्वयित किया गया तो ये परिवर्तन हुए। इसलिए एक दूसरे रन की आवश्यकता है जो सिंक हो
सर्वर उसी क्रम में हैं, लेकिन इस बार जब c1 और r1 समन्वयित होते हैं तो r1 को r2 के परिवर्तन मिलते हैं।

उपकरण एन-वे को सिंक नहीं करता है, केवल पहले दिए गए डीएसएन के बीच द्विदिशात्मक रूप से सिंक करता है
कमांड लाइन और प्रत्येक बाद के डीएसएन को बारी-बारी से। तो इस उदाहरण में उपकरण चलाया जाएगा
दो बार इस प्रकार:

पीटी-टेबल-सिंक --द्विदिशात्मक h=c1 h=r1 h=r2

"--द्विदिशात्मक" विकल्प इस सुविधा को सक्षम बनाता है और विभिन्न विवेक जांच का कारण बनता है
प्रदर्शन किया। आपको अन्य विकल्प निर्दिष्ट करने होंगे जो पीटी-टेबल-सिंक को समाधान करने का तरीका बताते हैं
समान लेकिन भिन्न पंक्तियों के लिए विरोध। ये विकल्प हैं:

* --संघर्ष-स्तंभ
* --संघर्ष-तुलना
* --संघर्ष-मूल्य
* --संघर्ष-सीमा
* --संघर्ष-त्रुटि"> (वैकल्पिक)

"--निष्पादित" से पहले इस विकल्प का परीक्षण करने के लिए "--प्रिंट" का उपयोग करें। मुद्रित SQL कथन होंगे
ऐसी टिप्पणियाँ हैं जिनमें कहा गया है कि यदि आपने इसका उपयोग किया तो कथन किस होस्ट पर निष्पादित किया जाएगा
"--निष्पादित करना"।

तकनीकी पक्ष नोट: पहला डीएसएन हमेशा "बाएं" सर्वर होता है और अन्य डीएसएन होते हैं
हमेशा "सही" सर्वर. चूँकि कोई भी सर्वर इसका स्रोत या गंतव्य बन सकता है
उन्हें "src" और "dst" के रूप में सोचना भ्रमित करने वाला है। इसलिए, उन्हें सामान्यतः संदर्भित किया जाता है
बाएँ और दाएँ के रूप में। इसे याद रखना आसान है क्योंकि पहला डीएसएन हमेशा बाईं ओर होता है
कमांड लाइन पर अन्य सर्वर डीएसएन का।

बाहर निकलें स्थिति


पीटी- होने पर निकास स्थितियाँ निम्नलिखित हैं (जिन्हें रिटर्न मान या रिटर्न कोड भी कहा जाता है)
टेबल-सिंक समाप्त होता है और बाहर निकल जाता है।

स्थिति का अर्थ
====== ========================================== ===========
0 सफलता.
1 आंतरिक त्रुटि।
2 कम से कम एक टेबल के गंतव्य पर मतभेद था।
3 1 और 2 का संयोजन.

विकल्प


"--प्रिंट", "--निष्पादित करें", या "--ड्राई-रन" में से कम से कम एक निर्दिष्ट करें।

"--कहां" और "--रेप्लिकेट" परस्पर अनन्य हैं।

यह उपकरण अतिरिक्त आदेश-पंक्ति तर्क स्वीकार करता है। "सिनॉप्सिस" और उपयोग का संदर्भ लें
विवरण के लिए जानकारी।

--एल्गोरिदम
प्रकार: स्ट्रिंग; डिफ़ॉल्ट: चंक, निबल, ग्रुपबाय, स्ट्रीम

तालिकाओं की तुलना करते समय प्राथमिकता के क्रम में उपयोग करने के लिए एल्गोरिदम।

प्रत्येक तालिका के लिए, पीटी-टेबल-सिंक जाँच करेगा कि तालिका को दिए गए के साथ समन्वयित किया जा सकता है या नहीं
एल्गोरिदम उसी क्रम में, जिस क्रम में वे दिए गए हैं। पहला एल्गोरिदम जो सिंक कर सकता है
तालिका का प्रयोग किया जाता है। "एल्गोरिदम" देखें।

--आस्क-पास
MySQL से कनेक्ट करते समय पासवर्ड के लिए संकेत दें।

--द्विदिशात्मक
पहले और बाद के होस्ट के बीच द्विदिशीय सिंक सक्षम करें।

अधिक जानकारी के लिए "द्विदिशीय सिंकिंग" देखें।

--[नहीं]बिन-लॉग
डिफ़ॉल्ट: हाँ

बाइनरी लॉग ("SET SQL_LOG_BIN=1") पर लॉग इन करें।

"--नो-बिन-लॉग" निर्दिष्ट करने से "SET SQL_LOG_BIN=0" हो जाएगा।

--बफर-इन-mysql
MySQL को इसकी मेमोरी में क्वेरीज़ को बफर करने का निर्देश दें।

यह विकल्प तुलना क्वेरी में "SQL_BUFFER_RESULT" विकल्प जोड़ता है। यह
MySQL को प्रश्नों को निष्पादित करने और उन्हें आंतरिक रूप से एक अस्थायी तालिका में रखने का कारण बनता है
परिणामों को पीटी-टेबल-सिंक पर वापस भेजने से पहले। इस रणनीति का फायदा यह है
वह पीटी-टेबल-सिंक अंदर बहुत अधिक मेमोरी का उपयोग किए बिना वांछित पंक्तियों को ला सकता है
पर्ल प्रक्रिया, MySQL तालिका पर ताले जारी करते समय (विवाद को कम करने के लिए)।
अन्य प्रश्न)। नुकसान यह है कि यह MySQL सर्वर पर अधिक मेमोरी का उपयोग करता है
बजाय.

आप शायद "--[no]buffer-to-client" को भी सक्षम छोड़ना चाहते हैं, क्योंकि बफ़रिंग
एक अस्थायी तालिका में और फिर यह सब पर्ल की स्मृति में लाना शायद मूर्खतापूर्ण है
बात करने के लिए। यह विकल्प ग्रुपबी और स्ट्रीम एल्गोरिदम के लिए सबसे उपयोगी है, जो
सर्वर से बहुत सारा डेटा प्राप्त हो सकता है।

--[नहीं]बफर-टू-क्लाइंट
डिफ़ॉल्ट: हाँ

तुलना करते समय MySQL से पंक्तियाँ एक-एक करके प्राप्त करें।

यह विकल्प "mysql_use_result" को सक्षम करता है जिसके कारण MySQL चयनित पंक्तियों को चालू रखता है
सर्वर जब तक उपकरण उन्हें प्राप्त नहीं कर लेता। यह टूल को कम मेमोरी का उपयोग करने की अनुमति देता है लेकिन
सर्वर पर पंक्तियों को अधिक समय तक लॉक रखा जा सकता है।

यदि यह विकल्प "--no-buffer-to-client" निर्दिष्ट करके अक्षम कर दिया गया है
"mysql_store_result" का उपयोग किया जाता है जिसके कारण MySQL सभी चयनित पंक्तियों को टूल पर भेजता है
तुरंत। इसके परिणामस्वरूप परिणाम "कर्सर" कम समय के लिए खुला रह सकता है
सर्वर पर, लेकिन यदि तालिकाएँ बड़ी हैं, तो इसमें वैसे भी लंबा समय लग सकता है, और उपयोग किया जा सकता है
आपकी सारी स्मृति.

अधिकांश गैर-तुच्छ डेटा आकारों के लिए, आप इस विकल्प को सक्षम छोड़ना चाहेंगे।

जब "--द्विदिशात्मक" का उपयोग किया जाता है तो यह विकल्प अक्षम हो जाता है।

--चारसेट
संक्षिप्त रूप: -ए; टाइप करें: स्ट्रिंग

डिफ़ॉल्ट वर्ण सेट। यदि मान utf8 है, तो पर्ल के बिनमोड को STDOUT पर utf8 पर सेट करता है,
mysql_enable_utf8 विकल्प को DBD::mysql में पास करता है, और बाद में SET NAMES UTF8 चलाता है
MySQL से कनेक्ट कर रहा है। कोई अन्य मान utf8 परत के बिना STDOUT पर बिनमोड सेट करता है,
और MySQL से कनेक्ट होने के बाद SET NAMES चलाता है।

--[नहीं]चेक-चाइल्ड-टेबल
डिफ़ॉल्ट: हाँ

जांचें कि क्या "--execute" चाइल्ड टेबल पर प्रतिकूल प्रभाव डालेगा। जब "--प्रतिस्थापित करें",
"--रेप्लिकेट", या "--सिंक-टू-मास्टर" निर्दिष्ट है, टूल का उपयोग करके तालिकाओं को सिंक किया जा सकता है
"प्रतिस्थापित करें" कथन. यदि समन्वयित की जा रही किसी तालिका में "ON DELETE" वाली चाइल्ड तालिकाएँ हैं
कैस्केड", "अपडेट कैस्केड पर", या "अपडेट सेट शून्य पर", उपकरण एक त्रुटि प्रिंट करता है और
तालिका को छोड़ देता है क्योंकि "प्रतिस्थापन" "हटाएं" और फिर "सम्मिलित करें" बन जाता है, इसलिए "हटाएं" होगा
चाइल्ड टेबल पर कैस्केड करें और उसकी पंक्तियाँ हटाएँ। सबसे खराब स्थिति में, इसे हटाया जा सकता है
चाइल्ड टेबल में सभी पंक्तियाँ!

इस चेक को अक्षम करने के लिए "--नो-चेक-चाइल्ड-टेबल्स" निर्दिष्ट करें। पूरी तरह से बचना है
चाइल्ड टेबल को प्रभावित करते हुए, "--no-foreign-key-checks" भी निर्दिष्ट करें, इसलिए MySQL ऐसा नहीं करेगा
किसी भी ऑपरेशन को पैरेंट से चाइल्ड टेबल तक कैस्केड करें।

यह चेक केवल तभी तैयार किया जाता है जब "--निष्पादित करें" और "--प्रतिस्थापन", "--प्रतिकृति", या में से एक हो
"--सिंक-टू-मास्टर" निर्दिष्ट है। "--प्रिंट" चाइल्ड टेबल की जांच नहीं करता है।

त्रुटि संदेश केवल "ऑन डिलीट कैस्केड" के साथ मिली पहली चाइल्ड टेबल को प्रिंट करता है।
"अपडेट कैस्केड पर", या "अपडेट सेट शून्य पर" विदेशी कुंजी बाधा। हो सकता है
अन्य प्रभावित चाइल्ड टेबल.

--[नहीं]चेक-मास्टर
डिफ़ॉल्ट: हाँ

"--सिंक-टू-मास्टर" के साथ, यह सत्यापित करने का प्रयास करें कि पता लगाया गया मास्टर वास्तविक मास्टर है।

--[नहीं]चेक-गुलाम
डिफ़ॉल्ट: हाँ

जांचें कि क्या गंतव्य सर्वर गुलाम है।

यदि गंतव्य सर्वर गुलाम है, तो उस पर परिवर्तन करना आम तौर पर असुरक्षित है।
हालाँकि, कभी-कभी आपको ऐसा करना पड़ता है; "--रिप्लेस" तब तक काम नहीं करेगा जब तक कोई अद्वितीय अनुक्रमणिका न हो,
उदाहरण के लिए, इसलिए आप उस परिदृश्य में मास्टर में परिवर्तन नहीं कर सकते। डिफ़ॉल्ट रूप से पीटी-
यदि आप किसी स्लेव पर डेटा बदलने का प्रयास करते हैं तो टेबल-सिंक शिकायत करेगा। उल्लिखित करना
इस चेक को अक्षम करने के लिए "--नो-चेक-स्लेव"। अपने जोखिम पर इसका इस्तेमाल करो।

--[नहीं]चेक-ट्रिगर
डिफ़ॉल्ट: हाँ

जांचें कि गंतव्य तालिका पर कोई ट्रिगर परिभाषित नहीं हैं।

ट्रिगर्स MySQL v5.0.2 में पेश किए गए थे, इसलिए पुराने संस्करणों के लिए यह विकल्प नहीं है
प्रभाव क्योंकि ट्रिगर्स की जाँच नहीं की जाएगी।

--चंक-कॉलम
टाइप करें: स्ट्रिंग

इस कॉलम पर तालिका को खंडित करें।

--चंक-सूचकांक
टाइप करें: स्ट्रिंग

इस सूचकांक का उपयोग करके तालिका को खंडित करें।

--खंड आकार
प्रकार: स्ट्रिंग; डिफ़ॉल्ट: 1000

पंक्तियों की संख्या या प्रति खंड डेटा आकार।

"चंक" और "निबल" एल्गोरिदम के लिए पंक्तियों के प्रत्येक टुकड़े का आकार। आकार कर सकते हैं
या तो पंक्तियों की संख्या हो, या डेटा का आकार हो। डेटा आकार को प्रत्यय के साथ निर्दिष्ट किया जाता है
k=किबिबाइट्स, M=मेबिबाइट्स, G=गिबिबाइट्स। डेटा आकार को कई पंक्तियों में परिवर्तित किया जाता है
औसत पंक्ति लंबाई से विभाजित करके.

--स्तंभ
संक्षिप्त रूप: -सी; प्रकार: सरणी

स्तंभों की इस अल्पविराम से अलग की गई सूची की तुलना करें।

--कॉन्फ़िगरेशन
प्रकार: सरणी

कॉन्फिग फाइलों की इस अल्पविराम से अलग की गई सूची को पढ़ें; यदि निर्दिष्ट किया गया है, तो यह पहला होना चाहिए
कमांड लाइन पर विकल्प।

--संघर्ष-स्तंभ
टाइप करें: स्ट्रिंग

जब पंक्तियाँ "--द्विदिशात्मक" सिंक के दौरान संघर्ष करती हैं तो इस कॉलम की तुलना करें।

जब एक समान लेकिन भिन्न पंक्ति पाई जाती है तो प्रत्येक पंक्ति से इस कॉलम का मान होता है
"--संघर्ष-तुलना", "--संघर्ष-मूल्य" और के अनुसार तुलना की गई
"--संघर्ष-सीमा" यह निर्धारित करने के लिए कि किस पंक्ति में सही डेटा है और बन जाता है
स्रोत। कॉलम किसी भी प्रकार का हो सकता है जिसके लिए उपयुक्त हो
"--संघर्ष-तुलना" (उदाहरण के लिए, बूँदों को छोड़कर यह लगभग सभी प्रकार की है)।

यह विकल्प केवल "--द्विदिशात्मक" के साथ काम करता है। अधिक जानकारी के लिए "द्विदिशीय समन्वयन" देखें
जानकारी.

--संघर्ष-तुलना
टाइप करें: स्ट्रिंग

स्रोत के रूप में इस संपत्ति के साथ "--संघर्ष-स्तंभ" चुनें।

विकल्प प्रभावित करता है कि परस्पर विरोधी पंक्तियों से "--संघर्ष-स्तंभ" मान कैसे हैं
तुलना की गई। संभावित तुलनाएँ इन MAGIC_comparisons में से एक हैं:

नवीनतम|पुराना|महानतम|न्यूनतम|बराबर|मिलान

तुलना के साथ पंक्ति का चयन करता है
========== ====================================== ================
नवीनतम नवीनतम अस्थायी--संघर्ष-स्तंभ मूल्य
सबसे पुराना सबसे पुराना लौकिक--संघर्ष-स्तंभ मूल्य
महानतम महानतम संख्यात्मक "--संघर्ष-स्तंभ मान
न्यूनतम न्यूनतम संख्यात्मक--संघर्ष-स्तंभ मान
--संघर्ष-स्तंभ मान के बराबर --संघर्ष-मूल्य के बराबर
मिलान --संघर्ष-स्तंभ मान पर्ल रेगेक्स पैटर्न से मेल खाता है
--संघर्ष-मूल्य

यह विकल्प केवल "--द्विदिशात्मक" के साथ काम करता है। अधिक जानकारी के लिए "द्विदिशीय समन्वयन" देखें
जानकारी.

--संघर्ष-त्रुटि
प्रकार: स्ट्रिंग; डिफ़ॉल्ट: चेतावनी

न सुलझने वाले विवादों और संघर्ष संबंधी त्रुटियों की रिपोर्ट कैसे करें

यह विकल्प बदलता है कि किसी विरोध का समाधान न हो पाने पर उपयोगकर्ता को कैसे सूचित किया जाए
किसी प्रकार की त्रुटि का कारण बनता है। संभावित मान हैं:

* चेतावनी: न सुलझने वाले संघर्ष के बारे में एसटीडीईआरआर को एक चेतावनी प्रिंट करें
* मरें: मरें, सिंक करना बंद करें, और STDERR को एक चेतावनी प्रिंट करें

यह विकल्प केवल "--द्विदिशात्मक" के साथ काम करता है। अधिक जानकारी के लिए "द्विदिशीय समन्वयन" देखें
जानकारी.

--संघर्ष-सीमा
टाइप करें: स्ट्रिंग

वह राशि जिससे एक "--संघर्ष-स्तंभ" दूसरे से अधिक होना चाहिए।

"--संघर्ष-सीमा" पूर्ण होने पर किसी संघर्ष को हल होने से रोकती है
दो "--संघर्ष-स्तंभ" मानों के बीच का अंतर इस राशि से कम है। के लिए
उदाहरण के लिए, यदि दो "--संघर्ष-कॉलम" में टाइमस्टैम्प मान "2009-12-01 12:00:00" हैं और
"2009-12-01 12:05:00" अंतर 5 मिनट है। यदि "--संघर्ष-सीमा" सेट है
"5 मी" पर विवाद हल हो जाएगा, लेकिन यदि "--संघर्ष-सीमा" को "6 मी" पर सेट किया जाता है
संघर्ष सुलझने में विफल रहेगा क्योंकि अंतर अधिक या बराबर नहीं है
6 मिनट तक. इस बाद वाले मामले में, "--संघर्ष-त्रुटि" विफलता की रिपोर्ट करेगा।

यह विकल्प केवल "--द्विदिशात्मक" के साथ काम करता है। अधिक जानकारी के लिए "द्विदिशीय समन्वयन" देखें
जानकारी.

--संघर्ष-मूल्य
टाइप करें: स्ट्रिंग

निश्चित "--संघर्ष-तुलना" के लिए इस मान का उपयोग करें।

यह विकल्प "बराबर" और "मिलान" "--संघर्ष-तुलना" के लिए मान देता है।

यह विकल्प केवल "--द्विदिशात्मक" के साथ काम करता है। अधिक जानकारी के लिए "द्विदिशीय समन्वयन" देखें
जानकारी.

--डेटाबेस
संक्षिप्त रूप: -d; प्रकार: हैश

केवल डेटाबेस की इस अल्पविराम से अलग की गई सूची को सिंक करें।

एक सामान्य अनुरोध एक डेटाबेस से तालिकाओं को दूसरे डेटाबेस से तालिकाओं के साथ सिंक करना है
एक ही या भिन्न सर्वर पर. ये अभी संभव नहीं है. "--डेटाबेस" नहीं चलेगा
यह, और आप इसे DSN के D भाग के साथ भी नहीं कर सकते क्योंकि a की अनुपस्थिति में
तालिका नाम में यह माना गया है कि पूरे सर्वर को सिंक किया जाना चाहिए और केवल डी भाग को नियंत्रित किया जाना चाहिए
कनेक्शन का डिफ़ॉल्ट डेटाबेस.

--डिफ़ॉल्ट-फ़ाइल
संक्षिप्त रूप: -एफ; टाइप करें: स्ट्रिंग

दी गई फ़ाइल से केवल mysql विकल्प पढ़ें। आपको एक पूर्ण पथनाम देना होगा।

--पूर्वाभ्यास
विश्लेषण करें, उपयोग करने, प्रिंट करने और बाहर निकलने के लिए सिंक एल्गोरिदम का निर्णय लें।

इसका तात्पर्य "--verbose" है ताकि आप परिणाम देख सकें। परिणाम समान आउटपुट में हैं
प्रारूप जिसे आप वास्तव में टूल चलाने पर देखेंगे, लेकिन इसके लिए शून्य होंगे
पंक्तियाँ प्रभावित. ऐसा इसलिए है क्योंकि उपकरण वास्तव में निष्पादित होता है, लेकिन उससे पहले ही रुक जाता है
किसी भी डेटा की तुलना करता है और केवल शून्य लौटाता है। शून्य का मतलब यह नहीं है कि कोई परिवर्तन नहीं है
निर्मित किया जाने के लिए।

--इंजन
संक्षिप्त रूप: -ई; प्रकार: हैश

केवल भंडारण इंजनों की इस अल्पविराम से अलग की गई सूची को सिंक करें।

--निष्पादित करना
तालिकाओं में समान डेटा बनाने के लिए क्वेरी निष्पादित करें।

यह विकल्प सभी प्रश्नों को निष्पादित करके पीटी-टेबल-सिंक को वास्तव में टेबल डेटा को सिंक करता है
इसे तालिका मतभेदों को हल करने के लिए बनाया गया है। इसलिए, la टेबल मर्जी be बदला हुआ!
और जब तक आप "--verbose" निर्दिष्ट नहीं करते, परिवर्तन चुपचाप किए जाएंगे। यदि यह हो तो
यह वह नहीं है जो आप चाहते हैं, "--प्रिंट" या "--ड्राई-रन" देखें।

--स्पष्ट करें-मेजबान
कनेक्शन जानकारी प्रिंट करें और बाहर निकलें।

उन होस्टों की एक सूची प्रिंट करें जिनसे पीटी-टेबल-सिंक सभी विभिन्न के साथ कनेक्ट होगा
कनेक्शन विकल्प, और बाहर निकलें।

--फ्लोट-परिशुद्धता
प्रकार: int

"फ्लोट" और "डबल" नंबर-टू-स्ट्रिंग रूपांतरण के लिए परिशुद्धता। फ्लोट और का कारण बनता है
दोहरे मानों को दशमलव बिंदु के बाद अंकों की निर्दिष्ट संख्या तक पूर्णांकित किया जाना चाहिए,
साथ गोल() MySQL में कार्य करें। इससे चेकसम बेमेल से बचने में मदद मिल सकती है
अलग-अलग MySQL पर समान मानों का अलग-अलग फ़्लोटिंग-पॉइंट प्रतिनिधित्व
संस्करण और हार्डवेयर। डिफ़ॉल्ट कोई पूर्णांकन नहीं है; मूल्यों को परिवर्तित किया जाता है
द्वारा तार CONCAT () फ़ंक्शन, और MySQL स्ट्रिंग प्रतिनिधित्व चुनता है। अगर आप
उदाहरण के लिए, 2 का मान निर्दिष्ट करें, फिर मान 1.008 और 1.009 को पूर्णांकित किया जाएगा
1.01, और चेकसम बराबर होगा।

--[नहीं]विदेशी-कुंजी-जाँच
डिफ़ॉल्ट: हाँ

विदेशी कुंजी जांच सक्षम करें ("SET FOREIGN_KEY_CHECKS=1")।

"--no-foreign-key-checks" निर्दिष्ट करने से "SET FOREIGN_KEY_CHECKS=0" हो जाएगा।

--समारोह
टाइप करें: स्ट्रिंग

आप चेकसम के लिए किस हैश फ़ंक्शन का उपयोग करना चाहेंगे.

डिफ़ॉल्ट "CRC32" है. अन्य अच्छे विकल्पों में "MD5" और "SHA1" शामिल हैं। यदि आपके पास है
"FNV_64" उपयोगकर्ता-परिभाषित फ़ंक्शन स्थापित करें, "pt-table-sync" इसका पता लगाएगा और
इसका उपयोग करना पसंद करते हैं, क्योंकि यह बिल्ट-इन की तुलना में बहुत तेज़ है। आप भी उपयोग कर सकते हैं
MURMUR_HASH यदि आपने वह उपयोगकर्ता-परिभाषित फ़ंक्शन स्थापित किया है। ये दोनों हैं
माटकिट के साथ वितरित किया गया। अधिक जानकारी और बेंचमार्क के लिए पीटी-टेबल-चेकसम देखें।

--मदद
मदद दिखाएं और बाहर निकलें।

--[नहीं]हेक्स-ब्लॉब
डिफ़ॉल्ट: हाँ

"हेक्स ()" "ब्लॉब", "टेक्स्ट" और "बाइनरी" कॉलम।

जब डेटा को सिंक करने के लिए क्वेरीज़ बनाने के लिए स्रोत से पंक्ति डेटा लाया जाता है (यानी
क्वेरीज़ को "--प्रिंट" के साथ देखा जाता है और "--निष्पादित" द्वारा निष्पादित किया जाता है, बाइनरी कॉलम लपेटे जाते हैं
in हेक्स() इसलिए बाइनरी डेटा अमान्य SQL कथन उत्पन्न नहीं करता है। तुम कर सकते हो
इस विकल्प को अक्षम करें लेकिन संभवतः आपको ऐसा नहीं करना चाहिए।

--मेज़बान
संक्षिप्त रूप: -एच; टाइप करें: स्ट्रिंग

होस्ट से कनेक्ट करें।

--उपेक्षा-कॉलम
प्रकार: हैश

तुलनाओं में स्तंभ नामों की इस अल्पविराम से अलग की गई सूची पर ध्यान न दें।

इस विकल्प के कारण स्तंभों की तुलना नहीं हो पाती. हालाँकि, यदि कोई पंक्ति निर्धारित की जाती है
तालिकाओं के बीच अंतर होने पर भी, उस पंक्ति के सभी कॉलम समन्वयित किए जाएंगे। (यह नहीं है
वर्तमान में केवल सिंक प्रक्रिया से कॉलम को बाहर करना संभव है
तुलना।)

--अनदेखा-डेटाबेस
प्रकार: हैश

डेटाबेस की इस अल्पविराम से अलग की गई सूची पर ध्यान न दें।

(सिस्टम डेटाबेस जैसे सूचना_स्कीमा और Performance_schema द्वारा अनदेखा किया जाता है
चूक)

--अनदेखा-इंजन
प्रकार: हैश; डिफ़ॉल्ट: फ़ेडरेटेड, MRG_MyISAM

भंडारण इंजनों की इस अल्पविराम से अलग की गई सूची पर ध्यान न दें।

--अनदेखा-टेबल
प्रकार: हैश

तालिकाओं की इस अल्पविराम से अलग की गई सूची पर ध्यान न दें।

तालिका नाम डेटाबेस नाम से योग्य हो सकते हैं।

--अनदेखा-टेबल-रेगेक्स
प्रकार: स्ट्रिंग; समूह: फ़िल्टर

उन तालिकाओं पर ध्यान न दें जिनके नाम पर्ल रेगेक्स से मेल खाते हैं।

--[नहीं]सूचकांक-संकेत
डिफ़ॉल्ट: हाँ

खंड और पंक्ति प्रश्नों में FORCE/USE INDEX संकेत जोड़ें।

डिफ़ॉल्ट रूप से "पीटी-टेबल-सिंक" प्रत्येक SQL कथन को बाध्य करने के लिए एक FORCE/USE INDEX संकेत जोड़ता है
सिंक एल्गोरिदम द्वारा चुने गए या निर्दिष्ट इंडेक्स का उपयोग करने में MySQL
"--चंक-इंडेक्स"। यह आमतौर पर एक अच्छी बात है, लेकिन दुर्लभ मामलों में सूचकांक ऐसा नहीं हो सकता है
क्वेरी के लिए सर्वोत्तम ताकि आप निर्दिष्ट करके सूचकांक संकेत को दबा सकें
"--नो-इंडेक्स-संकेत" और MySQL को इंडेक्स चुनने दें।

यह "--प्रिंट" द्वारा मुद्रित प्रश्नों को प्रभावित नहीं करता है; यह केवल हिस्से को प्रभावित करता है और
पंक्ति क्वेरीज़ जिनका उपयोग "पीटी-टेबल-सिंक" पंक्तियों का चयन और तुलना करने के लिए करता है।

--लॉक
प्रकार: int

लॉक टेबल: 0=कोई नहीं, 1=प्रति सिंक चक्र, 2=प्रति टेबल, या 3=विश्व स्तर पर।

यह "लॉक टेबल्स" का उपयोग करता है। यह आपके रहते हुए तालिकाओं को बदलने से रोकने में मदद कर सकता है
उनकी जांच कर रहे हैं. संभावित मान इस प्रकार हैं:

मूल्य का अर्थ
===== =========================================== ==========
0 कभी भी टेबल पर ताला न लगाएं।
1 प्रति सिंक चक्र में एक बार लॉक और अनलॉक करें (जैसा लागू किया गया है)।
सिंकिंग एल्गोरिदम द्वारा)। यह सबसे अधिक दानेदार होता है
लॉकिंग का स्तर उपलब्ध है। उदाहरण के लिए, चंक
एल्गोरिदम C के प्रत्येक भाग को लॉक कर देगा पंक्तियाँ, और फिर
यदि वे स्रोत और पर समान हैं तो उन्हें अनलॉक करें
अगले भाग पर जाने से पहले गंतव्य।
2 प्रत्येक टेबल के पहले और बाद में लॉक और अनलॉक करें।
3 सिंक किए गए प्रत्येक सर्वर (डीएसएन) के लिए एक बार लॉक और अनलॉक करें
सी .

यदि "--रेप्लिकेट" या "--सिंक-टू-मास्टर" है तो एक प्रतिकृति स्लेव कभी भी लॉक नहीं होता है
निर्दिष्ट किया गया है, क्योंकि सैद्धांतिक रूप से मास्टर पर टेबल को लॉक करने से किसी भी बदलाव को रोका जाना चाहिए
घटित होने से. (आप अपने दास पर डेटा नहीं बदल रहे हैं, है ना?) यदि "--प्रतीक्षा" है
दिया गया है, मास्टर (स्रोत) लॉक है और फिर टूल स्लेव के पकड़ने का इंतजार करता है
जारी रखने से पहले मास्टर को।

यदि "--ट्रांजैक्शन" निर्दिष्ट है, तो "लॉक टेबल्स" का उपयोग नहीं किया जाता है। इसके बजाय, लॉक और अनलॉक करें
लेन-देन शुरू करने और प्रतिबद्ध करने के द्वारा कार्यान्वित किया जाता है। अपवाद है यदि
"--लॉक" 3 है.

यदि "--नो-ट्रांजैक्शन" निर्दिष्ट है, तो "लॉक टेबल्स" का उपयोग किसी भी मूल्य के लिए किया जाता है
"--ताला"। देखें "--[नहीं]लेनदेन"।

--ताला लगाएं और नाम बदलें
स्रोत और गंतव्य तालिका को लॉक करें, सिंक करें, फिर नाम स्वैप करें। यह एक के रूप में उपयोगी है
कम-अवरुद्ध ALTER TABLE, एक बार जब तालिकाएँ एक-दूसरे के साथ यथोचित रूप से समन्वयित हो जाती हैं
(जिसे आप डंप और रीलोड सहित किसी भी माध्यम से पूरा करना चुन सकते हैं
या यहां तक ​​कि पीटी-आर्काइवर जैसा कुछ)। इसके लिए बिल्कुल दो डीएसएन की आवश्यकता होती है और उन्हें मान लिया जाता है
एक ही सर्वर पर हैं, इसलिए इसे प्रतिकृति या इस तरह की कोई प्रतीक्षा नहीं करनी पड़ती। टेबल हैं
लॉक टेबल से बंद।

--पासवर्ड
संक्षिप्त रूप: -पी; टाइप करें: स्ट्रिंग

कनेक्ट करते समय उपयोग करने के लिए पासवर्ड। यदि पासवर्ड में अल्पविराम हैं तो उन्हें अवश्य ही छोड़ देना चाहिए
बैकस्लैश के साथ: "परीक्षा\,पीएल"

--पिडी
टाइप करें: स्ट्रिंग

दी गई पीआईडी ​​फाइल बनाएं। यदि PID फ़ाइल पहले से मौजूद है और
इसमें मौजूद PID वर्तमान PID से भिन्न है। हालांकि, अगर पीआईडी ​​फाइल
मौजूद है और इसमें मौजूद PID अब नहीं चल रहा है, उपकरण PID को अधिलेखित कर देगा
वर्तमान पीआईडी ​​के साथ फाइल। उपकरण के बाहर निकलने पर PID फ़ाइल स्वचालित रूप से हटा दी जाती है।

--बंदरगाह
संक्षिप्त रूप: -पी; टाइप करें: int

कनेक्शन के लिए उपयोग करने के लिए पोर्ट नंबर।

--प्रिंट
क्वेरीज़ प्रिंट करें जो मतभेदों को हल करेंगी।

यदि आप "पीटी-टेबल-सिंक" पर भरोसा नहीं करते हैं, या सिर्फ यह देखना चाहते हैं कि यह क्या करेगा, तो यह एक है
सुरक्षित रहने का अच्छा तरीका. ये क्वेरीज़ मान्य SQL हैं और यदि आप इन्हें स्वयं चला सकते हैं
तालिकाओं को मैन्युअल रूप से सिंक करना चाहते हैं।

--पुनरावर्तन-विधि
प्रकार: सरणी; डिफ़ॉल्ट: प्रक्रिया सूची, होस्ट

दासों को खोजने के लिए पसंदीदा पुनरावर्तन विधि का उपयोग किया जाता है।

संभावित तरीके हैं:

विधि का उपयोग
=========== ==================
प्रक्रिया सूची प्रक्रिया सूची दिखाएं
मेज़बान गुलाम दिखाएँ मेज़बान
कोई भी गुलाम नहीं मिलता

प्रोसेसलिस्ट विधि को प्राथमिकता दी जाती है क्योंकि SHOW SLAVE HOSTS विश्वसनीय नहीं है।
हालाँकि, यदि सर्वर गैर-मानक पोर्ट (नहीं) का उपयोग करता है तो होस्ट विधि आवश्यक है
3306). आमतौर पर पीटी-टेबल-सिंक सही काम करता है और दासों को ढूंढता है, लेकिन आप ऐसा कर सकते हैं
एक पसंदीदा तरीका बताएं और इसका उपयोग पहले किया जाएगा। यदि उसे कोई गुलाम नहीं मिलता है, तो
अन्य तरीके भी आजमाए जाएंगे।

--बदलने के
सभी "INSERT" और "UPDATE" कथनों को "Replace" के रूप में लिखें।

अद्वितीय सूचकांक उल्लंघन होने पर यह आवश्यकतानुसार स्वचालित रूप से चालू हो जाता है।

--प्रतिकृति
टाइप करें: स्ट्रिंग

इस तालिका में अलग-अलग सूचीबद्ध सिंक तालिकाएँ।

निर्दिष्ट करता है कि "पीटी-टेबल-सिंक" को डेटा ढूंढने के लिए निर्दिष्ट तालिका की जांच करनी चाहिए
भिन्न. तालिका बिल्कुल पीटी-टेबल के समान नाम के तर्क के समान है-
चेकसम. अर्थात्, इसमें यह रिकॉर्ड होता है कि कौन सी तालिकाएँ (और मानों की श्रेणियाँ) भिन्न हैं
मालिक और गुलाम के बीच.

प्रत्येक तालिका और मानों की श्रेणी के लिए जो मास्टर और के बीच अंतर दिखाती है
स्लेव, "pt-table-checksum" उस तालिका को उचित "WHERE" क्लॉज के साथ सिंक करेगा,
उसके मालिक को.

यह स्वचालित रूप से "--प्रतीक्षा" को 60 पर सेट करता है और मास्टर पर परिवर्तन करने का कारण बनता है
गुलाम की जगह.

यदि "--सिंक-टू-मास्टर" निर्दिष्ट किया गया है, तो टूल मान लेगा कि आपके द्वारा निर्दिष्ट सर्वर है
स्लेव, और सिंक करने के लिए हमेशा की तरह मास्टर से कनेक्ट करें।

अन्यथा, यह आपके सर्वर के स्लेव को ढूंढने के लिए "SHOW PROCESSLIST" का उपयोग करने का प्रयास करेगा
निर्दिष्ट. यदि यह "SHOW PROCESSLIST" के माध्यम से कोई दास ढूंढने में असमर्थ है, तो यह निरीक्षण करेगा
इसके बजाय "गुलाम मेज़बान दिखाएँ"। आपको प्रत्येक दास के "रिपोर्ट-होस्ट" को कॉन्फ़िगर करना होगा,
इसके सही ढंग से काम करने के लिए "रिपोर्ट-पोर्ट" और अन्य विकल्प। गुलाम ढूंढने के बाद यह होगा
जिस डेटा को सिंक करने की आवश्यकता है उसे ढूंढने के लिए प्रत्येक स्लेव पर निर्दिष्ट तालिका का निरीक्षण करें, और
इसे सिंक करें.

टूल पहले तालिका की मास्टर कॉपी की जांच करता है, यह मानते हुए कि मास्टर है
संभवतः एक गुलाम भी। कोई भी तालिका जो वहां अंतर दिखाती है नहीं be
दास(ओं) पर समन्वयित। उदाहरण के लिए, मान लीजिए कि आपकी प्रतिकृति A->B के रूप में सेट की गई है,
बी->सी, बी->डी। मान लीजिए कि आप इस तर्क का उपयोग करते हैं और सर्वर बी निर्दिष्ट करते हैं। उपकरण करेगा
सर्वर बी की तालिका की प्रतिलिपि की जाँच करें। यदि यह तालिका में सर्वर बी के डेटा जैसा दिखता है
"test.tbl1" सर्वर A की कॉपी से अलग है, टूल उस टेबल को सिंक नहीं करेगा
सर्वर सी और डी.

--सेट-वार्स
प्रकार: सरणी

"वेरिएबल = मान" जोड़े की इस अल्पविराम से अलग सूची में MySQL चर सेट करें।

डिफ़ॉल्ट रूप से, उपकरण सेट करता है:

प्रतीक्षा_समयबाह्य = 10000

कमांड लाइन पर निर्दिष्ट चर इन डिफ़ॉल्ट को ओवरराइड करते हैं। उदाहरण के लिए,
"--set-vars Wait_timeout=500" निर्दिष्ट करना 10000 के डिफ़ॉल्ट मान को ओवरराइड करता है।

उपकरण एक चेतावनी प्रिंट करता है और यदि कोई चर सेट नहीं किया जा सकता है तो जारी रहता है।

--सॉकेट
संक्षिप्त रूप; टाइप करें: स्ट्रिंग

कनेक्शन के लिए उपयोग करने के लिए सॉकेट फ़ाइल।

--सिंक-टू-मास्टर
डीएसएन को एक गुलाम मानें और इसे उसके मालिक के साथ सिंक करें।

आपके द्वारा निर्दिष्ट सर्वर को एक दास के रूप में मानें। "गुलाम स्थिति दिखाएं" का निरीक्षण करें, इससे जुड़ें
सर्वर का स्वामी, और स्वामी को स्रोत और दास को स्रोत मानें
गंतव्य। मास्टर पर परिवर्तन करने का कारण बनता है। "--प्रतीक्षा" को 60 तक सेट करता है
डिफ़ॉल्ट, डिफ़ॉल्ट रूप से "--लॉक" को 1 पर सेट करता है, और डिफ़ॉल्ट रूप से "--[नहीं]लेन-देन" को अक्षम करता है।
"--रेप्लिकेट" भी देखें, जो इस विकल्प के व्यवहार को बदलता है।

--टेबल्स
संक्षिप्त रूप: -t; प्रकार: हैश

केवल अल्पविराम से अलग की गई तालिकाओं की सूची को सिंक करें।

तालिका नाम डेटाबेस नाम से योग्य हो सकते हैं।

--टाइमआउट-ठीक है
यदि "--प्रतीक्षा" विफल हो जाए तो जारी रखें।

यदि आप "--प्रतीक्षा" निर्दिष्ट करते हैं और दास पहले स्वामी की स्थिति तक नहीं पहुंचता है
प्रतीक्षा समय समाप्त हो गया है, डिफ़ॉल्ट व्यवहार निरस्त करना है। यह विकल्प टूल को चालू रखता है
वैसे भी जा रहा हूँ. चेतावनी: यदि आप के बीच लगातार तुलना प्राप्त करने का प्रयास कर रहे हैं
दो सर्वर, आप शायद समय समाप्ति के बाद जारी नहीं रखना चाहेंगे।

--[नहीं]लेनदेन
"लॉक टेबल्स" के बजाय लेनदेन का उपयोग करें।

लेन-देन शुरू करने और करने की बारीकियों को "--लॉक" द्वारा नियंत्रित किया जाता है।
यह डिफ़ॉल्ट रूप से सक्षम है, लेकिन चूंकि "--लॉक" डिफ़ॉल्ट रूप से अक्षम है, इसलिए इसमें कोई नहीं है
प्रभाव।

अधिकांश विकल्प जो लॉकिंग को सक्षम करते हैं, डिफ़ॉल्ट रूप से लेनदेन को भी अक्षम कर देते हैं, इसलिए यदि आप चाहें
ट्रांजेक्शनल लॉकिंग ("लॉक इन शेयर मोड" और "फॉर अपडेट" के माध्यम से) का उपयोग करने के लिए, आपको
स्पष्ट रूप से "--लेन-देन" निर्दिष्ट करें।

यदि आप "--लेनदेन" को स्पष्ट रूप से निर्दिष्ट नहीं करते हैं तो "पीटी-टेबल-सिंक" प्रति पर निर्णय लेगा-
टेबल के आधार पर लेनदेन या टेबल लॉक का उपयोग करना है या नहीं। यह वर्तमान में उपयोग करता है
InnoDB टेबलों पर लेन-देन, और अन्य सभी पर टेबल लॉक।

यदि "--नो-ट्रांजैक्शन" निर्दिष्ट है, तो "पीटी-टेबल-सिंक" लेनदेन का उपयोग नहीं करेगा
सभी (InnoDB तालिकाओं के लिए भी नहीं) और लॉकिंग को "--लॉक" द्वारा नियंत्रित किया जाता है।

सक्षम होने पर, स्पष्ट रूप से या परोक्ष रूप से, लेनदेन अलगाव स्तर सेट किया जाता है
"दोहराने योग्य पढ़ें" और लेनदेन "सुसंगत स्नैपशॉट के साथ" शुरू हो जाते हैं।

--ट्रिम
"TRIM()" "VARCHAR" कॉलम "BIT_XOR" और "ACCUM" मोड में। MySQL की तुलना करते समय मदद करता है
4.1 से >=5.0.

यह तब उपयोगी होता है जब आपको MySQL के बीच अनुगामी स्थान अंतर की परवाह नहीं होती है
संस्करण जो अनुगामी स्थानों के प्रबंधन में भिन्न होते हैं। MySQL 5.0 और बाद में सभी
"VARCHAR" में पिछली रिक्तियाँ बनाए रखें, जबकि पिछले संस्करण उन्हें हटा देंगे।

--[नहीं]अद्वितीय जांच
डिफ़ॉल्ट: हाँ

अद्वितीय कुंजी जांच सक्षम करें ("SET UNIQUE_CHECKS=1")।

"--no-unique-checks" निर्दिष्ट करने से "UNIQUE_CHECKS=0 सेट हो जाएगा"।

--उपयोगकर्ता
संक्षिप्त रूप: -यू; टाइप करें: स्ट्रिंग

लॉगिन के लिए उपयोगकर्ता यदि वर्तमान उपयोगकर्ता नहीं है।

--शब्दशः
संक्षिप्त रूप: -v; संचयी: हाँ

सिंक ऑपरेशन के परिणाम प्रिंट करें।

आउटपुट के बारे में अधिक जानकारी के लिए "आउटपुट" देखें।

--संस्करण
संस्करण दिखाएं और बाहर निकलें।

--[नहीं]संस्करण-जांच
डिफ़ॉल्ट: हाँ

Percona टूलकिट, MySQL, और अन्य प्रोग्राम के नवीनतम संस्करण की जाँच करें।

यह दो अतिरिक्त के साथ एक मानक "स्वचालित रूप से अपडेट की जांच करें" सुविधा है
विशेषताएं। सबसे पहले, टूल स्थानीय सिस्टम पर अन्य प्रोग्रामों के संस्करण की जांच करता है
अपने स्वयं के संस्करण के अलावा। उदाहरण के लिए, यह प्रत्येक MySQL सर्वर के संस्करण की जाँच करता है
यह पर्ल, और पर्ल मॉड्यूल DBD::mysql से जुड़ता है। दूसरा, यह जाँचता है और चेतावनी देता है
ज्ञात समस्याओं वाले संस्करणों के बारे में। उदाहरण के लिए, MySQL 5.5.25 में एक महत्वपूर्ण बग था और
5.5.25a के रूप में पुनः जारी किया गया था।

किसी भी अपडेट या ज्ञात समस्या को टूल के सामान्य आउटपुट से पहले STDOUT पर प्रिंट किया जाता है।
इस सुविधा को उपकरण के सामान्य संचालन में कभी भी हस्तक्षेप नहीं करना चाहिए।

ज्यादा जानकारी के लिये पधारें .

--रुको
संक्षिप्त रूप: -w; प्रकार: समय

गुलामों को अपने मालिक तक पहुँचने के लिए कब तक इंतज़ार करना होगा।

तुलना करने से पहले स्वामी को दास द्वारा प्रतिकृति तैयार करने तक प्रतीक्षा करने को कहें
टेबल. मान समय समाप्त होने से पहले प्रतीक्षा करने के लिए सेकंड की संख्या है (यह भी देखें)।
"--टाइमआउट-ओके")। डिफ़ॉल्ट रूप से "--लॉक" को 1 और "--[no]transaction" को 0 पर सेट करता है। अगर आप
निम्न जैसी त्रुटि देखें,

MASTER_POS_WAIT -1 लौटा

इसका मतलब है कि टाइमआउट पार हो गया है और आपको इसे बढ़ाने की जरूरत है।

इस विकल्प का डिफ़ॉल्ट मान अन्य विकल्पों से प्रभावित होता है। यह देखने के लिए कि मूल्य क्या है
वास्तव में, "--help" के साथ चलाएँ।

प्रतीक्षा को पूरी तरह से अक्षम करने के लिए (लॉक को छोड़कर), "--wait" 0 निर्दिष्ट करें। इससे तब मदद मिलती है
स्लेव उन तालिकाओं पर पिछड़ रहा है जिन्हें समन्वयित नहीं किया जा रहा है।

--कहां
टाइप करें: स्ट्रिंग

तालिका के भाग में समन्वयन को प्रतिबंधित करने के लिए "कहां" खंड।

--[नहीं]शून्य-खंड
डिफ़ॉल्ट: हाँ

शून्य या शून्य-समतुल्य मान वाली पंक्तियों के लिए एक खंड जोड़ें। असर तभी होता है जब
"--चंक-आकार" निर्दिष्ट है। शून्य खंड का उद्देश्य कैप्चर करना है
संभावित रूप से बड़ी संख्या में शून्य मान जो पहले के आकार को असंतुलित कर देंगे
टुकड़ा. उदाहरण के लिए, यदि किसी अहस्ताक्षरित में बहुत सारी ऋणात्मक संख्याएँ डाली गई हों
पूर्णांक कॉलम के कारण उन्हें शून्य के रूप में संग्रहीत किया जाता है, फिर इन शून्य मानों को कैप्चर किया जाता है
पहले खंड और उसके सभी गैर-शून्य मानों के बजाय शून्य खंड द्वारा।

डीएसएन विकल्प


इन DSN विकल्पों का उपयोग DSN बनाने के लिए किया जाता है। प्रत्येक विकल्प "विकल्प = मान" की तरह दिया गया है।
विकल्प केस-संवेदी हैं, इसलिए P और p समान विकल्प नहीं हैं। नहीं हो सकता
"=" से पहले या बाद में व्हाइटस्पेस और यदि मान में व्हाइटस्पेस है तो उसे उद्धृत किया जाना चाहिए।
DSN विकल्प अल्पविराम से अलग किए गए हैं। पूर्ण विवरण के लिए पेरकोना-टूलकिट मैनपेज देखें।

· ए

डीएसएन: वर्णसेट; कॉपी: हाँ

डिफ़ॉल्ट वर्ण सेट।

· डी

डीएसएन: डेटाबेस; कॉपी: हाँ

सिंक की जाने वाली तालिका वाला डेटाबेस.

· एफ

डीएसएन: mysql_read_default_file; कॉपी: हाँ

दी गई फ़ाइल से केवल डिफ़ॉल्ट विकल्प पढ़ें

· एच

डीएसएन: मेजबान; कॉपी: हाँ

होस्ट से कनेक्ट करें।

· पी

डीएसएन: पासवर्ड; कॉपी: हाँ

कनेक्ट करते समय उपयोग करने के लिए पासवर्ड। यदि पासवर्ड में अल्पविराम हैं तो उन्हें अवश्य ही छोड़ देना चाहिए
बैकस्लैश के साथ: "परीक्षा\,पीएल"

· पी

डीएसएन: बंदरगाह; कॉपी: हाँ

कनेक्शन के लिए उपयोग करने के लिए पोर्ट नंबर।

· एस

डीएसएन: mysql_socket; कॉपी: हाँ

कनेक्शन के लिए उपयोग करने के लिए सॉकेट फ़ाइल।

· टी

प्रतिलिपि: हाँ

समन्वयित की जाने वाली तालिका.

· आप

डीएसएन: उपयोगकर्ता; कॉपी: हाँ

लॉगिन के लिए उपयोगकर्ता यदि वर्तमान उपयोगकर्ता नहीं है।

वातावरण


पर्यावरण चर "PTDEBUG" एसटीडीईआरआर को वर्बोज़ डिबगिंग आउटपुट सक्षम करता है। सक्षम करने के लिए
डिबगिंग और सभी आउटपुट को फ़ाइल में कैप्चर करें, जैसे टूल चलाएं:

PTDEBUG=1 pt-टेबल-सिंक ... > फ़ाइल 2>&1

सावधान रहें: डिबगिंग आउटपुट बड़ा होता है और कई मेगाबाइट आउटपुट उत्पन्न कर सकता है।

प्रणाली आवश्यकताएँ


आपको Perl, DBI, DBD::mysql, और कुछ मुख्य पैकेजों की आवश्यकता है जिन्हें किसी भी में स्थापित किया जाना चाहिए
पर्ल का यथोचित नया संस्करण।

onworks.net सेवाओं का उपयोग करके ऑनलाइन pt-table-syncp का उपयोग करें


फ्री सर्वर और वर्कस्टेशन

विंडोज और लाइनेक्स एप डाउनलोड करें

लिनक्स कमांड

Ad




×
विज्ञापन
❤️यहां खरीदारी करें, बुक करें या खरीदें - कोई शुल्क नहीं, इससे सेवाएं निःशुल्क बनी रहती हैं।