pt-table-syncp - آنلاین در ابر

این دستور pt-table-syncp است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


pt-table-sync - داده های جدول MySQL را به طور موثر همگام سازی کنید.

خلاصه


استفاده: pt-table-sync [OPTIONS] DSN [DSN]

pt-table-sync داده ها را به طور موثر بین جداول MySQL همگام می کند.

این ابزار داده ها را تغییر می دهد، بنابراین برای حداکثر ایمنی، باید قبل از استفاده از اطلاعات خود نسخه پشتیبان تهیه کنید
آی تی. هنگام همگام سازی سروری که یک برده تکراری است با "--replicate" یا
روش های "--sync-to-master"، آن را همیشه تغییرات را در Replication Master ایجاد می کند، هرگز
برده تکرار به طور مستقیم. این به طور کلی تنها راه امن برای آوردن یک ماکت است
بازگشت در هماهنگی با استاد خود. تغییرات در ماکت معمولاً منشا آن است
مشکلات در وهله اول با این حال، تغییراتی که در Master ایجاد می کند باید بدون عملیات باشد
تغییراتی که داده ها را بر روی مقادیر فعلی خود تنظیم می کند و در واقع فقط روی ماکت تأثیر می گذارد.

همگام سازی db.tbl در host1 با host2:

pt-table-sync --اجرای h=host1,D=db,t=tbl h=host2

همه جداول موجود در host1 را با host2 و host3 همگام سازی کنید:

pt-table-sync -- اجرای host1 host2 host3

کاری کنید slave1 همان داده‌هایی را داشته باشد که Master Replication خود دارد:

pt-table-sync --execute --sync-to-master slave1

تفاوت هایی را که pt-table-checksum در همه بردهای master1 یافت، حل کنید:

pt-table-sync --execute --replicate test.checksum master1

مانند بالا اما فقط اختلافات را در slave1 حل کنید:

pt-table-sync --execute --replicate test.checksum
-- sync-to-master slave1

همگام سازی master2 در پیکربندی Master-Master Replication، جایی که کپی master2 از db.tbl
شناخته شده یا مشکوک به نادرستی است:

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

توجه داشته باشید که در پیکربندی master-master، موارد زیر کاری را که شما می خواهید انجام نمی دهند.
زیرا تغییراتی را مستقیماً در master2 ایجاد می کند که سپس از طریق تکرار جریان می یابد
و داده های master1 را تغییر دهید:

# این کار را در یک راه اندازی استاد-مستر انجام ندهید!
pt-table-sync -- اجرای h=master1,D=db,t=tbl master2

خطرات


هشدار: pt-table-sync داده ها را تغییر می دهد! قبل از استفاده از این ابزار لطفا:

· اسناد ابزار را بخوانید

· بررسی "BUGS" شناخته شده ابزار

· ابزار را روی یک سرور غیر تولیدی تست کنید

· از سرور تولید خود نسخه پشتیبان تهیه کنید و پشتیبان گیری را تأیید کنید

pt-table-sync بالغ است، در دنیای واقعی ثابت شده است و به خوبی آزمایش شده است، اما اگر استفاده شود
نادرست می تواند عواقب نامطلوبی داشته باشد. همیشه ابتدا همگام سازی را با
"--dry-run" و "--print".

شرح


pt-table-sync همگام سازی یک طرفه و دو طرفه داده های جدول را انجام می دهد. این کار را انجام می دهد نه
همگام سازی ساختارهای جدول، شاخص ها، یا هر شی طرح دیگر. به شرح زیر
همگام سازی یک طرفه را توصیف می کند. "همگام سازی دو جهته" بعدا توضیح داده می شود.

این ابزار پیچیده است و به روش های مختلف عمل می کند. برای استفاده ایمن از آن و
به طور موثر، شما باید سه چیز را درک کنید: هدف از "--replicate"، پیدا کردن
تفاوت ها و مشخص کردن هاست. این سه مفهوم ارتباط نزدیکی با هم دارند و تعیین می کنند
ابزار چگونه اجرا خواهد شد منطق اختصاری زیر است:

اگر DSN بخشی دارد، فقط آن جدول را همگام کنید:
اگر 1 DSN:
اگر -- sync-to-master:
DSN یک برده است. به Master آن متصل شوید و همگام سازی کنید.
اگر بیش از 1 DSN باشد:
اولین DSN منبع است. هر DSN را به نوبه خود همگام سازی کنید.
other if --replicate:
اگر -- sync-to-master:
DSN یک برده است. به استاد آن متصل شوید، رکوردها را پیدا کنید
از تفاوت ها، و رفع.
دیگری:
DSN استاد است. برده ها را پیدا کنید و به هر کدام متصل شوید،
سوابق تفاوت ها را بیابید و اصلاح کنید.
دیگری:
اگر فقط 1 DSN و --sync-to-master:
DSN یک برده است. به استاد خود متصل شوید، جداول را پیدا کنید و
با ---databases و غیره فیلتر کنید و هر جدول را با Master همگام کنید.
دیگری:
جداول را پیدا کنید، با ---پایگاه های داده فیلتر کنید و هر کدام را همگام سازی کنید
DSN به اول.

pt-table-sync می تواند به یکی از دو روش اجرا شود: با "--replicate" یا بدون. پیش فرض است
برای اجرا بدون "--replicate" که باعث می شود pt-table-sync به طور خودکار تفاوت ها را پیدا کند
به طور موثر با یکی از چندین الگوریتم (به "الگوریتم ها" مراجعه کنید). متناوبا، ارزش
از "--replicate"، در صورت مشخص شدن، باعث می شود pt-table-sync از تفاوت هایی که قبلا پیدا شده است استفاده کند.
با اجرای pt-table-checksum قبلاً با گزینه "--replicate" خود. موکدا
در صحبت کردن، شما نیازی به استفاده از "--replicate" ندارید زیرا pt-table-sync می تواند تفاوت ها را پیدا کند،
اما بسیاری از مردم از "--replicate" استفاده می کنند اگر، برای مثال، به طور منظم از pt-table استفاده کنند.
چک‌سوم، سپس تفاوت‌ها را در صورت نیاز با pt-table-sync برطرف کنید. اگر مطمئن نیستید، هر کدام را بخوانید
مستندات ابزار را به دقت بررسی کنید و خودتان تصمیم بگیرید یا با یک متخصص مشورت کنید.

صرف نظر از اینکه "--replicate" استفاده می شود یا خیر، باید مشخص کنید کدام هاست
همگام سازی دو راه وجود دارد: با "-- sync-to-master" یا بدون. مشخص کردن
"--sync-to-master" باعث می شود pt-table-sync انتظار یک و تنها DSN برده را در خط فرمان داشته باشد.
این ابزار به طور خودکار master Slave را پیدا می کند و آن را به گونه ای همگام می کند که داده های آن باشد
همان استادش این با ایجاد تغییرات در Master که سپس انجام می شود
جریان از طریق تکرار و به روز رسانی برده برای حل اختلافات آن. Be دقیق
گرچه: اگرچه این گزینه یک Slave را مشخص و همگام سازی می کند، در صورت وجود بردهای دیگر
در همان master، آنها تغییرات در نظر گرفته شده برای Slave را از طریق تکرار دریافت خواهند کرد
که می‌خواهید همگام‌سازی کنید.

متناوبا، اگر "--sync-to-master" را مشخص نکنید، اولین DSN داده شده در
خط فرمان میزبان منبع است. تنها یک میزبان منبع وجود دارد. اگر شما نیز
"--replicate" را مشخص کنید، سپس باید حداقل یک DSN دیگر را به عنوان مقصد مشخص کنید
میزبان. می تواند یک یا چند میزبان مقصد وجود داشته باشد. میزبان منبع و مقصد باید باشد
مستقل؛ آنها نمی توانند در یک توپولوژی همانندسازی باشند. pt-table-sync با خواهد مرد
یک خطا اگر تشخیص دهد که میزبان مقصد به دلیل نوشته شدن تغییرات، Slave است
مستقیماً به میزبان مقصد (و نوشتن مستقیم به بردگان امن نیست). یا اگر شما
"--replicate" را مشخص کنید (اما نه "--sync-to-master") سپس pt-table-sync یک و تنها را انتظار دارد
یک DSN اصلی در خط فرمان. این ابزار به طور خودکار تمام استادان را کشف می کند
برده ها و همگام سازی آنها با استاد. این تنها راه برای همگام سازی چند (همه) برده در است
یک بار (زیرا "--sync-to-master" فقط یک Slave را مشخص می کند).

هر میزبان در خط فرمان به عنوان یک DSN مشخص می شود. اولین DSN (یا فقط DSN برای موارد
مانند "--sync-to-master") مقادیر پیش فرض را برای سایر DSN ها، خواه آن DSN های دیگر ارائه می دهد.
در خط فرمان مشخص می شوند یا به صورت خودکار توسط ابزار کشف می شوند. بنابراین در این مثال،

pt-table-sync -- اجرای h=host1,u=msandbox,p=msandbox h=host2

host2 DSN قطعات "u" و "p" DSN را از host1 DSN به ارث می برد. استفاده کنید
گزینه "-explain-hosts" برای اینکه ببینید pt-table-sync چگونه DSN های داده شده در
خط فرمان.

OUTPUT


اگر گزینه "--verbose" را مشخص کنید، اطلاعاتی در مورد تفاوت ها خواهید دید
بین میزها در هر جدول یک ردیف وجود دارد. هر سرور جداگانه چاپ می شود. برای
مثال،

# همگام سازی h=host1,D=test,t=test1
# DELETE REPLACE درج الگوریتم به روز رسانی شروع پایان خروج از پایگاه داده.TABLE
# 0 0 3 0 تکه 13:00:00 13:00:17 2 test.test1

جدول test.test1 در میزبان 1 به 3 عبارت "INSERT" برای همگام سازی نیاز داشت و از
الگوریتم تکه ای (به "الگوریتم ها" مراجعه کنید). عملیات همگام سازی این جدول از ساعت 13:00 شروع شد
و 17 ثانیه بعد به پایان رسید (زمان های گرفته شده از "NOW()" در میزبان منبع). زیرا
تفاوت هایی پیدا شد، "وضعیت خروج" آن 2 بود.

اگر گزینه "--print" را مشخص کنید، عبارات واقعی SQL را خواهید دید که اسکریپت
اگر "--execute" نیز مشخص شده باشد، برای همگام سازی جدول استفاده می کند.

اگر می‌خواهید عبارات SQL را ببینید که pt-table-sync برای انتخاب تکه‌ها استفاده می‌کند،
nibbles، rows، و غیره، سپس "--print" را یک بار و "--verbose" را دو بار مشخص کنید. مراقب باش
اگرچه: این می تواند بسیاری از دستورات SQL را چاپ کند.

مواردی وجود دارد که هیچ ترکیبی از عبارات "INSERT"، "UPDATE" یا "DELETE" نمی تواند وجود داشته باشد
بدون نقض برخی از کلیدهای منحصر به فرد، اختلافات را حل کنید. به عنوان مثال، فرض کنید یک وجود دارد
کلید اصلی در ستون a و یک کلید منحصر به فرد در ستون b. سپس راهی برای همگام سازی اینها وجود ندارد
دو جدول با دستورات UPDATE ساده:

+---+---+ +---+---+
| یک | b | | یک | b |
+---+---+ +---+---+
| 1 | 2 | | 1 | 1 |
| 2 | 1 | | 2 | 2 |
+---+---+ +---+---+

این ابزار در این مورد درخواست‌ها را به «DELETE» و «REPLACE» بازنویسی می‌کند. این به طور خودکار است
پس از اولین نقض شاخص رسیدگی می شود، بنابراین لازم نیست نگران آن باشید.

هنگام استفاده از pt-table-sync در هر تنظیم master-master مراقب باشید. Master-Master Replication
ذاتاً مشکل است و اشتباه کردن آسان است. باید مطمئن شوید که در حال استفاده هستید
ابزار به درستی برای Master-Master Replication. برای مرور کلی به "خلاصه" مراجعه کنید
استفاده صحیح

همچنین مراقب جدول هایی باشید که دارای محدودیت های کلید خارجی با «ON DELETE» یا «ON» هستند
تعاریف UPDATE" زیرا ممکن است باعث ایجاد تغییرات ناخواسته در جداول فرزند شوند
"--[no]check-child-tables".

به طور کلی، این ابزار زمانی مناسب است که جداول شما دارای یک کلید اصلی یا فهرست منحصر به فرد باشد.
اگرچه می‌تواند داده‌ها را در جداول فاقد کلید اولیه یا فهرست منحصربه‌فرد همگام‌سازی کند، اما ممکن است
بهتر است آن داده ها را با وسیله دیگری همگام سازی کنید.

تکرار ایمنی


به طور کلی، همگام سازی یک Replication Master و Slave به طور ایمن یک مشکل غیر ضروری است.
انواع مسائلی وجود دارد که باید در مورد آنها فکر کرد، مانند فرآیندهای دیگر تغییر داده ها،
تلاش برای تغییر داده‌ها در Slave، خواه مقصد و منبع یک master-master باشند
جفت، و خیلی بیشتر.

به طور کلی، راه ایمن برای انجام آن این است که داده ها را در Master تغییر دهید و اجازه دهید تغییرات انجام شود
مانند هر تغییر دیگری از طریق همانندسازی به Slave جریان می یابد. با این حال، این فقط در صورتی کار می کند
می توان آن را در جدول روی Master جایگزین کرد. REPLACE فقط در صورتی کار می کند که یک مورد وجود داشته باشد
شاخص منحصر به فرد روی جدول (در غیر این صورت فقط مانند یک INSERT معمولی عمل می کند).

اگر جدول شما دارای کلیدهای منحصر به فرد است، باید از "--sync-to-master" و/یا "--replicate" استفاده کنید.
گزینه هایی برای همگام سازی Slave با master خود. این به طور کلی کار درست را انجام می دهد. چه زمانی
هیچ کلید منحصر به فردی روی میز وجود ندارد، چاره ای جز تغییر داده های روی میز وجود ندارد
slave و pt-table-sync تشخیص می دهد که شما در حال انجام این کار هستید. شکایت خواهد کرد و
بمیرید مگر اینکه "--no-check-slave" را مشخص کنید (به "--[no]check-slave مراجعه کنید).

اگر در حال همگام سازی جدولی بدون کلید اصلی یا منحصر به فرد در یک جفت master-master هستید، شما
باید داده های سرور مقصد را تغییر دهید. بنابراین، باید مشخص کنید
"--no-bin-log" برای ایمنی (به "--[no]bin-log مراجعه کنید). اگر این کار را نکنید، تغییراتی که در آن ایجاد می کنید
سرور مقصد به سرور مبدا کپی می کند و داده ها را در آنجا تغییر می دهد!

به طور کلی کار ایمن برای انجام یک جفت master-master استفاده از "--sync-to-master" است.
گزینه ای برای اینکه داده های سرور مقصد را تغییر ندهید. شما نیز نیاز خواهید داشت
"--no-check-slave" را مشخص کنید تا pt-table-sync از شکایت مبنی بر تغییر داده ها جلوگیری کند.
بر یک برده

الگوریتم ها


pt-table-sync دارای یک چارچوب همگام سازی داده های عمومی است که از الگوریتم های مختلف برای یافتن استفاده می کند.
تفاوت. این ابزار به طور خودکار بهترین الگوریتم را برای هر جدول بر اساس انتخاب می کند
شاخص‌ها، انواع ستون‌ها و اولویت‌های الگوریتم مشخص شده توسط "--algorithms". را
الگوریتم‌های زیر در دسترس هستند که به ترتیب اولویت پیش‌فرض فهرست شده‌اند:

تکه
شاخصی را پیدا می کند که ستون اول آن عددی است (شامل انواع تاریخ و زمان)، و
محدوده مقادیر ستون را به تکه هایی از ردیف های تقریباً "--chunk-size" تقسیم می کند.
با جمع‌بندی بررسی کل قطعه، یک تکه را در یک زمان همگام‌سازی می‌کند. اگر تکه در آن متفاوت است
منبع و مقصد، ردیف‌های هر تکه را به‌صورت جداگانه جمع‌بندی می‌کند تا ردیف‌هایی را پیدا کند
متفاوت است

زمانی کارآمد است که ستون دارای کاردینالیته کافی برای پایان دادن به تکه ها باشد
در مورد اندازه مناسب

چک جمع اولیه هر تکه بسیار کوچک است و منجر به حداقل ترافیک شبکه می شود
و مصرف حافظه اگر ردیف های یک تکه باید بررسی شوند، فقط کلید اصلی است
ستون‌ها و یک چک‌سوم از طریق شبکه ارسال می‌شوند، نه کل ردیف. اگر یک ردیف باشد
مشخص شد که متفاوت است، کل ردیف واکشی خواهد شد، اما نه قبل از آن.

توجه داشته باشید که این الگوریتم در صورت جداسازی یک ستون char که در آن همه مقادیر وجود دارد، کار نخواهد کرد
با همان شخصیت شروع کنید در آن صورت، ابزار خارج می شود و انتخاب a را پیشنهاد می کند
الگوریتم متفاوت

نیبله
یک نمایه پیدا می کند و در نوک اندازه ثابت ردیف های "--chunk-size" از شاخص بالا می رود،
با استفاده از یک الگوریتم بدون عقب نشینی (برای اطلاعات بیشتر در مورد این الگوریتم به pt-archiver مراجعه کنید). آی تی
بسیار شبیه به "چانک" است، اما به جای اینکه مرزهای هر کدام از قبل محاسبه شود
تکه ای از جدول بر اساس کاردینالیته شاخص، از "LIMIT" برای تعریف هر نوک ریز استفاده می کند.
حد بالایی، و حد بالای نیبل قبلی برای تعیین حد پایین.

این در مراحل کار می کند: یک پرس و جو ردیفی را پیدا می کند که قسمت بالایی نیبل بعدی را مشخص می کند
مرز، و پرس و جو بعدی کل نیبل را بررسی می کند. اگر نوک زدن متفاوت است
بین مبدا و مقصد، نیبل را ردیف به ردیف بررسی می‌کند، درست مانند «چانک»
انجام می دهد.

دسته بندی بر اساس
کل جدول گروه بندی شده بر اساس همه ستون ها را با یک ستون COUNT(*) انتخاب می کند.
همه ستون ها را مقایسه می کند و اگر یکسان هستند، مقدار ستون COUNT(*) را با
تعیین کنید که چند ردیف در مقصد وارد یا حذف شود. روی میز کار می کند
بدون کلید اولیه یا شاخص منحصر به فرد.

جریان
کل جدول را در یک جریان بزرگ انتخاب می کند و همه ستون ها را با هم مقایسه می کند. همه را انتخاب می کند
ستون ها. کارایی بسیار کمتری نسبت به سایر الگوریتم‌ها دارد، اما زمانی کار می‌کند که وجود نداشته باشد
شاخص مناسب برای استفاده آنها

برنامه های آینده
امکانات برای الگوریتم های آینده TempTable (چیزی که در ابتدا از پایین به بالا نام بردم) است
در نسخه های قبلی این ابزار)، DrillDown (چیزی که من در ابتدا آن را از بالا به پایین نامیده بودم)، و
GroupByPrefix (شبیه به نحوه عملکرد SqlYOG Job Agent). هر الگوریتم نقاط قوتی دارد
و نقاط ضعف اگر می خواهید تکنیک مورد علاقه خود را برای یافتن پیاده سازی کنید
تفاوت بین دو منبع داده در سرورهای احتمالاً متفاوت، من مایلم
کمک. الگوریتم ها به یک رابط کاربری ساده پایبند هستند که نوشتن را بسیار آسان می کند
خود شما

دو طرفه همگام سازی


همگام سازی دو جهته یک ویژگی جدید و آزمایشی است. برای اینکه آن را به طور قابل اعتماد کار کند وجود دارد
تعدادی محدودیت شدید:

* فقط هنگام همگام سازی یک سرور با سرورهای مستقل دیگر کار می کند
* به هیچ وجه با تکرار کار نمی کند
* مستلزم آن است که جدول(های) با الگوریتم Chunk قابل تکه تکه شدن باشند
* N-way نیست، فقط دو طرفه بین دو سرور در یک زمان است
* تغییرات DELETE را کنترل نمی کند

به عنوان مثال، فرض کنید ما سه سرور داریم: c1، r1، r2. c1 سرور مرکزی است، a
شبه استاد به سرورهای دیگر (یعنی r1 و r2 برده c1 نیستند). r1 و r2 هستند
سرورهای راه دور سطرها در جدول foo به روز می شوند و در هر سه سرور و ما درج می شوند
می خواهید تمام تغییرات را بین همه سرورها همگام سازی کنید. جدول Foo دارای ستون هایی است:

id int کلید اولیه
مهر زمانی ts به طور خودکار به روز شد
نام وارچار

افست های افزایش خودکار استفاده می شود تا ردیف های جدید از هر سروری تضاد ایجاد نکنند
مقادیر کلید اولیه (id) به طور کلی، ردیف های جدیدتر، همانطور که توسط ستون ts تعیین می شود، می گیرند
اولویت زمانی که یک ردیف یکسان اما متفاوت در طول همگام سازی دو طرفه یافت می شود. "یکسان
but differing" به این معنی است که دو سطر دارای مقدار کلید اصلی (id) یکسان اما متفاوت هستند
مقادیر برای برخی از ستون های دیگر، مانند ستون نام در این مثال. یکسان اما متفاوت
تعارضات با یک "تعارض" حل می شود. تضاد برخی از ستون های رقیب را مقایسه می کند
ردیف هایی برای تعیین "برنده". سطر برنده منبع می شود و از مقادیر آن استفاده می شود
برای به روز رسانی ردیف دیگر

تفاوت های ظریفی بین سه ستون مورد استفاده برای دستیابی به همگام سازی دو طرفه وجود دارد
که باید با آن آشنا باشید: ستون تکه ("--chunk-column")، ستون(های) مقایسه
("--ستون")، و ستون تضاد ("--conflict-column"). ستون تکه فقط استفاده می شود
تکه تکه کردن میز؛ به عنوان مثال "WHERE id >= 5 و id < 10". تکه ها چک جمع می شوند و چه زمانی
جمع‌های چک تکه تفاوت را نشان می‌دهند، ابزار ردیف‌های موجود در آن تکه و جمع‌های چک را انتخاب می‌کند
"--ستون ها" برای هر سطر. اگر جمع کنترلی ستون متفاوت باشد، سطرها یک یا چند دارند
مقادیر ستون متناقض در یک همگام سازی سنتی یک طرفه، تضاد یک بحث است
نقطه زیرا می توان آن را به سادگی با به روز رسانی کل ردیف مقصد با علامت حل کرد
مقادیر ردیف منبع با این حال، در یک همگامی دو طرفه، "--conflict-column" (در
مطابق با لیست گزینه های دیگر "--conflict-*" در زیر) برای تعیین اینکه کدام مورد مقایسه می شود
ردیف "درست" یا "معتبر" است. این ردیف به "منبع" تبدیل می شود.

برای همگام سازی کامل هر سه سرور، دو اجرای pt-table-sync مورد نیاز است. اولین
c1 و r1 را همگام‌سازی کنید، سپس c1 و r2 را با هر تغییری از r1 همگام‌سازی کنید. در این مرحله c1
و r2 کاملاً همگام هستند، اما r1 هیچ تغییری را نسبت به r2 ندارد زیرا c1 این کار را نکرده است
هنگامی که آن و r1 همگام شدند، این تغییرات را داشته باشند. بنابراین یک اجرای دوم مورد نیاز است که همگام سازی می کند
سرورها به ترتیب یکسان هستند، اما این بار وقتی c1 و r1 همگام می شوند، r1 تغییرات r2 را دریافت می کند.

این ابزار N-ways را همگام نمی کند، فقط به صورت دوطرفه بین اولین DSN ارائه شده روی
خط فرمان و هر DSN بعدی به نوبه خود. بنابراین ابزار در این مثال اجرا می شود
دو بار مثل:

pt-table-sync --دو جهته h=c1 h=r1 h=r2

گزینه "--bidirectional" این ویژگی را فعال می کند و باعث می شود تا بررسی های مختلف سلامت عقل انجام شود
انجام. شما باید گزینه های دیگری را مشخص کنید که به pt-table-sync می گویند چگونه حل شود
درگیری برای ردیف های مشابه اما متفاوت. این گزینه ها عبارتند از:

* --تعارض-ستون
* --تعارض-مقایسه
* --conflict-value
* -- آستانه تعارض
* --conflict-error"> (اختیاری)

از "--print" برای تست این گزینه قبل از "--execute" استفاده کنید. عبارات چاپ شده SQL خواهد بود
نظراتی داشته باشید که بگویند در صورت استفاده از کدام میزبان دستور اجرا می شود
"--اجرا کردن".

نکته فنی: اولین DSN همیشه سرور "چپ" است و DSN های دیگر
همیشه سرور "درست". از آنجایی که هر کدام از سرورها می تواند به منبع یا مقصد تبدیل شود
گیج کننده است که آنها را به عنوان "src" و "dst" تصور کنیم. بنابراین، به طور کلی به آنها اشاره می شود
به صورت چپ و راست به خاطر سپردن این موضوع آسان است زیرا اولین DSN همیشه در سمت چپ است
از دیگر DSN های سرور در خط فرمان.

خروج وضعیت


در زیر وضعیت‌های خروج (که مقادیر بازگشتی یا کدهای بازگشتی نیز نامیده می‌شوند) در هنگام pt- هستند.
جدول همگام سازی تمام می شود و خارج می شود.

معنی وضعیت
================================================== ===========
0 موفقیت
1 خطای داخلی.
2 حداقل یک جدول در مقصد متفاوت بود.
3 ترکیب 1 و 2.

OPTIONS


حداقل یکی از «--print»، «--execute» یا «--dry-run» را مشخص کنید.

"--where" و "--replicate" متقابل هستند.

این ابزار آرگومان های اضافی خط فرمان را می پذیرد. به "خلاصه" و استفاده مراجعه کنید
اطلاعات برای جزئیات

--الگوریتم ها
نوع: رشته; پیش‌فرض: Chunk،Nibble،GroupBy،Stream

الگوریتم مورد استفاده در هنگام مقایسه جداول، به ترتیب اولویت.

برای هر جدول، pt-table-sync بررسی می کند که آیا جدول می تواند با جدول داده شده همگام شود
الگوریتم ها به ترتیبی که داده شده اند. اولین الگوریتمی که می تواند همگام سازی کند
جدول استفاده می شود. به "الگوریتم ها" مراجعه کنید.

--ask-pass
هنگام اتصال به MySQL یک رمز عبور درخواست کنید.

-- دو جهته
همگام سازی دو جهته بین میزبان اول و بعدی را فعال کنید.

برای اطلاعات بیشتر به "همگام سازی دوطرفه" مراجعه کنید.

--[no]bin-log
پیش فرض: بله

وارد گزارش باینری شوید ("SET SQL_LOG_BIN=1").

تعیین "--no-bin-log" باعث "SET SQL_LOG_BIN=0" می شود.

--buffer-in-mysql
به MySQL دستور دهید تا کوئری ها را در حافظه خود بافر کند.

این گزینه گزینه "SQL_BUFFER_RESULT" را به کوئری های مقایسه اضافه می کند. این
باعث می شود MySQL کوئری ها را اجرا کند و آنها را در یک جدول موقت به صورت داخلی قرار دهد
قبل از ارسال نتایج به pt-table-sync. مزیت این استراتژی است
که pt-table-sync می تواند ردیف ها را به دلخواه واکشی کند بدون اینکه از حافظه زیادی در داخل آن استفاده شود
فرآیند پرل، در حالی که قفل‌های جدول MySQL را آزاد می‌کند (برای کاهش مشاجره با
سوالات دیگر). نقطه ضعف آن استفاده از حافظه بیشتر در سرور MySQL است
به جای آن.

احتمالاً می خواهید «--[no]buffer-to-client» را نیز فعال بگذارید، زیرا بافر
احتمالاً احمقانه است
کاری برای انجام دادن این گزینه بیشتر برای الگوریتم های GroupBy و Stream کاربرد دارد که
ممکن است داده های زیادی را از سرور دریافت کند.

--[no]buffer-to-client
پیش فرض: بله

هنگام مقایسه، ردیف ها را یک به یک از MySQL واکشی کنید.

این گزینه "mysql_use_result" را فعال می کند که باعث می شود MySQL ردیف های انتخاب شده را نگه دارد.
سرور تا زمانی که ابزار آنها را واکشی کند. این به ابزار اجازه می دهد تا از حافظه کمتری استفاده کند اما
ممکن است ردیف ها را برای مدت طولانی تری روی سرور قفل نگه دارد.

اگر این گزینه با مشخص کردن "--no-buffer-to-client" غیرفعال شود، پس
"mysql_store_result" استفاده می شود که باعث می شود MySQL تمام ردیف های انتخاب شده را به ابزار ارسال کند.
فورا. این ممکن است منجر به باز ماندن "مکان نما" نتایج برای مدت زمان کوتاه تری شود
روی سرور، اما اگر جداول بزرگ باشند، به هر حال ممکن است زمان زیادی طول بکشد و استفاده شود
تمام خاطراتت

برای اکثر اندازه‌های داده غیر ضروری، می‌خواهید این گزینه را فعال بگذارید.

این گزینه در صورت استفاده از "--دو جهته" غیرفعال می شود.

-- مجموعه حروف
فرم کوتاه: -A; نوع: رشته

مجموعه کاراکترهای پیش فرض اگر مقدار utf8 باشد، حالت binmode Perl را در STDOUT روی utf8 تنظیم کنید.
گزینه mysql_enable_utf8 را به DBD::mysql منتقل می کند و SET NAMES UTF8 را بعد از آن اجرا می کند.
اتصال به MySQL هر مقدار دیگری، binmode را در STDOUT بدون لایه utf8 تنظیم می کند.
و SET NAMES را پس از اتصال به MySQL اجرا می کند.

--[نه]چک-کودک-جدول
پیش فرض: بله

بررسی کنید که آیا "--execute" بر جداول فرزند تأثیر منفی می گذارد یا خیر. هنگامی که "--replace"،
"--replicate" یا "--sync-to-master" مشخص شده است، ابزار ممکن است جداول را با استفاده از
بیانیه های "جایگزینی". اگر جدولی که همگام‌سازی می‌شود دارای جداول فرزند با «ON DELETE» باشد
CASCADE، "ON UPDATE CASCADE"، یا "ON UPDATE SET NULL"، ابزار یک خطا را چاپ می کند و
جدول را رد می کند زیرا "REPLACE" به "DELETE" سپس "INSERT" تبدیل می شود، بنابراین "DELETE" می شود
به جدول فرزند آبشاری کنید و سطرهای آن را حذف کنید. در بدترین حالت، این می تواند حذف شود
تمام ردیف ها در جداول کودک!

برای غیرفعال کردن این بررسی، «--no-check-child-tables» را مشخص کنید. برای اجتناب کامل
بر جداول فرزند، همچنین "--no-foreign-key-checks" را مشخص کنید تا MySQL نتواند
هر گونه عملیات از جداول والد به فرزند را آبشاری کنید.

این بررسی فقط در صورت "--execute" و یکی از "--replace"، "--replicate"، یا
"--sync-to-master" مشخص شده است. "--print" جداول فرزند را بررسی نمی کند.

پیام خطا فقط اولین جدول فرزند یافت شده با "ON DELETE CASCADE" را چاپ می کند.
محدودیت کلید خارجی "ON UPDATE CASCADE" یا "ON UPDATE SET NULL". ممکن است وجود داشته باشد
سایر میزهای کودک آسیب دیده

--[no]check-master
پیش فرض: بله

با "--sync-to-master"، سعی کنید بررسی کنید که استاد شناسایی شده، استاد واقعی است.

--[no]check-slave
پیش فرض: بله

بررسی کنید که آیا سرور مقصد یک برده است یا خیر.

اگر سرور مقصد یک برده باشد، ایجاد تغییرات در آن به طور کلی ناامن است.
با این حال، گاهی اوقات مجبور می شوید؛ "--replace" کار نمی کند مگر اینکه یک شاخص منحصر به فرد وجود داشته باشد،
به عنوان مثال، بنابراین نمی توانید در آن سناریو تغییراتی را روی Master اعمال کنید. به طور پیش فرض pt-
اگر بخواهید داده‌های یک Slave را تغییر دهید، table-sync شکایت خواهد کرد. مشخص كردن
"--no-check-slave" برای غیرفعال کردن این چک. با مسئولیت خود از آن استفاده کنید.

--[نه] محرک های چک
پیش فرض: بله

بررسی کنید که هیچ ماشه ای در جدول مقصد تعریف نشده باشد.

Trigger ها در MySQL v5.0.2 معرفی شدند، بنابراین برای نسخه های قدیمی تر این گزینه هیچ
اثر زیرا محرک ها بررسی نمی شوند.

-- تکه-ستون
نوع: رشته

جدول را در این ستون تکه تکه کنید.

--تکه-شاخص
نوع: رشته

جدول را با استفاده از این شاخص تکه تکه کنید.

-- اندازه تکه
نوع: رشته; پیش فرض: 1000

تعداد ردیف یا اندازه داده در هر قطعه.

اندازه هر تکه ردیف برای الگوریتم‌های «Chunk» و «Nibble». اندازه می تواند
یا تعدادی ردیف یا اندازه داده باشد. اندازه داده ها با پسوند مشخص می شود
k=کیبی بایت، M=مبی بایت، G=گیبی بایت. اندازه داده ها به تعدادی ردیف تبدیل می شود
با تقسیم بر میانگین طول ردیف.

--ستون ها
فرم کوتاه: -c; نوع: آرایه

این فهرست ستون‌های جدا شده با کاما را مقایسه کنید.

- پیکربندی
نوع: آرایه

این لیست فایل های پیکربندی جدا شده با کاما را بخوانید. اگر مشخص شود، این باید اولین مورد باشد
گزینه در خط فرمان

--تعارض-ستون
نوع: رشته

هنگامی که ردیف ها در طول همگام سازی "--دو جهته" با هم تداخل دارند، این ستون را مقایسه کنید.

وقتی یک سطر یکسان اما متفاوت پیدا شد، مقدار این ستون از هر سطر برابر است
با توجه به "--تعارض-مقایسه"، "---تعارض-ارزش" و
"--conflict-threshold" برای تعیین اینکه کدام ردیف داده های صحیح را دارد و تبدیل به ردیف می شود
منبع ستون می تواند هر نوع باشد که برای آن مناسب باشد
"--conflict-comparison" (این تقریباً همه انواع است به جز، به عنوان مثال، حباب).

این گزینه فقط با "--دو جهته" کار می کند. برای اطلاعات بیشتر به "همگام سازی دو جهته" مراجعه کنید
اطلاعات.

--تعارض-مقایسه
نوع: رشته

ستون "--conflict-" را با این ویژگی به عنوان منبع انتخاب کنید.

این گزینه بر چگونگی مقادیر "--conflict-column" از ردیف های متضاد تأثیر می گذارد.
مقایسه کرد. مقایسه‌های احتمالی یکی از این MAGIC_comparisons هستند:

جدیدترین|قدیمی ترین|بزرگترین|کمترین|برابر|منطبق است

مقایسه ردیف با
================================================= ==================
جدیدترین جدیدترین مقدار زمانی --conflict-column
قدیمی ترین قدیمی ترین مقدار زمانی --conflict-column
بزرگترین بزرگترین عددی "--conflict-Column value
حداقل مقدار حداقل عددی --conflict-Column
برابر --conflict-Column مقدار برابر با --conflict-value است
منطبق بر --conflict-مقدار ستون مطابق با الگوی regex پرل
--تعارض-ارزش

این گزینه فقط با "--دو جهته" کار می کند. برای اطلاعات بیشتر به "همگام سازی دو جهته" مراجعه کنید
اطلاعات.

--تعارض-خطا
نوع: رشته; پیش فرض: هشدار

نحوه گزارش تعارضات حل نشدنی و خطاهای درگیری

این گزینه نحوه اطلاع کاربر را در صورت عدم حل تعارض تغییر می دهد
باعث نوعی خطا می شود مقادیر ممکن عبارتند از:

* warn: یک هشدار برای STDERR در مورد تضاد غیر قابل حل چاپ کنید
* die: بمیرید، همگام سازی را متوقف کنید و یک هشدار در STDERR چاپ کنید

این گزینه فقط با "--دو جهته" کار می کند. برای اطلاعات بیشتر به "همگام سازی دو جهته" مراجعه کنید
اطلاعات.

-- آستانه تعارض
نوع: رشته

مقداری که یک «--ستون-تعارض-» باید بیشتر از دیگری باشد.

"--آستانه تعارض" از حل تعارض در صورت مطلق جلوگیری می کند
تفاوت بین دو مقدار "--conflict-column" کمتر از این مقدار است. برای
به عنوان مثال، اگر دو "--conflict-column" دارای مقادیر مهر زمانی "2009-12-01 12:00:00" باشند و
"2009-12-01 12:05:00" تفاوت 5 دقیقه است. اگر "--conflict-threshold" تنظیم شده باشد
به "5m" تضاد حل خواهد شد، اما اگر "--conflict-threshold" روی "6m" تنظیم شود.
تعارض حل نخواهد شد زیرا اختلاف بیشتر یا مساوی نیست
تا 6 دقیقه در این مورد اخیر، "--conflict-error" خرابی را گزارش می کند.

این گزینه فقط با "--دو جهته" کار می کند. برای اطلاعات بیشتر به "همگام سازی دو جهته" مراجعه کنید
اطلاعات.

--تعارض-ارزش
نوع: رشته

از این مقدار برای "--conflict-comparison" خاص استفاده کنید.

این گزینه مقدار "برابر" و "مطابق" "--conflict-comparison" را می دهد.

این گزینه فقط با "--دو جهته" کار می کند. برای اطلاعات بیشتر به "همگام سازی دو جهته" مراجعه کنید
اطلاعات.

-- پایگاه های داده
فرم کوتاه: -d; نوع: هش

فقط این فهرست پایگاه داده جدا شده با کاما را همگام کنید.

یک درخواست متداول همگام سازی جداول یک پایگاه داده با جداول پایگاه داده دیگر است
در سرور مشابه یا متفاوت این هنوز امکان پذیر نیست. "--پایگاه های داده" انجام نمی دهند
آن را انجام دهید، و شما نمی توانید آن را با قسمت D DSN نیز انجام دهید زیرا در غیاب a
نام جدول فرض می کند که کل سرور باید همگام سازی شود و فقط قسمت D کنترل می شود
پایگاه داده پیش فرض اتصال

---فایل پیش فرض
فرم کوتاه: -F; نوع: رشته

فقط گزینه های mysql را از فایل داده شده بخوانید. شما باید یک pathname مطلق بدهید.

-- خشک اجرا شود
تجزیه و تحلیل، تصمیم گیری الگوریتم همگام سازی برای استفاده، چاپ و خروج.

به معنای "--verbose" است تا بتوانید نتایج را ببینید. نتایج در همان خروجی است
قالبی که در واقع از اجرای ابزار مشاهده خواهید کرد، اما صفر برای آن وجود خواهد داشت
ردیف های تحت تأثیر این به این دلیل است که ابزار در واقع اجرا می شود، اما قبل از آن متوقف می شود
هر داده ای را مقایسه می کند و فقط صفر را برمی گرداند. صفرها به این معنی نیست که هیچ تغییری وجود ندارد
ساخته شدن.

--موتورها
فرم کوتاه: -e; نوع: هش

فقط این فهرست موتورهای ذخیره سازی جدا شده با کاما را همگام کنید.

--اجرا کردن
کوئری ها را اجرا کنید تا جداول داده های یکسانی داشته باشند.

این گزینه باعث می‌شود pt-table-sync در واقع داده‌های جدول را با اجرای تمام کوئری‌ها همگام‌سازی کند
که برای حل اختلافات جدول ایجاد کرد. از این رو، la جداول اراده be تغییر کرد!
و مگر اینکه "--verbose" را نیز مشخص کنید، تغییرات بی‌صدا انجام خواهند شد. اگر این
آن چیزی نیست که می خواهید، به "--print" یا "--dry-run" مراجعه کنید.

-- توضیح - میزبان
چاپ اطلاعات اتصال و خروج.

لیستی از میزبان هایی را که pt-table-sync به آنها متصل می شود، با همه موارد مختلف چاپ کنید
گزینه های اتصال، و خروج.

- دقت شناور
نوع: بین المللی

دقت برای تبدیل عدد به رشته "FLOAT" و "DOUBLE". باعث شناور شدن و
مقادیر DOUBLE باید به تعداد مشخص شده ارقام بعد از نقطه اعشار گرد شوند.
با ROUND() عملکرد در MySQL. این می تواند به جلوگیری از عدم تطابق جمع چک به دلیل
نمایش ممیز شناور متفاوت از مقادیر یکسان در MySQL مختلف
نسخه ها و سخت افزار پیش فرض بدون گرد کردن است. مقادیر تبدیل می شوند
رشته ها توسط CONCAT() تابع، و MySQL نمایش رشته را انتخاب می کند. اگر شما
برای مثال مقدار 2 را مشخص کنید، سپس مقادیر 1.008 و 1.009 به گرد می شوند.
1.01، و جمع چک برابر خواهد بود.

--[no]foreign-key-checks
پیش فرض: بله

بررسی کلید خارجی را فعال کنید ("SET FOREIGN_KEY_CHECKS=1").

با تعیین «--no-foreign-key-checks»، «FOREIGN_KEY_CHECKS=0» تنظیم می شود.

--عملکرد
نوع: رشته

کدام تابع هش را می‌خواهید برای چک‌سام‌ها استفاده کنید.

پیش فرض "CRC32" است. از دیگر گزینه های خوب می توان به «MD5» و «SHA1» اشاره کرد. اگر تو داری
تابع تعریف شده توسط کاربر "FNV_64" را نصب کرد، "pt-table-sync" آن را شناسایی می کند و
ترجیح می دهند از آن استفاده کنند، زیرا بسیار سریعتر از داخلی است. همچنین می توانید استفاده کنید
اگر آن تابع تعریف شده توسط کاربر را نصب کرده باشید، MURMUR_HASH. هر دوی اینها هستند
با Maatkit توزیع شده است. برای اطلاعات بیشتر و معیارها به pt-table-checksum مراجعه کنید.

--کمک
نشان دادن کمک و خروج.

--[no]hex-blob
پیش فرض: بله

ستون های "HEX()" BLOB، "TEXT" و "BINARY".

هنگامی که داده های ردیف از منبع برای ایجاد پرس و جوهایی برای همگام سازی داده ها واکشی می شود (یعنی
پرس و جوهایی که با "--print" دیده می شوند و توسط "--execute" اجرا می شوند)، ستون های باینری پیچیده می شوند
in HEX() بنابراین داده های باینری یک عبارت SQL نامعتبر تولید نمی کند. تو می توانی
این گزینه را غیرفعال کنید اما احتمالاً نباید این کار را انجام دهید.

-روح
فرم کوتاه: -h; نوع: رشته

به هاست متصل شوید.

--نادیده گرفتن-ستون ها
نوع: هش

این فهرست نام ستون‌ها را که با کاما از هم جدا شده‌اند در مقایسه نادیده بگیرید.

این گزینه باعث می شود که ستون ها با هم مقایسه نشوند. با این حال، اگر یک ردیف تعیین شده است
تفاوت بین جداول، تمام ستون های آن سطر بدون توجه به همگام سازی می شوند. (این نیست
در حال حاضر امکان حذف ستون‌ها از خود فرآیند همگام‌سازی، فقط از آن وجود دارد
مقایسه.)

--نادیده گرفتن-پایگاه های داده
نوع: هش

این فهرست پایگاه داده جدا شده با کاما را نادیده بگیرید.

(پایگاه های اطلاعاتی سیستم مانند اطلاعات_شما و performance_schema توسط نادیده گرفته می شوند
پیش فرض)

--نادیده گرفتن-موتورها
نوع: هش پیش‌فرض: FEDERATED,MRG_MyISAM

این فهرست موتورهای ذخیره سازی جدا شده با کاما را نادیده بگیرید.

--نادیده گرفتن-جدول
نوع: هش

این فهرست جداول جدا شده با کاما را نادیده بگیرید.

نام جدول ممکن است با نام پایگاه داده واجد شرایط باشد.

--نادیده گرفتن-جدول-regex
نوع: رشته; گروه: فیلتر

جداول را نادیده بگیرید که نام آنها با regex پرل مطابقت دارد.

--[no]index-hint
پیش فرض: بله

نکات FORCE/USE INDEX را به پرس و جوهای قطعه و ردیف اضافه کنید.

به طور پیش فرض "pt-table-sync" یک اشاره FORCE/USE INDEX به هر دستور SQL اضافه می کند تا مجبور شود.
MySQL به استفاده از شاخص انتخاب شده توسط الگوریتم همگام سازی یا مشخص شده توسط
"--chunk-index". این معمولاً چیز خوبی است، اما در موارد نادر ممکن است این شاخص نباشد
بهترین گزینه برای پرس و جو است، بنابراین می توانید با مشخص کردن اشاره شاخص را سرکوب کنید
"--no-index-hint" و اجازه دهید MySQL فهرست را انتخاب کند.

این بر جستارهای چاپ شده توسط "--print" تأثیر نمی گذارد. فقط روی قسمت و
پرس و جوهای ردیفی که "pt-table-sync" برای انتخاب و مقایسه ردیف ها استفاده می کند.

--قفل کردن
نوع: بین المللی

قفل کردن جداول: 0 = هیچ، 1 = در هر چرخه همگام سازی، 2 = در هر جدول، یا 3 = به صورت سراسری.

این از "LOCK TABLES" استفاده می کند. این می تواند به جلوگیری از تغییر جداول در حین کار کمک کند
بررسی آنها مقادیر ممکن به شرح زیر است:

معنی ارزش
================================================== ==========
0 هرگز جداول را قفل نکنید.
1 قفل و باز کردن یک بار در هر چرخه همگام سازی (همانطور که اجرا شده است
توسط الگوریتم همگام سازی). این گرانول ترین است
سطح قفل موجود به عنوان مثال، Chank
الگوریتم هر تکه از C را قفل می کند ردیف ها و سپس
اگر در منبع و منبع یکسان هستند آنها را باز کنید
مقصد، قبل از رفتن به قسمت بعدی.
2 قفل و باز کردن قفل قبل و بعد از هر جدول.
3 برای هر سرور (DSN) همگام سازی شده با یک بار قفل و باز کنید
سی .

اگر "--replicate" یا "--sync-to-master" باشد، یک برده تکرار هرگز قفل نمی شود.
مشخص شده است، زیرا در تئوری قفل کردن میز روی Master باید از هرگونه تغییر جلوگیری کند
از انجام شدن (شما در حال تغییر داده های برده خود نیستید، درست است؟) اگر "--wait" باشد
داده شده، Master (source) قفل می شود و سپس ابزار منتظر می ماند تا Slave به عقب برسد
قبل از ادامه به استاد

اگر "--transaction" مشخص شده باشد، "LOCK TABLES" استفاده نمی شود. در عوض، قفل و باز کنید
با شروع و انجام تراکنش ها اجرا می شوند. استثناء اگر است
"--lock" 3 است.

اگر "--no-transaction" مشخص شده باشد، "LOCK TABLES" برای هر مقدار از
"--قفل کردن". به "--[بدون]تراکنش" مراجعه کنید.

- قفل و تغییر نام
جدول مبدا و مقصد را قفل کنید، همگام سازی کنید، سپس نام ها را عوض کنید. این به عنوان مفید است
ALTER TABLE با مسدود کردن کمتر، زمانی که جداول به طور منطقی با یکدیگر همگام شوند
(که می توانید از طریق هر روشی از جمله تخلیه و بارگیری مجدد انجام دهید
یا حتی چیزی مانند pt-archiver). دقیقاً به دو DSN نیاز دارد و آنها را فرض می کند
در همان سرور هستند، بنابراین منتظر تکرار یا موارد مشابه نیست. جداول هستند
با جداول قفل قفل شده است.

--کلمه عبور
فرم کوتاه: -p; نوع: رشته

رمز عبور برای استفاده در هنگام اتصال. اگر رمز عبور حاوی کاما باشد، باید از آنها فرار کرد
با علامت معکوس: "exam\,ple"

-پید
نوع: رشته

فایل PID داده شده را ایجاد کنید. اگر فایل PID از قبل وجود داشته باشد، ابزار شروع نمی شود
PID موجود در آن با PID فعلی متفاوت است. با این حال، اگر فایل PID
وجود دارد و PID موجود در آن دیگر در حال اجرا نیست، ابزار PID را بازنویسی می کند
فایل با PID فعلی پس از خروج ابزار، فایل PID به طور خودکار حذف می شود.

--بندر
فرم کوتاه: -P; نوع: بین المللی

شماره پورت برای استفاده برای اتصال.

--چاپ
پرس و جوهایی را چاپ کنید که اختلافات را برطرف می کند.

اگر به "pt-table-sync" اعتماد ندارید، یا فقط می خواهید ببینید چه کاری انجام می دهد، این یک
راه خوبی برای ایمن بودن این پرس‌و‌جوها SQL معتبر هستند و اگر بخواهید خودتان می‌توانید آن‌ها را اجرا کنید
می خواهید جداول را به صورت دستی همگام سازی کنید.

---روش بازگشتی
نوع: آرایه پیش فرض: لیست فرآیندها، میزبان ها

روش بازگشتی ترجیحی که برای یافتن بردگان استفاده می‌شود.

روش های ممکن عبارتند از:

موارد استفاده از روش
=============================
فهرست فرآیند نمایش فهرست فرآیندها
میزبان ها SLAVE HOSTS را نشان می دهد
هیچ یک برده پیدا نکنید

روش لیست فرآیند ترجیح داده می شود زیرا SHOW SLAVE HOSTS قابل اعتماد نیست.
با این حال، در صورتی که سرور از یک پورت غیر استاندارد استفاده کند، روش هاست مورد نیاز است (نه
3306). معمولا pt-table-sync کار درست را انجام می دهد و برده ها را پیدا می کند، اما شما ممکن است
یک روش ترجیحی بدهید و ابتدا از آن استفاده خواهد شد. اگر هیچ برده ای پیدا نکرد،
روش های دیگر امتحان خواهد شد.

--جایگزین کردن
تمام عبارات "INSERT" و "UPDATE" را به صورت "REPLACE" بنویسید.

در صورت لزوم در صورت وجود موارد نقض شاخص منحصربفرد، این به طور خودکار روشن می شود.

--تکثیر
نوع: رشته

همگام سازی جداول فهرست شده به عنوان متفاوت در این جدول.

مشخص می کند که "pt-table-sync" باید جدول مشخص شده را بررسی کند تا داده هایی را پیدا کند
متفاوت است. جدول دقیقاً مشابه آرگومان همنام pt-table- است.
چک جمع یعنی حاوی رکوردهایی است که جداول (و محدوده مقادیر) متفاوت هستند
بین ارباب و برده

برای هر جدول و محدوده مقادیری که تفاوت بین master و
برده، "pt-table-checksum" آن جدول را با عبارت "WHERE" مناسب همگام می کند.
به اربابش

این به طور خودکار "--wait" را روی 60 تنظیم می کند و باعث می شود تغییراتی در Master اعمال شود
به جای برده

اگر "--sync-to-master" مشخص شده باشد، این ابزار فرض می کند سروری که شما مشخص کرده اید
Slave، و طبق معمول برای همگام سازی به Master متصل شوید.

در غیر این صورت، سعی می کند از "SHOW PROCESSLIST" برای یافتن بردهای سرور شما استفاده کند.
مشخص شده. اگر از طریق "SHOW PROCESSLIST" نتواند هیچ برده ای را پیدا کند، بازرسی می کند
درعوض «Show SLAVE HOSTS». شما باید "گزارش میزبان" هر برده را پیکربندی کنید،
"گزارش-پورت" و گزینه های دیگر برای این کار درست است. پس از یافتن بردگان، خواهد شد
جدول مشخص شده در هر برد را بررسی کنید تا داده هایی را که نیاز به همگام سازی دارند پیدا کنید
آن را همگام کنید

این ابزار ابتدا نسخه اصلی جدول را بررسی می کند، با این فرض که Master است
به طور بالقوه یک برده نیز هست. هر جدولی که تفاوت ها را نشان دهد وجود خواهد داشت نه be
همگام سازی شده روی برده (ها) به عنوان مثال، فرض کنید Replication شما به صورت A->B تنظیم شده است،
ب-> ج، ب-> د. فرض کنید از این آرگومان استفاده می کنید و سرور B را مشخص می کنید
کپی سرور B از جدول را بررسی کنید. اگر مانند داده های سرور B در جدول به نظر می رسد
"test.tbl1" با کپی سرور A متفاوت است، ابزار آن جدول را روی آن همگام نمی کند
سرورهای C و D.

--set-vars
نوع: آرایه

متغیرهای MySQL را در این لیست جفت "variable=value" جدا شده با کاما تنظیم کنید.

به طور پیش فرض، ابزار مجموعه های زیر را تنظیم می کند:

wait_timeout=10000

متغیرهای مشخص شده در خط فرمان این پیش فرض ها را لغو می کنند. مثلا،
با تعیین "--set-vars wait_timeout=500" مقدار پیش فرض 10000 لغو می شود.

ابزار یک هشدار چاپ می کند و اگر متغیری تنظیم نشود ادامه می دهد.

-- سوکت
فرم کوتاه: -S; نوع: رشته

فایل سوکت برای استفاده برای اتصال.

- همگام سازی با استاد
با DSN به عنوان یک برده رفتار کنید و آن را با master خود همگام کنید.

با سروری که مشخص کرده اید به عنوان برده رفتار کنید. "Show SLAVE STATUS" را بررسی کنید، به آن متصل شوید
سرور سرور، و با ارباب به عنوان منبع و با برده به عنوان منبع رفتار کنید
مقصد باعث ایجاد تغییرات در Master می شود. "--wait" را روی 60 تنظیم می کند
پیش‌فرض، «--lock» را به‌طور پیش‌فرض روی ۱ تنظیم می‌کند و «--[no]transaction» را به‌طور پیش‌فرض غیرفعال می‌کند.
همچنین "--replicate" را ببینید که رفتار این گزینه را تغییر می دهد.

-- جداول
فرم کوتاه: -t; نوع: هش

فقط این فهرست جداول جدا شده با کاما را همگام کنید.

نام جدول ممکن است با نام پایگاه داده واجد شرایط باشد.

--تایم اوت-خوب
اگر «--صبر کن» شکست خورد، ادامه دهید.

اگر «--wait» را مشخص کنید و Slave به موقعیت master قبل از آن نرسد.
زمان انتظار تمام می شود، رفتار پیش فرض این است که لغو شود. این گزینه باعث می شود که ابزار حفظ شود
به هر حال رفتن هشدار: اگر می خواهید مقایسه ای ثابت بین
دو سرور، احتمالاً نمی‌خواهید پس از یک تایم اوت به کار خود ادامه دهید.

--[بدون]تراکنش
از تراکنش ها به جای "LOCK TABLES" استفاده کنید.

جزئیات شروع و انجام تراکنش ها با "--lock" کنترل می شود.
این به طور پیش‌فرض فعال است، اما از آنجایی که "--lock" به طور پیش‌فرض غیرفعال است، هیچ وجود ندارد
اثر.

اکثر گزینه هایی که قفل را فعال می کنند به طور پیش فرض تراکنش ها را نیز غیرفعال می کنند، بنابراین اگر بخواهید
برای استفاده از قفل تراکنش (از طریق "LOCK IN SHARE MODE" و "FOR UPDATE"، باید
"--transaction" را به صراحت مشخص کنید.

اگر "--transaction" را به صراحت مشخص نکنید، "pt-table-sync" در مورد هر- تصمیم می گیرد
بر اساس جدول، آیا از تراکنش ها استفاده کنید یا از قفل جدول. در حال حاضر استفاده می کند
تراکنش‌ها در جداول InnoDB و قفل‌های جداول در سایر جداول.

اگر "--no-transaction" مشخص شده باشد، "pt-table-sync" از تراکنش های موجود در
همه (حتی برای جداول InnoDB) و قفل توسط "--lock" کنترل می شود.

هنگامی که فعال باشد، به طور صریح یا ضمنی، سطح جداسازی تراکنش تنظیم می شود
"REPEATABLE READ" و تراکنش ها "WITH CONSISTENT SNAPSHOT" شروع می شوند.

-- تراشیدن
ستون های "TRIM()" "VARCHAR" در حالت های "BIT_XOR" و "ACCUM". هنگام مقایسه MySQL کمک می کند
4.1 تا >= 5.0.

این زمانی مفید است که به تفاوت فضای انتهایی بین MySQL اهمیتی نمی دهید
نسخه هایی که در مدیریت فضاهای دنباله دار متفاوت هستند. همه MySQL 5.0 و جدیدتر
فضاهای انتهایی را در "VARCHAR" حفظ کنید، در حالی که نسخه های قبلی آنها را حذف می کردند.

--[بدون]چک های منحصر به فرد
پیش فرض: بله

بررسی کلیدهای منحصر به فرد را فعال کنید ("SET UNIQUE_CHECKS=1").

تعیین "--no-unique-checks" باعث "SET UNIQUE_CHECKS=0" می شود.

--کاربر
فرم کوتاه: -u; نوع: رشته

کاربر برای ورود اگر کاربر فعلی نیست.

-- پرحرف
فرم کوتاه: -v; تجمعی: بله

چاپ نتایج عملیات همگام سازی

برای جزئیات بیشتر در مورد خروجی به "OUTPUT" مراجعه کنید.

- نسخه
نمایش نسخه و خروج

--[no]version-check
پیش فرض: بله

آخرین نسخه Percona Toolkit، MySQL و سایر برنامه ها را بررسی کنید.

این یک ویژگی استاندارد «بررسی خودکار به‌روزرسانی‌ها» با دو ویژگی دیگر است
امکانات. ابتدا این ابزار نسخه سایر برنامه ها را در سیستم محلی بررسی می کند
علاوه بر نسخه خودش به عنوان مثال، نسخه هر سرور MySQL را بررسی می کند
به Perl و ماژول Perl DBD::mysql متصل می شود. دوم اینکه بررسی می کند و هشدار می دهد
در مورد نسخه هایی با مشکلات شناخته شده به عنوان مثال، MySQL 5.5.25 یک باگ بحرانی داشت و
به عنوان 5.5.25a دوباره منتشر شد.

هر گونه به روز رسانی یا مشکل شناخته شده قبل از خروجی عادی ابزار در STDOUT چاپ می شود.
این ویژگی هرگز نباید در عملکرد عادی ابزار اختلال ایجاد کند.

برای اطلاعات بیشتر مراجعه کنید .

--صبر کن
فرم کوتاه: -w; نوع: زمان

چقدر منتظر بمانند تا بردگان به ارباب خود برسند.

قبل از مقایسه، استاد را وادار کنید که منتظر بماند تا Slave در Replication به آن برسد
جداول مقدار، تعداد ثانیه هایی است که باید قبل از اتمام زمان منتظر بمانید (همچنین ببینید
"--timeout-ok"). "--lock" را به طور پیش فرض روی 1 و "--[no]transaction" را روی 0 تنظیم می کند. اگر شما
خطای زیر را ببینید

MASTER_POS_WAIT -1 را برگرداند

این بدان معناست که مدت زمان بیش از حد مجاز است و باید آن را افزایش دهید.

مقدار پیش فرض این گزینه تحت تأثیر سایر گزینه ها قرار دارد. تا ببینیم چه ارزشی دارد
در واقع با "--help" اجرا کنید.

برای غیرفعال کردن کامل انتظار (به استثنای قفل)، "--wait" را 0 مشخص کنید. این به زمانی کمک می کند که
برده روی میزهایی که همگام سازی نمی شوند عقب مانده است.

--جایی که
نوع: رشته

بند "WHERE" برای محدود کردن همگام سازی در بخشی از جدول.

--[نه] تکه صفر
پیش فرض: بله

یک تکه برای ردیف هایی با مقادیر صفر یا صفر اضافه کنید. تنها زمانی که اثر دارد
"--chunk-size" مشخص شده است. هدف از قطعه صفر گرفتن a است
تعداد بالقوه زیادی از مقادیر صفر که باعث عدم تعادل در اندازه اول می شود
تکه. به عنوان مثال، اگر تعداد زیادی اعداد منفی در یک علامت بدون علامت درج شده باشند
ستون عدد صحیح باعث می شود که آنها به صورت صفر ذخیره شوند، سپس این مقادیر صفر گرفته می شوند
توسط تکه صفر به جای تکه اول و تمام مقادیر غیر صفر آن.

DSN OPTIONS


این گزینه های DSN برای ایجاد یک DSN استفاده می شود. هر گزینه مانند "option=value" داده می شود.
گزینه ها به حروف بزرگ و کوچک حساس هستند، بنابراین P و p یک گزینه نیستند. نمی تواند وجود داشته باشد
فضای خالی قبل یا بعد از "="" و اگر مقدار دارای فضای خالی باشد باید نقل قول شود.
گزینه های DSN با کاما از هم جدا شده اند. برای جزئیات کامل به صفحه مدیریت percona-toolkit مراجعه کنید.

· آ

dsn: charset; کپی: بله

مجموعه کاراکترهای پیش فرض

· د

dsn: پایگاه داده; کپی: بله

پایگاه داده حاوی جدولی که باید همگام سازی شود.

· اف

dsn: mysql_read_default_file; کپی: بله

فقط گزینه های پیش فرض را از فایل داده شده بخوانید

· ساعت

dsn: میزبان; کپی: بله

به هاست متصل شوید.

· پ

dsn: رمز عبور; کپی: بله

رمز عبور برای استفاده در هنگام اتصال. اگر رمز عبور حاوی کاما باشد، باید از آنها فرار کرد
با علامت معکوس: "exam\,ple"

· پ

dsn: پورت; کپی: بله

شماره پورت برای استفاده برای اتصال.

· س

dsn: mysql_socket; کپی: بله

فایل سوکت برای استفاده برای اتصال.

· تی

کپی: بله

جدول برای همگام سازی

· تو

dsn: user; کپی: بله

کاربر برای ورود اگر کاربر فعلی نیست.

محیط زیست


متغیر محیطی "PTDEBUG" خروجی اشکال زدایی کامل را در STDERR فعال می کند. برای فعال کردن
اشکال زدایی و ضبط تمام خروجی ها در یک فایل، ابزار را مانند:

PTDEBUG=1 pt-table-sync ... > FILE 2>&1

مراقب باشید: خروجی اشکال زدایی حجیم است و می تواند چندین مگابایت خروجی تولید کند.

SYSTEM الزامات


شما به Perl، DBI، DBD::mysql و برخی از بسته های اصلی نیاز دارید که باید در هر کدام از آنها نصب شوند.
نسخه نسبتاً جدید پرل.

از pt-table-syncp به صورت آنلاین با استفاده از خدمات onworks.net استفاده کنید



جدیدترین برنامه های آنلاین لینوکس و ویندوز