این دستور pt-table-checksump است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
pt-table-checksum - یکپارچگی تکرار MySQL را تأیید کنید.
خلاصه
استفاده: pt-table-checksum [OPTIONS] [DSN]
pt-table-checksum با اجرای checksum یک بررسی سازگاری تکرار آنلاین را انجام می دهد
پرسوجوهایی بر روی Master، که نتایج متفاوتی را در رونوشتهای متناقض ایجاد میکند
با استاد DSN اختیاری میزبان اصلی را مشخص می کند. "وضعیت خروج" ابزار است
در صورت مشاهده هر گونه تفاوت، یا هر گونه هشدار یا خطا، غیر صفر است.
دستور زیر به replication master در لوکال هاست متصل می شود، checksum هر
جدول، و نتایج را در مورد هر ماکت شناسایی شده گزارش کنید:
pt-table-checksum
این ابزار بر روی یافتن تفاوت های داده ها به طور موثر متمرکز شده است. اگر هر داده متفاوت است،
می توانید با pt-table-sync مشکل را حل کنید.
خطرات
Percona Toolkit بالغ است، در دنیای واقعی اثبات شده است، و به خوبی آزمایش شده است، اما همه پایگاه داده است
ابزارها می توانند برای سیستم و سرور پایگاه داده خطر ایجاد کنند. قبل از استفاده از این ابزار،
لطفا:
· اسناد ابزار را بخوانید
· بررسی "BUGS" شناخته شده ابزار
· ابزار را روی یک سرور غیر تولیدی تست کنید
· از سرور تولید خود نسخه پشتیبان تهیه کنید و پشتیبان گیری را تأیید کنید
همچنین به "محدودیت ها" مراجعه کنید.
شرح
pt-table-checksum طوری طراحی شده است که تقریباً در هر موردی به طور پیش فرض کار درست را انجام دهد. چه زمانی
بدون شک، از "--explain" استفاده کنید تا ببینید چگونه ابزار یک جدول را بررسی می کند. زیر یک است
نمای کلی سطح بالا از نحوه عملکرد ابزار.
برخلاف نسخه های قدیمی pt-table-checksum، این ابزار بر روی یک تک متمرکز شده است
هدف، و پیچیدگی زیادی ندارد یا از جمع بندی های مختلف مختلف پشتیبانی نمی کند
تکنیک. پرسوجوهای جمعبندی چک را تنها بر روی یک سرور اجرا میکند و این پرسوجوها از طریق آن جریان مییابند
Replication برای اجرای مجدد روی Replicas. اگر به رفتار قدیمی تر نیاز دارید، می توانید استفاده کنید
Percona Toolkit نسخه 1.0.
pt-table-checksum به سروری که شما مشخص کرده اید متصل می شود و پایگاه داده ها و جداولی را پیدا می کند که
فیلترهایی را که مشخص کرده اید (در صورت وجود) مطابقت دهید. این یک جدول در یک زمان کار می کند، بنابراین این کار را نمی کند
مقدار زیادی از حافظه را جمع آوری کنید یا کارهای زیادی را قبل از شروع بررسی جمع انجام دهید. این
آن را در سرورهای بسیار بزرگ قابل استفاده می کند. ما از آن در سرورهایی با صدها مورد استفاده کرده ایم
هزاران پایگاه داده و جدول و تریلیون ها ردیف. مهم نیست که سرور چقدر بزرگ است
است، pt-table-checksum به همان اندازه خوب کار می کند.
یکی از دلایلی که می تواند روی میزهای بسیار بزرگ کار کند این است که هر میز را به تکه هایی از آن تقسیم می کند
ردیفها و جمعبندی هر تکه با یک جستار REPLACE..SELECT. این تکه را تغییر می دهد
اندازه برای اجرای پرس و جوهای چک جمع در مدت زمان مورد نظر. هدف تکه تکه شدن
جداول، به جای انجام هر جدول با یک پرس و جو بزرگ، برای اطمینان از آن است
چکسامها غیرقابل نفوذ هستند و باعث تاخیر یا بارگذاری بیش از حد روی سرور نمیشوند.
به همین دلیل زمان هدف برای هر قطعه به طور پیش فرض 0.5 ثانیه است.
این ابزار سرعتی که سرور قادر به اجرای پرس و جوها است را پیگیری می کند و تنظیم می کند
تکه های آن به عنوان اطلاعات بیشتر در مورد عملکرد سرور. از یک به صورت نمایی استفاده می کند
میانگین وزنی پوسیده برای ثابت نگه داشتن اندازه تکه، اما در صورت وجود پاسخگو باقی می ماند
عملکرد سرور به هر دلیلی در حین چکسامینگ تغییر میکند. این بدان معنی است که ابزار
اگر سرور شما در حین افزایش ترافیک به شدت بارگذاری شود، به سرعت خود را دریچه گاز خواهد گرفت
یا یک کار پس زمینه، برای مثال.
قطعه کردن با تکنیکی انجام می شود که در ابزارهای دیگر آن را "نیبلینگ" می نامیدیم
جعبه ابزار Percona. این همان تکنیکی است که برای مثال برای pt-archiver استفاده می شود. میراث
الگوریتمهای chunking مورد استفاده در نسخههای قدیمیتر pt-table-checksum حذف میشوند، زیرا آنها
منجر به تکه هایی با اندازه قابل پیش بینی نشد و در بسیاری از جداول به خوبی کار نکرد. همه آنها
برای تقسیم یک جدول به تکهها، یک شاخص (ترجیحاً اولیه) ضروری است
کلید یا شاخص منحصر به فرد). اگر هیچ شاخصی وجود نداشته باشد، و جدول حاوی مقدار مناسبی است
تعداد ردیفها، ابزار جمعبندی جدول را در یک تکه بررسی میکند.
pt-table-checksum چندین محافظ دیگر دارد تا اطمینان حاصل شود که با هیچ کدام تداخلی ندارد
عملکرد سرور، از جمله کپی ها. برای انجام این کار، pt-table-checksum شناسایی می کند
کپی می کند و به طور خودکار به آنها متصل می شود. (اگر این کار انجام نشد، می توانید به آن اشاره کنید
گزینه "--recursion-method".)
این ابزار به طور مداوم کپی ها را رصد می کند. اگر هر ماکتی خیلی عقب بماند
Replication، pt-table-checksum مکث می کند تا به آن برسد. اگر هر ماکتی دارای یک
خطا یا تکرار متوقف می شود، pt-table-checksum مکث می کند و منتظر می ماند. علاوه بر این، pt-table-
چک سام به دنبال علل رایج مشکلات، مانند فیلترهای تکرار، می گردد و از انجام آن امتناع می ورزد
عمل کنید مگر اینکه شما آن را مجبور کنید. فیلترهای تکرار خطرناک هستند، زیرا نمایش داده شد
که pt-table-checksum اجرا می شود به طور بالقوه می تواند با آنها تضاد داشته باشد و باعث تکرار شود
شکست خوردن
pt-table-checksum تأیید میکند که تکهها آنقدر بزرگ نیستند که جمع کنترلی ایمن نباشد. اجرا می کند
یک پرس و جو توضیح در هر بخش، و از تکه هایی که ممکن است بزرگتر از مورد دلخواه باشند رد می شود
تعداد ردیف ها شما می توانید حساسیت این محافظ را با
گزینه "--chunk-size-limit". اگر یک جدول در یک تکه جمع شود زیرا آن را دارد
دارای تعداد کمی سطر است، سپس pt-table-checksum علاوه بر این تأیید می کند که جدول
در کپی ها بزرگ نیست. با این کار از سناریوی زیر جلوگیری میشود: یک جدول روی آن خالی است
master اما در یک replica بسیار بزرگ است و در یک جستار بزرگ جمع می شود که
باعث تاخیر بسیار طولانی در تکرار می شود.
چندین محافظ دیگر وجود دارد. به عنوان مثال، pt-table-checksum سطح جلسه خود را تنظیم می کند
innodb_lock_wait_timeout تا 1 ثانیه، به طوری که اگر یک قفل منتظر بود، آن خواهد بود
قربانی بهجای اینکه درخواستهای دیگر را به پایان برساند. محافظ دیگری بار روی آن را بررسی می کند
سرور پایگاه داده، و اگر بار خیلی زیاد باشد، مکث می کند. هیچ پاسخ درست واحدی وجود ندارد
برای چگونگی انجام این کار، اما به طور پیش فرض pt-table-checksum در صورت وجود بیش از 25 متوقف می شود
اجرای همزمان کوئری ها احتمالاً باید یک مقدار معقول برای سرور خود تعیین کنید
گزینه "--max-load".
Checksumming معمولاً یک کار با اولویت پایین است که باید به کارهای دیگر روی سرور تسلیم شود.
با این حال، ابزاری که باید دائماً راه اندازی مجدد شود، استفاده از آن دشوار است. بنابراین، pt-table-
چک سام در برابر خطاها بسیار مقاوم است. به عنوان مثال، اگر مدیر پایگاه داده نیاز داشته باشد
به هر دلیلی کوئری های pt-table-checksum را بکشید، این یک خطای کشنده نیست. کاربران اغلب
pt-kill را برای از بین بردن هر گونه جستجوی جمعبندی کنترلی طولانیمدت اجرا کنید. ابزار یک پرس و جو کشته شده را دوباره امتحان می کند
یک بار، و اگر دوباره شکست بخورد، به قسمت بعدی آن جدول میرود. همینطور
اگر وقفه انتظار قفل وجود داشته باشد، رفتار اعمال می شود. در این صورت ابزار یک هشدار چاپ می کند
یک خطا اتفاق می افتد، اما فقط یک بار در هر جدول. اگر اتصال به هر سروری از کار افتاد، pt-
table-checksum سعی خواهد کرد دوباره متصل شود و به کار خود ادامه دهد.
اگر pt-table-checksum با شرایطی مواجه شود که باعث توقف کامل آن شود، آسان است
برای از سرگیری آن با گزینه "--Resume". از آخرین قسمت آخر شروع خواهد شد
جدولی که پردازش کرد همچنین می توانید با CTRL-C با خیال راحت ابزار را متوقف کنید. تمام خواهد شد
تکه ای که در حال حاضر در حال پردازش است و سپس خارج شوید. می توانید طبق معمول آن را از سر بگیرید
پس از آن
پس از اینکه pt-table-checksum جمع بندی تمام تکه های جدول را به پایان رساند، مکث می کند و
منتظر می ماند تا تمام کپی های شناسایی شده اجرای پرس و جوهای چک جمع را به پایان برسانند. یک بار که است
تمام شد، تمام کپی ها را بررسی می کند تا ببیند آیا آنها همان داده های اصلی را دارند،
و سپس یک خط خروجی را با نتایج چاپ می کند. نمونه ای از خروجی آن را می توانید مشاهده کنید
بعداً در این مستندات
این ابزار نشانگرهای پیشرفت را در طول عملیات وقت گیر چاپ می کند. الف را چاپ می کند
نشانگر پیشرفت با جمع بندی هر جدول. پیشرفت توسط محاسبه می شود
تعداد سطرهای برآورد شده در جدول همچنین در صورت توقف، گزارش پیشرفت را چاپ خواهد کرد
منتظر بمانید تا تکثیر به نتیجه برسد، و زمانی که منتظر است نسخههای مشابه را بررسی کنید
تفاوت با استاد میتوانید خروجی را با «--quiet» کمتر پرمخاطب کنید.
گزینه.
در صورت تمایل، می توانید جداول چک جمع را به صورت دستی پرس و جو کنید تا گزارشی از کدام جداول دریافت کنید
و تکه ها تفاوت هایی با استاد دارند. پرس و جو زیر هر یک را گزارش خواهد کرد
پایگاه داده و جدول با تفاوت، به همراه خلاصه ای از تعداد تکه ها و ردیف ها
احتمالاً تحت تأثیر قرار گرفته است:
SELECT db، tbl، SUM(this_cnt) AS total_rows، COUNT(*) AS chunks
از percona.checksums
جایی که (
master_cnt <> this_cnt
یا master_crc <> this_crc
OR ISNULL(master_crc) <> ISNULL(this_crc))
GROUP BY db, tbl;
جدولی که در آن پرس و جو به آن ارجاع داده می شود، جدول چک جمع است، جایی که جمع های چک ذخیره می شوند.
هر سطر در جدول شامل جمع کنترلی یک تکه داده از برخی از جدول ها است
سرور
نسخه 2.0 pt-table-checksum با نسخه pt-table-sync سازگار نیست
1.0. در برخی موارد این مشکل جدی نیست. اضافه کردن یک ستون "مرز" به
جدول، و سپس به روز رسانی آن با یک عبارت WHERE دستی تولید شده، ممکن است برای اجازه دادن به pt- کافی باشد.
table-sync نسخه 1.0 با pt-table-checksum نسخه 2.0 تعامل دارد. با فرض یک
کلید اولیه عدد صحیح با نام "id"، می توانید چیزی شبیه به زیر را امتحان کنید:
جدول ALTER checksums ADD مرزها را نشان می دهد وارچار(500)؛
به روز رسانی چک
SET مرزها = COALESCE(CONCAT('id BETWEEN', bottom_boundary,
'AND'، upper_boundary)، '1=1');
محدودیت ها
کپی با استفاده از تکرار مبتنی بر ردیف
pt-table-checksum به تکرار مبتنی بر دستور نیاز دارد و تنظیم می شود
"binlog_format=STATEMENT" روی Master، اما به دلیل محدودیت MySQL، کپیها این کار را نمیکنند.
به این تغییر احترام بگذارید بنابراین، جمعهای کنترلی با استفاده از هیچ کپی از گذشته کپی نمیکنند
تکثیر مبتنی بر ردیف که برای کپی های بیشتر استاد هستند.
این ابزار به طور خودکار "binlog_format" را در همه سرورها بررسی می کند. دیدن
"--[no]check-binlog-format" .
(اشکال 899415 )
تفاوت طرحواره و جدول
این ابزار فرض میکند که طرحوارهها و جداول روی Master و همه یکسان هستند
ماکت ها برای مثال اگر یک ماکت طرحواره نداشته باشد، تکرار شکسته می شود
که در Master وجود دارد (و این طرحواره چک جمع شده است)، یا اگر ساختار a
جدول روی ماکت با جدول اصلی متفاوت است.
پرکونا XtraDB خوشه
pt-table-checksum با Percona XtraDB Cluster (PXC) 5.5.28-23.7 و جدیدتر کار می کند. را
با توجه به اینکه می توان از آن استفاده کرد، تعداد تنظیمات ممکن Percona XtraDB Cluster زیاد است
تکرار منظم نیز. بنابراین، فقط تنظیمات ذکر شده در زیر پشتیبانی می شوند و
شناخته شده به کار سایر تنظیمات، مانند خوشه به خوشه، پشتیبانی نمی شوند و احتمالاً پشتیبانی نمی شوند
کار می کنند.
به جز موارد ذکر شده، همه تنظیمات پشتیبانی شده زیر نیاز به استفاده از "dsn" دارند
روش "--recursion-method" برای تعیین گره های خوشه ای. همچنین، بررسی تاخیر (نگاه کنید به
"REPLICA CHECKS") برای گره های خوشه ای انجام نمی شود.
منفرد خوشه
سادهترین راهاندازی PXC یک کلاستر است: همه سرورها گرههای خوشهای هستند و در آنجا وجود دارند
هیچ کپی معمولی نیستند اگر همه گره ها در جدول DSN مشخص شده باشند (نگاه کنید به
"--recursion-method")، سپس می توانید ابزار را بر روی هر گره و هر تفاوتی در هر گره اجرا کنید.
گره های دیگر شناسایی خواهند شد.
همه گره ها باید در یک خوشه باشند (مقدار "wsrep_cluster_name" یکسانی داشته باشند)، در غیر این صورت
ابزار با خطا خارج می شود. اگرچه ممکن است خوشه های مختلف با
با همین نام، این کار نباید انجام شود و پشتیبانی نمی شود. این برای همه صدق می کند
تنظیمات پشتیبانی شده
تک خوشه با ماکت
گرههای خوشهای همچنین میتوانند استادهای معمولی باشند و به کپیهای معمولی تکرار شوند. با این حال،
این ابزار فقط در صورتی می تواند تفاوت ها را روی یک ماکت تشخیص دهد که روی "گره اصلی" ماکت اجرا شود.
برای مثال، اگر راهاندازی خوشه این است،
node1 node2 node3
| |
| +-> replica3
+-> replica2
شما می توانید تفاوت ها را در replica3 با اجرای ابزار در node3 تشخیص دهید، اما برای تشخیص تفاوت ها در
replica2 باید دوباره ابزار را روی node2 اجرا کنید. اگر ابزار را روی node1 اجرا کنید، این کار را انجام می دهد
تفاوت ها را روی هر یک از ماکت ها تشخیص نمی دهد.
در حال حاضر، ابزار این تنظیمات را شناسایی نمیکند یا در مورد کپیهایی که نمیتوانند باشند هشداری نمیدهد
بررسی شده است (به عنوان مثال replica2 هنگام اجرا در node3).
کپیهای موجود در این راهاندازی همچنان تحت «--[no]check-binlog-format» هستند.
از استاد به تک خوشه
این امکان برای یک استاد معمولی وجود دارد که به یک خوشه همانندسازی کند، گویی خوشه وجود دارد
یک برده منطقی، مانند:
master -> node1 node2 node3
این ابزار از این تنظیمات پشتیبانی میکند، اما فقط در صورتی که روی Master اجرا شود و تمام گرهها در آن اجرا شوند
خوشه با "مثل مستقیم" (گره 1 در این مثال) سازگار است
استاد. به عنوان مثال، اگر همه گره ها مقدار "foo" را برای ردیف 1 داشته باشند اما master دارای مقدار باشد
"نوار" برای همان ردیف، این تفاوت شناسایی خواهد شد. یا اگر فقط node1 این تفاوت را داشته باشد،
نیز شناسایی خواهد شد. اما اگر فقط node2 یا node3 این تفاوت را داشته باشند، نخواهد بود
شناسایی شده. بنابراین، از این تنظیمات برای بررسی اینکه Master و Cluster به عنوان a استفاده میشود
کل سازگار هستند.
در این راهاندازی، ابزار میتواند بهطور خودکار «مثل مستقیم» (node1) را هنگام اجرا شناسایی کند
در Master، بنابراین شما مجبور نیستید از روش "dsn" برای "--recursion-method" استفاده کنید.
زیرا node1 کل خوشه را نشان می دهد، به همین دلیل است که تمام گره های دیگر باید باشند
با آن سازگار است.
این ابزار هنگامی که این تنظیمات را شناسایی می کند هشدار می دهد تا به شما یادآوری کند که فقط در صورت استفاده کار می کند
همانطور که در بالا توضیح داده شد. این اخطارها بر وضعیت خروج از ابزار تأثیر نمی گذارد. آنها هستند
فقط یادآوری برای کمک به جلوگیری از نتایج مثبت کاذب.
OUTPUT
این ابزار نتایج جدولی را، یک خط در هر جدول چاپ می کند:
TS ERRORS DIFFS rows chunks Skipped Time Table
10-20T08:36:50 0 0 200 1 0 0.005 db1.tbl1
10-20T08:36:50 0 0 603 7 0 0.035 db1.tbl2
10-20T08:36:50 0 0 16 1 0 0.003 db2.tbl3
10-20T08:36:50 0 0 600 6 0 0.024 db2.tbl4
خطاها، هشدارها، و گزارش های پیشرفت به خطای استاندارد چاپ می شوند. همچنین به "--سکوت" مراجعه کنید.
نتایج هر جدول زمانی چاپ می شود که ابزار جمع بندی جدول را به پایان برساند. را
ستون ها به شرح زیر است:
TS مهر زمانی (بدون سال) زمانی که ابزار جمع بندی جدول را به پایان رساند.
خطاها
تعداد خطاها و هشدارهایی که هنگام چک کردن جدول رخ داده است. خطاها
و هشدارها با خطای استاندارد در حالی که جدول در حال پیشرفت است چاپ می شود.
تفاوت
تعداد تکه هایی که در یک یا چند ماکت با اصلی متفاوت است. اگر
"--no-replicate-check" مشخص شده است، این ستون همیشه دارای صفر خواهد بود. اگر
"--replicate-check-only" مشخص شده است، سپس فقط جداول با تفاوت چاپ می شوند.
ردیف ها
تعداد سطرهای انتخاب شده و جمعبندی شده از جدول. ممکن است متفاوت باشد
در صورت استفاده از گزینه --where از تعداد ردیف های جدول.
تکه ها
تعداد تکه هایی که جدول به آنها تقسیم شده است.
رد شد
تعداد تکه هایی که به دلیل یک یا چند مورد از این مشکلات نادیده گرفته شدند:
* MySQL از --chunk-index استفاده نمی کند
* MySQL از فهرست کامل قطعه استفاده نمی کند (--[no]check-plan)
* اندازه تکه بزرگتر از --chunk-size * --chunk-size-limit است
* زمان انتظار قفل از حد گذشته است (--تلاش مجدد)
* جستجوی جمع چک از بین رفت (--تلاش مجدد)
در pt-table-checksum 2.2.5، تکه های نادیده گرفته شده باعث ایجاد یک "وضعیت خروج" غیر صفر می شود.
TIME
زمان سپری شده هنگام چک کردن جدول.
جدول
پایگاه داده و جدولی که جمع بندی شد.
اگر «--replicate-check-only» مشخص شده باشد، تنها تفاوت جمع کنترلی در کپی های شناسایی شده
چاپ می شوند. خروجی متفاوت است: یک پاراگراف در هر ماکت، یک اختلاف جمع کنترلی
در هر خط، و مقادیر با فاصله از هم جدا می شوند:
تفاوت در h=127.0.0.1، P=12346
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.tbl1 1 0 1 اولیه 1 100
db1.tbl1 6 0 1 اولیه 501 600
تفاوت در h=127.0.0.1، P=12347
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.tbl1 1 0 1 اولیه 1 100
db2.tbl2 9 5 0 اولیه 101 200
خط اول یک پاراگراف نشان دهنده ماکت با تفاوت است. در این مثال
دو مورد وجود دارد: h=127.0.0.1، P=12346 و h=127.0.0.1، P=12347. ستون ها به شرح زیر است:
جدول
پایگاه داده و جدولی که با اصلی متفاوت است.
تکه
شماره تکه جدول که با اصلی متفاوت است.
CNT_DIFF
تعداد ردیفهای تکهای روی ماکت منهای تعداد ردیفهای تکهای روی Master.
CRC_DIFF
1 اگر CRC تکه روی ماکت با CRC تکه روی ماکت متفاوت باشد
استاد، دیگری 0.
CHUNK_INDEX
شاخص مورد استفاده برای تکه تکه کردن جدول.
LOWER_BOUNDARY
مقادیر شاخصی که مرز پایینی قطعه را مشخص می کند.
UPPER_BOUNDARY
مقادیر شاخصی که مرز بالایی قطعه را مشخص می کند.
خروج وضعیت
pt-table-checksum دارای سه وضعیت خروجی ممکن است: صفر، 255، و هر مقدار دیگری یک
بیت ماسک با پرچم برای مشکلات مختلف.
وضعیت خروج صفر نشاندهنده عدم وجود خطا، اخطار، یا اختلاف جمعبندی است یا رد شده است
تکه ها یا میزها
وضعیت خروج 255 نشان دهنده یک خطای کشنده است. به عبارت دیگر: ابزار مرده یا سقوط کرده است. را
خطا در "STDERR" چاپ می شود.
اگر وضعیت خروج صفر یا 255 نباشد، مقدار آن به عنوان یک بیت ماسک با این ها عمل می کند.
پرچم ها:
FLAG BIT VALUE Meaning
================================================== ==================
ERROR 1 یک خطای غیر کشنده رخ داد
ALREADY_RUNNING 2 فایل --pid وجود دارد و PID در حال اجرا است
CAUGHT_SIGNAL 4 SIGHUP، SIGINT، SIGPIPE، یا SIGTERM
NO_SLAVES_FOUND 8 هیچ کپی یا گره خوشه ای یافت نشد
TABLE_DIFF 16 حداقل یک تفاوت پیدا شد
SKIP_CHUNK 32 حداقل یک تکه نادیده گرفته شد
SKIP_TABLE 64 حداقل یک جدول نادیده گرفته شده است
اگر هر پرچمی تنظیم شود، وضعیت خروج غیر صفر خواهد بود. از عملیات بیتی "AND" برای
پرچم خاصی را بررسی کنید برای مثال، اگر "$exit_status & 16" درست باشد، حداقل
یک تفاوت پیدا شد
در pt-table-checksum 2.2.5، تکه های نادیده گرفته شده باعث وضعیت خروج غیر صفر می شوند. یک خروجی
وضعیت صفر یا 32 معادل وضعیت خروج صفر با تکههای رد شده در قبلی است.
نسخه های ابزار
OPTIONS
این ابزار آرگومان های اضافی خط فرمان را می پذیرد. به "خلاصه" و استفاده مراجعه کنید
اطلاعات برای جزئیات
--ask-pass
گروه: اتصال
هنگام اتصال به MySQL یک رمز عبور درخواست کنید.
--[no]check-binlog-format
پیش فرض: بله
بررسی کنید که "binlog_format" در همه سرورها یکسان باشد.
به «مثنیها با استفاده از تکرار مبتنی بر ردیف» در بخش «محدودیتها» مراجعه کنید.
--باینری-شاخص
این گزینه رفتار "--create-replicate-table" را طوری تغییر می دهد که
ستون های مرزی بالا و پایین جدول تکرار با داده های BLOB ایجاد می شوند
نوع این در مواردی مفید است که در بررسی جمع بندی جداول با کلیدها مشکل دارید
که شامل یک نوع داده باینری یا دارای مجموعه کاراکترهای غیر استاندارد هستند. دیدن
"--تکثیر".
- بازه بررسی
نوع: زمان؛ پیش فرض: 1; گروه: دریچه گاز
زمان خواب بین بررسی های "--max-lag".
--[no]check-plan
پیش فرض: بله
برنامه های اجرای پرس و جو را برای ایمنی بررسی کنید. به طور پیش فرض، این گزینه باعث pt-table- می شود
چکسوم برای اجرای EXPLAIN قبل از اجرای پرسوجوهایی که برای دسترسی به مقدار کمی هستند
از دادهها، اما اگر MySQL برنامه اجرایی بدی را انتخاب کند، میتواند به بسیاری از ردیفها دسترسی داشته باشد. اینها
شامل پرس و جوهایی برای تعیین مرزهای chunk و خود پرس و جوهای chunk باشد. اگر
به نظر می رسد که MySQL از یک طرح اجرای پرس و جو بد استفاده می کند، ابزار از آن صرفنظر می کند
تکه ای از میز
این ابزار از چندین روش اکتشافی برای تعیین اینکه آیا یک برنامه اجرایی بد است استفاده می کند. در
اول اینکه آیا EXPLAIN گزارش می دهد که MySQL قصد دارد از فهرست مورد نظر برای دسترسی استفاده کند
ردیف ها اگر MySQL شاخص دیگری را انتخاب کند، ابزار پرس و جو را ناامن در نظر می گیرد.
این ابزار همچنین بررسی می کند که چه مقدار از نمایه MySQL گزارش می دهد که برای آن استفاده خواهد کرد
پرس و جو. خروجی EXPLAIN این را در ستون key_len نشان می دهد. ابزار به یاد می آورد
بزرگترین key_len دیده شده، و از قسمت هایی که MySQL گزارش می دهد که از یک کوچکتر استفاده خواهد کرد، پرش می کند
پیشوند شاخص این اکتشافی را می توان به عنوان پرش از تکه هایی فهمید که دارای a
برنامه اجرایی بدتر از سایر قطعات
این ابزار در اولین باری که یک قطعه به دلیل اجرای بد حذف می شود، یک هشدار چاپ می کند
در هر جدول برنامه ریزی کنید تکههای بعدی بیصدا رد میشوند، اگرچه میتوانید آن را ببینید
تعداد تکه های نادیده گرفته شده در ستون SKIPPED در خروجی ابزار.
این گزینه مقداری کار راه اندازی به هر جدول و تکه اضافه می کند. اگرچه کار نیست
مزاحم برای MySQL، منجر به رفت و برگشت بیشتر به سرور می شود که مصرف می کند
زمان. کوچک کردن تکه ها باعث می شود که سربار نسبتاً بزرگتر شود. آی تی
بنابراین توصیه می شود که تکه ها را خیلی کوچک نکنید، زیرا ممکن است این ابزار طول بکشد
اگر این کار را انجام دهید زمان بسیار طولانی برای تکمیل
--[no]check-replication-filters
پیش فرض: بله گروه: ایمنی
اگر فیلترهای تکراری روی هر کپی تنظیم شده است، جمعبندی را بررسی نکنید. ابزار به نظر می رسد
برای گزینه های سروری که تکرار را فیلتر می کنند، مانند binlog_ignore_db و
replicate_do_db. اگر چنین فیلترهایی را پیدا کند، با خطا سقط می شود.
اگر کپیها با هر گزینه فیلتر پیکربندی شدهاند، باید مراقب باشید
برای چک کردن هر پایگاه داده یا جدولی که در Master وجود دارد و نه Replicas.
تغییرات در چنین جداول به طور معمول ممکن است در رونوشت ها به دلیل
گزینه های فیلتر کردن، اما پرس و جوهای جمع چک محتویات جدول را تغییر می دهند
جمعهای چک را ذخیره میکند، نه جداولی که دادههای آنها را جمعبندی میکنید. از این رو،
این نمایش داده شد بر روی ماکت اجرا خواهد شد، و اگر جدول یا پایگاه داده شما هستید
چک summing وجود ندارد، پرس و جوها باعث شکست تکرار می شوند. برای بیشتر
اطلاعات مربوط به قوانین تکرار، را ببینید
<http://dev.mysql.com/doc/en/replication-rules.html>.
فیلتر کردن تکرار، اطمینان از عدم انجام پرس و جوهای چک جمع را غیرممکن می کند
شکستن تکرار (یا به سادگی شکست در تکرار). اگر مطمئن هستید که اجرای آن مشکلی ندارد
پرس و جوهای چک جمع، می توانید این گزینه را نفی کنید تا چک ها را غیرفعال کنید. همچنین ببینید
"--replicate-base".
همچنین به "چک های ماکت" مراجعه کنید.
--چک-برده-لگ
نوع: رشته; گروه: دریچه گاز
جمعبندی بررسی را تا زمانی که تاخیر این ماکت کمتر از "--max-lag" شود، متوقف کنید. مقدار a است
DSN که ویژگی ها را از میزبان اصلی و گزینه های اتصال به ارث می برد
("--port"، "--user"، و غیره). به طور پیشفرض، مانیتورهای pt-table-checksum روی همه تاخیر دارند
ماکت های متصل، اما این گزینه نظارت بر تاخیر را به ماکت مشخص شده محدود می کند.
این در صورتی مفید است که کپیهای خاصی عمداً عقب افتاده باشند (با pt-slave-delay برای
به عنوان مثال)، در این صورت می توانید یک ماکت معمولی برای نظارت تعیین کنید.
همچنین به "چک های ماکت" مراجعه کنید.
--[no]check-slave-tables
پیش فرض: بله گروه: ایمنی
بررسی میکند که جدولهای Slave وجود داشته باشند و همه چکجمع "--ستون" را داشته باشند. جداول
گم شدن در Slave یا نداشتن تمام چک جمع "--ستون" می تواند باعث شود که ابزار به
هنگامی که سعی می کند تفاوت ها را بررسی کند، تکرار را شکست. فقط اگر این بررسی را غیرفعال کنید
شما از خطرات آگاه هستید و مطمئن هستید که همه جدول ها در همه بردگان وجود دارند و هستند
مشابه استاد
--تکه-شاخص
نوع: رشته
این شاخص را برای جداول تکه ای ترجیح دهید. به طور پیش فرض، pt-table-checksum بیشترین انتخاب را دارد
شاخص مناسب برای قطعه بندی این گزینه به شما امکان می دهد شاخص مورد نظر خود را مشخص کنید
ترجیح می دهند. اگر ایندکس وجود نداشته باشد، pt-table-checksum به مقدار خود بازمی گردد
رفتار پیش فرض انتخاب یک شاخص pt-table-checksum ایندکس را به
عبارات SQL checksum در یک عبارت "FORCE INDEX". هنگام استفاده از این گزینه مراقب باشید؛
انتخاب ضعیف شاخص می تواند باعث عملکرد بد شود. این احتمالاً بهترین زمان استفاده از آن است
شما فقط یک جدول را چک می کنید، نه یک سرور کامل.
--chunk-index-columns
نوع: بین المللی
فقط از این تعداد ستون سمت چپ یک "--chunk-index" استفاده کنید. این فقط برای
ایندکس های ترکیبی، و در مواردی که اشکال در بهینه ساز پرس و جو MySQL وجود دارد، مفید است
(برنامه ریز) باعث می شود به جای استفاده از شاخص برای مکان یابی، محدوده وسیعی از ردیف ها را اسکن کند
نقطه شروع و پایان دقیقا این مشکل گاهی اوقات در نمایه هایی با
بسیاری از ستون ها، مانند 4 یا بیشتر. اگر این اتفاق بیفتد، ابزار ممکن است یک هشدار چاپ کند
مربوط به گزینه "--[no]check-plan" است. آموزش ابزار برای استفاده از اولین
N ستون ایندکس در برخی موارد راه حلی برای رفع اشکال است.
-- اندازه تکه
نوع: اندازه; پیش فرض: 1000
تعداد ردیفهایی که باید برای هر جستوجو جمعبندی انتخاب کنید. پسوندهای مجاز k، M، G هستند.
در بیشتر موارد نباید از این گزینه استفاده کنید. در عوض "--chunk-time" را ترجیح دهید.
این گزینه می تواند رفتار پیش فرض را که تنظیم اندازه تکه است، لغو کند
به صورت پویا سعی کنید قطعات را دقیقاً در "--chunk-time" ثانیه اجرا کنید. وقتی این
گزینه به طور صریح تنظیم نشده است، مقدار پیش فرض آن به عنوان نقطه شروع استفاده می شود، اما پس از آن
که، ابزار مقدار این گزینه را نادیده می گیرد. اگر این گزینه را به صراحت تنظیم کنید،
با این حال، سپس رفتار تنظیم پویا را غیرفعال می کند و سعی می کند همه تکه ها را ایجاد کند
دقیقا تعداد ردیف های مشخص شده
یک نکته ظریف وجود دارد: اگر شاخص تکه منحصر به فرد نباشد، ممکن است که تکه ها
بزرگتر از حد مطلوب خواهد بود. به عنوان مثال، اگر یک جدول توسط شاخصی که
حاوی 10,000 از یک مقدار معین است، هیچ راهی برای نوشتن عبارت WHERE وجود ندارد که مطابقت داشته باشد.
تنها 1,000 عدد از مقادیر، و آن تکه حداقل 10,000 ردیف بزرگ خواهد بود. مثل
احتمالاً chunk به دلیل "--chunk-size-limit" نادیده گرفته می شود.
انتخاب یک اندازه کوچک باعث می شود که ابزار تا حدی کندتر شود
به دلیل کار راه اندازی مورد نیاز برای "--[no]check-plan".
--تکه-اندازه-محدودیت
نوع: شناور؛ پیش فرض: 2.0; گروه: ایمنی
تکههای چکسوم بسیار بزرگتر از اندازه قطعه مورد نظر خودداری کنید.
هنگامی که جدولی فاقد شاخص های منحصر به فرد باشد، اندازه تکه ها می تواند نادرست باشد. این گزینه
حداکثر حد قابل تحمل برای عدم دقت را مشخص می کند. ابزار استفاده می کند به
تخمین بزنید که چند ردیف در قطعه وجود دارد. اگر این تخمین از مقدار مورد نظر بیشتر باشد
اندازه برابر محدودیت (دو برابر بزرگتر، به طور پیش فرض)، سپس ابزار از تکه رد می شود.
حداقل مقدار برای این گزینه 1 است، به این معنی که هیچ تکه ای نمی تواند بزرگتر از آن باشد
"--تکه-اندازه". احتمالاً نمی خواهید 1 را مشخص کنید، زیرا ردیف ها توسط
EXPLAIN تخمینهایی هستند که میتوانند با تعداد واقعی ردیفها متفاوت باشند
تکه. اگر ابزار به دلیل بزرگ بودن تعداد زیادی از قطعات را رد می کند، ممکن است بخواهید
برای تعیین مقدار بزرگتر از پیش فرض 2.
با تعیین مقدار 0 می توانید بررسی تکه های بزرگ را غیرفعال کنید.
-- زمان تکه
نوع: شناور؛ پیش فرض: 0.5
اندازه تیکه را به صورت پویا تنظیم کنید تا اجرای هر پرس و جو جمع کنترلی این مدت طول بکشد.
این ابزار نرخ جمعبندی (ردیفها در ثانیه) را برای همه جداول و هر جدول ردیابی میکند
به طور جداگانه. از این نرخها برای تنظیم اندازه تکهها پس از هر پرسش جمعبندی استفاده میکند.
به طوری که پرس و جو جمع کنترل بعدی این مقدار زمان (بر حسب ثانیه) برای اجرا طول می کشد.
الگوریتم به شرح زیر است: در ابتدای هر جدول، اندازه تکه است
از میانگین کلی ردیف ها در ثانیه از زمانی که ابزار شروع به کار کرد، یا
مقدار "--chunk-size" اگر ابزار هنوز شروع به کار نکرده باشد. برای هر
در بخش بعدی یک جدول، ابزار اندازه تکه را تنظیم می کند تا سعی کند پرس و جو کند
در مدت زمان دلخواه اجرا شود. میانگین متحرک به طور تصاعدی رو به زوال را حفظ می کند
پرس و جو در ثانیه، به طوری که اگر عملکرد سرور به دلیل تغییرات در
بار سرور، ابزار به سرعت تطبیق می یابد. این اجازه می دهد تا ابزار به طور قابل پیش بینی به دست آورد
پرس و جوهای زمان بندی شده برای هر جدول و به طور کلی برای سرور.
اگر این گزینه روی صفر تنظیم شود، اندازه قطعه به طور خودکار تنظیم نمیشود، بنابراین جمعبندی پرس و جو کنید
زمانها متفاوت خواهد بود، اما اندازههای جمعبندی پرس و جو متفاوت خواهد بود. راه دیگری برای انجام همین کار
این است که یک مقدار را برای "--chunk-size" به طور صریح مشخص کنیم، به جای اینکه آن را در
به طور پیش فرض
--ستون ها
فرم کوتاه: -c; نوع: آرایه; گروه: فیلتر
فقط این فهرست ستونهای جدا شده با کاما را جمعبندی میکند. اگر جدولی هیچ کدام از آنها را نداشته باشد
از ستون های مشخص شده رد می شود.
این گزینه برای همه جدول ها اعمال می شود، بنابراین واقعاً فقط در هنگام جمع بندی یک جدول منطقی است
جدول مگر اینکه جداول دارای یک مجموعه ستون مشترک باشند.
- پیکربندی
نوع: آرایه; گروه: پیکربندی
این لیست فایل های پیکربندی جدا شده با کاما را بخوانید. اگر مشخص شود، این باید اولین مورد باشد
گزینه در خط فرمان
خروجی "--help" را برای لیستی از فایل های پیکربندی پیش فرض ببینید.
--[no]create-replicate-table
پیش فرض: بله
اگر پایگاه داده و جدول "--replicate" وجود ندارد، ایجاد کنید. ساختار
جدول تکرار همان جدول پیشنهادی ذکر شده در "--replicate" است.
-- پایگاه های داده
فرم کوتاه: -d; نوع: هش گروه: فیلتر
فقط این لیست پایگاه داده جدا شده با کاما را جمع کنید.
-- پایگاه های داده-regex
نوع: رشته; گروه: فیلتر
فقط پایگاه داده های چک جمعی که نام آنها با این Regex پرل مطابقت دارد.
---فایل پیش فرض
فرم کوتاه: -F; نوع: رشته; گروه: اتصال
فقط گزینه های mysql را از فایل داده شده بخوانید. شما باید یک pathname مطلق بدهید.
--[no]empty-replicate-table
پیش فرض: بله
قبل از جمع بندی جدول، چک های قبلی را برای هر جدول حذف کنید. این گزینه
کل جدول را کوتاه نمی کند، فقط ردیف ها (چک جمع ها) را برای هر جدول حذف می کند
درست قبل از چک کردن جدول بنابراین، اگر چک جمعبندی پیش از موعد متوقف شود و
داده های قبلی وجود داشته است، همچنان ردیف هایی برای جداول وجود خواهد داشت که نبوده اند
قبل از توقف ابزار، چک جمع شد.
اگر در حال از سرگیری از اجرای چکسوم قبلی هستید، آنگاه چکسوم برای آن ثبت میشود
جدولی که ابزار از آن رزومه می گیرد خالی نمی شود.
برای خالی کردن کل جدول تکراری، باید "TRUNCATE TABLE" را قبل از آن به صورت دستی اجرا کنید
در حال اجرا ابزار
--موتورها
فرم کوتاه: -e; نوع: هش گروه: فیلتر
فقط جداول چک جمعی که از این موتورهای ذخیره سازی استفاده می کنند.
--توضیح
تجمعی: بله پیش فرض: 0; گروه: خروجی
نمایش داده شد، اما اجرا نشود، نمایش داده شد ("--[no]empty-replicate-table" را غیرفعال می کند).
اگر دو بار مشخص شود، ابزار در واقع از طریق الگوریتم chunking تکرار می شود.
چاپ مقادیر مرزی بالا و پایین برای هر قطعه، اما اجرا نمی شود
پرس و جوهای چک جمع
- دقت شناور
نوع: بین المللی
دقت برای تبدیل FLOAT و DOUBLE عدد به رشته. باعث FLOAT و DOUBLE می شود
مقادیر به تعداد مشخص شده ارقام بعد از نقطه اعشار گرد شوند
la ROUND() عملکرد در MySQL. این می تواند به جلوگیری از عدم تطابق جمع چک به دلیل
نمایش ممیز شناور متفاوت از مقادیر یکسان در MySQL مختلف
نسخه ها و سخت افزار پیش فرض بدون گرد کردن است. مقادیر تبدیل می شوند
رشته ها توسط CONCAT() تابع، و MySQL نمایش رشته را انتخاب می کند. اگر شما
برای مثال مقدار 2 را مشخص کنید، سپس مقادیر 1.008 و 1.009 به گرد می شوند.
1.01، و جمع چک برابر خواهد بود.
--عملکرد
نوع: رشته
عملکرد هش برای جمعهای چک (FNV1A_64، MURMUR_HASH، SHA1، MD5، CRC32، و غیره).
پیش فرض استفاده است CRC32()، اما MD5() و SHA1() همچنین کار می کند، و شما می توانید از خود استفاده کنید
در صورت تمایل، تابع خود، مانند UDF کامپایل شده. تابعی که مشخص می کنید در آن اجرا می شود
SQL، نه در Perl، بنابراین باید برای MySQL در دسترس باشد.
MySQL توابع هش داخلی خوب و سریعی ندارد. CRC32() بیش از حد مستعد است
به هش برخورد، و MD5() و SHA1() بسیار CPU فشرده هستند. را FNV1A_64() UDF
که با سرور Percona توزیع می شود جایگزین سریع تری است. بسیار ساده است
کامپایل و نصب؛ برای دستورالعمل ها به سربرگ کد منبع نگاه کنید. اگر هست
نصب شده، ترجیح داده می شود MD5(). همچنین می توانید از MURMUR_HASH() عملکرد اگر
شما آن را به عنوان UDF کامپایل و نصب می کنید. منبع نیز با Percona توزیع شده است
سرور، و شاید بهتر از آن باشد FNV1A_64().
--کمک
گروه: راهنما
نشان دادن کمک و خروج.
-روح
فرم کوتاه: -h; نوع: رشته; پیش فرض: localhost; گروه: اتصال
میزبان برای اتصال.
--نادیده گرفتن-ستون ها
نوع: هش گروه: فیلتر
این فهرست ستونهای جدا شده با کاما را هنگام محاسبه چکسوم نادیده بگیرید. اگر یک میز
تمام ستونهای آن با ستونهای --ignore- فیلتر شده است، از آن صرفنظر میشود.
--نادیده گرفتن-پایگاه های داده
نوع: هش گروه: فیلتر
این فهرست پایگاه داده جدا شده با کاما را نادیده بگیرید.
--نادیده گرفتن-پایگاه های داده-regex
نوع: رشته; گروه: فیلتر
پایگاههای دادهای را که نامهایشان با این Regex پرل مطابقت دارد نادیده بگیرید.
--نادیده گرفتن-موتورها
نوع: هش پیش فرض: FEDERATED,MRG_MyISAM؛ گروه: فیلتر
این فهرست موتورهای ذخیره سازی جدا شده با کاما را نادیده بگیرید.
--نادیده گرفتن-جدول
نوع: هش گروه: فیلتر
این فهرست جداول جدا شده با کاما را نادیده بگیرید. نام جدول ممکن است با واجد شرایط باشد
نام پایگاه داده. جدول "--replicate" همیشه به طور خودکار نادیده گرفته می شود.
--نادیده گرفتن-جدول-regex
نوع: رشته; گروه: فیلتر
جداول را نادیده بگیرید که نام آنها با regex پرل مطابقت دارد.
-- حداکثر تاخیر
نوع: زمان؛ پیش فرض: 1s; گروه: دریچه گاز
جمعبندی بررسی را تا زمانی که تأخیر همه نسخهها کمتر از این مقدار شود، متوقف کنید. بعد از هر
پرس و جو چک جمع (هر تکه)، pt-table-checksum به تأخیر تکرار همه نگاه می کند
نسخه هایی که با استفاده از Seconds_Behind_Master به آن متصل می شود. اگر ماکتی عقب افتاده باشد
بیشتر از مقدار این گزینه است، سپس pt-table-checksum به خواب می رود
"--check-interval" ثانیه ها، سپس دوباره همه کپی ها را بررسی کنید. اگر مشخص کنید
"--check-slave-lag"، سپس این ابزار فقط آن سرور را از نظر تاخیر بررسی می کند، نه همه سرورها.
این ابزار برای همیشه منتظر می ماند تا ماکت ها متوقف شوند. اگر هر کپی متوقف شود،
ابزار برای همیشه منتظر می ماند تا ماکت شروع شود. جمع بندی چک یک بار ادامه می یابد
ماکت ها در حال اجرا هستند و خیلی عقب نمی مانند.
این ابزار گزارش های پیشرفت را در حین انتظار چاپ می کند. اگر یک ماکت متوقف شود، a را چاپ می کند
فوراً گزارش پیشرفت، سپس دوباره در هر بازه گزارش پیشرفت.
همچنین به "چک های ماکت" مراجعه کنید.
--حداکثر بار
نوع: آرایه; پیش فرض: Threads_running=25; گروه: دریچه گاز
SHOW GLOBAL STATUS را بعد از هر بخش بررسی کنید و اگر متغیرهای وضعیت وجود داشت مکث کنید
بالاتر از آستانه این گزینه فهرستی از وضعیت MySQL را میپذیرد که با کاما جدا شده است
متغیرها برای بررسی آستانه یک "=MAX_VALUE" (یا ":MAX_VALUE") اختیاری می تواند
هر متغیر را دنبال کنید اگر داده نشود، ابزار با بررسی مقدار آستانه تعیین می کند
ارزش فعلی و افزایش 20 درصدی آن.
برای مثال، اگر میخواهید وقتی Threads_connected بیش از حد بالا میرود، این ابزار متوقف شود، شما
می تواند "Threads_connected" را مشخص کند، و ابزار زمانی که آن را بررسی می کند، مقدار فعلی را بررسی می کند
شروع به کار می کند و 20٪ به آن مقدار اضافه می کند. اگر مقدار فعلی 100 باشد، ابزار
زمانی که Threads_connected از 120 بیشتر شد مکث میکند و زمانی که کمتر از 120 باشد کار را از سر میگیرد.
از نو. اگر میخواهید یک آستانه صریح مانند 110 مشخص کنید، میتوانید از هر کدام استفاده کنید
"Threads_connected:110" یا "Threads_connected=110".
هدف از این گزینه جلوگیری از اضافه کردن بار بیش از حد ابزار به ابزار است
سرور اگر پرس و جوهای جمع کنترلی مزاحم هستند، یا اگر باعث انتظار قفل شوند، دیگر
پرس و جوهای روی سرور تمایل به مسدود کردن و صف بندی دارند. این به طور معمول باعث می شود
Threads_running افزایش می یابد، و ابزار می تواند آن را با اجرای SHOW GLOBAL تشخیص دهد
وضعیت بلافاصله پس از اتمام هر پرس و جو جمع کنترل. اگر آستانه ای برای
این متغیر، سپس می توانید به ابزار دستور دهید تا زمانی که کوئری ها اجرا شوند صبر کند
دوباره به طور معمول با این حال، این مانع از ایجاد صف نمی شود. فقط به سرور می دهد
فرصتی برای بهبودی از صف اگر متوجه صف بندی شدید، بهتر است کاهش دهید
زمان تکه
--کلمه عبور
فرم کوتاه: -p; نوع: رشته; گروه: اتصال
رمز عبور برای استفاده در هنگام اتصال. اگر رمز عبور حاوی کاما باشد، باید از آنها فرار کرد
با علامت معکوس: "exam\,ple"
-پید
نوع: رشته
فایل PID داده شده را ایجاد کنید. اگر فایل PID از قبل وجود داشته باشد، ابزار شروع نمی شود
PID موجود در آن با PID فعلی متفاوت است. با این حال، اگر فایل PID
وجود دارد و PID موجود در آن دیگر در حال اجرا نیست، ابزار PID را بازنویسی می کند
فایل با PID فعلی پس از خروج ابزار، فایل PID به طور خودکار حذف می شود.
-- پلاگین
نوع: رشته
فایل ماژول پرل که کلاس "pt_table_checksum_plugin" را تعریف می کند. یک افزونه به شما اجازه می دهد
برای نوشتن یک ماژول Perl که می تواند به بسیاری از بخش های pt-table-checksum قلاب کند. این
نیاز به دانش خوبی از قراردادهای Perl و Percona Toolkit دارد که فراتر از آن هستند
این محدوده از این اسناد. لطفاً اگر سؤالی دارید یا با پرکونا تماس بگیرید
کمک خواستن.
برای اطلاعات بیشتر به "PLUGIN" مراجعه کنید.
--بندر
فرم کوتاه: -P; نوع: int; گروه: اتصال
شماره پورت برای استفاده برای اتصال.
--پیش رفتن
نوع: آرایه پیش فرض: زمان، 30
گزارش های پیشرفت را در STDERR چاپ کنید.
مقدار یک لیست جدا شده با کاما با دو قسمت است. قسمت اول می تواند درصد باشد،
زمان، یا تکرار؛ بخش دوم مشخص می کند که هر چند وقت یکبار یک به روز رسانی باید چاپ شود،
در درصد، ثانیه یا تعداد تکرارها. این ابزار گزارش های پیشرفت را برای آن چاپ می کند
انواع عملیات وقت گیر، از جمله انتظار برای رسیدن به نسخه های مشابه اگر
آنها عقب افتاده می شوند.
--ساکت
فرم کوتاه: -q; تجمعی: بله پیش فرض: 0
فقط مهم ترین اطلاعات را چاپ کنید ("--progress" را غیرفعال می کند). مشخص کردن این
گزینه یک بار باعث می شود که ابزار فقط خطاها، اخطارها و جداولی را چاپ کند
تفاوت های چکی
دو بار تعیین این گزینه باعث می شود که ابزار فقط خطاهایی را چاپ کند. در این مورد، شما
می تواند از وضعیت خروج ابزار برای تعیین اینکه آیا اخطار یا جمع کنترلی وجود دارد یا خیر استفاده کند
تفاوت.
-- بازگشت
نوع: بین المللی
تعداد سطوحی که باید در سلسله مراتب هنگام کشف کپی تکرار شوند. پیش فرض است
بي نهايت. همچنین به "--recursion-method" و "REPLICA CHECKS" مراجعه کنید.
---روش بازگشتی
نوع: آرایه پیش فرض: لیست فرآیندها، میزبان ها
روش بازگشتی ترجیحی برای کشف کپی ها. pt-table-checksum انجام می دهد
چندین "بررسی رپلیکا" قبل و در حین اجرا.
اگرچه برای اجرای pt-table-checksum نیازی به کپی نیست، این ابزار نمی تواند شناسایی کند
در مورد بردگانی که نمی تواند کشف کند تفاوت دارد. بنابراین، یک هشدار چاپ می شود و
"وضعیت خروج" غیر صفر است اگر هیچ کپی پیدا نشود و روش "هیچ" نباشد. اگر
این اتفاق می افتد، یک روش بازگشتی دیگر را امتحان کنید، یا از روش "dsn" برای تعیین آن استفاده کنید
ماکت برای بررسی
روش های ممکن عبارتند از:
موارد استفاده از روش
================================================== ======
فهرست فرآیند نمایش فهرست فرآیندها
میزبان ها SLAVE HOSTS را نشان می دهد
خوشه نشان دادن وضعیت مانند 'wsrep\_incoming\_addresses'
dsn=DSN DSNهای یک جدول
هیچ یک برده پیدا نکنید
روش "processlist" پیش فرض است، زیرا "SHOW SLAVE HOSTS" قابل اعتماد نیست.
با این حال، اگر سرور از یک پورت غیر استاندارد (نه 3306) استفاده می کند، روش "hosts"
پیش فرض می شود زیرا در این مورد بهتر کار می کند.
روش "host" نیاز به پیکربندی replica ها با "report_host" دارد.
"گزارش_پورت" و غیره
روش "خوشه" به یک خوشه بر اساس Galera 23.7.3 یا جدیدتر نیاز دارد، مانند
Percona XtraDB Cluster نسخه 5.5.29 و بالاتر. این به طور خودکار گره ها را در a کشف می کند
خوشه با استفاده از "نمایش وضعیت مانند 'wsrep\_incoming\_addresses'". می توانید ترکیب کنید
"Cluster" با "processlist" و "host" برای کشف خودکار گرهها و کپیهای خوشه،
اما این قابلیت آزمایشی است.
روش "dsn" ویژه است: به جای کشف خودکار کپی ها، این
متد یک جدول با DSNهای مشابه را مشخص می کند. ابزار فقط به اینها متصل می شود
ماکت ها این روش زمانی بهترین کار می کند که کپی ها از همان نام کاربری MySQL یا استفاده نمی کنند
رمز عبور به عنوان اصلی، یا زمانی که می خواهید از اتصال ابزار به آن جلوگیری کنید
ماکت های خاص روش "dsn" به صورت زیر مشخص شده است: "--recursion-method
dsn=h=host,D=percona,t=dsns". DSN مشخص شده باید دارای قسمت های D و t یا فقط یک باشد.
قسمت t واجد شرایط پایگاه داده، که جدول DSN را مشخص می کند. جدول DSN باید دارای این باشد
ساختار زیر:
ایجاد جدول `dsns` (
"id". INT(11) NOT NULL AUTO_INCREMENT،
"شناسه_والد". INT(11) پیش فرض تهی،
"dsn". وارچار(255) NOT NULL،
کلید اولیه (`id`)
);
DSN ها با "id" مرتب می شوند، اما "id" و "parent_id" در غیر این صورت نادیده گرفته می شوند. "dsn"
ستون حاوی یک ماکت DSN است که در خط فرمان داده می شود، به عنوان مثال:
"h=replica_host,u=repl_user,p=repl_pass".
روش "هیچ" باعث می شود که ابزار تمام بردها و گره های خوشه ای را نادیده بگیرد. این روش است
توصیه نمی شود زیرا به طور موثر "چک های REPLICA" و نه را غیرفعال می کند
تفاوت ها را می توان یافت. با این حال، اگر فقط نیاز به نوشتن چکسام دارید، مفید است
روی اصلی یا یک گره خوشه ای منفرد. جایگزین امن تر است
"--no-replicate-check": ابزار کپی ها و گره های خوشه ای را پیدا می کند،
"REPLICA CHECKS"، اما تفاوت ها را بررسی نمی کند. به "--[no]replicate-check" مراجعه کنید.
--تکثیر
نوع: رشته; پیش فرض: percona.checksums
نتایج حاصل از جمع بندی را در این جدول بنویسید. جدول تکرار باید این ساختار را داشته باشد
(MAGIC_create_replicate):
جمعهای چک جدول را ایجاد کنید (
db CHAR(64) NOT NULL،
tbl CHAR(64) NOT NULL،
قطعه INT NOT NULL،
chunk_time FLOAT NULL،
chunk_index وارچار(200) NULL،
low_boundary TEXT NULL،
upper_boundary TEXT NULL،
this_crc CHAR(40) NOT NULL،
this_cnt INT NOT NULL،
master_crc CHAR(40) NULL،
master_cnt INT NULL،
ts TIMESTAMP NOT NULL پیش فرض CURRENT_TIMESTAMP در به روز رسانی CURRENT_TIMESTAMP،
کلید اولیه (db، tbl، chunk)،
INDEX ts_db_tbl (ts، db، tbl)
) ENGINE=InnoDB;
توجه: نوع داده low_boundary و upper_boundary می تواند BLOB باشد. به "--binary-index" مراجعه کنید.
به طور پیش فرض، "--[no]create-replicate-table" درست است، بنابراین پایگاه داده و جدول
مشخص شده توسط این گزینه در صورت عدم وجود به صورت خودکار ایجاد می شوند.
مطمئن شوید که یک موتور ذخیره سازی مناسب برای جدول تکراری انتخاب کنید. اگر شما
با جمعبندی جداول InnoDB، و از MyISAM برای این جدول استفاده کنید، یک بن بست شکسته میشود
همانند سازی، زیرا مخلوط جداول تراکنشی و غیرمعامله ای در
عبارات checksum باعث می شود که آن را در binlog نوشته شود حتی اگر دارای یک
خطا سپس بدون بن بست روی ماکت ها پخش می شود و تکرار را قطع می کند
با "خطای متفاوت در ارباب و برده." این مشکل با pt-table نیست-
چک جمع این یک مشکل با تکثیر MySQL است و میتوانید در مورد آن بیشتر بخوانید
راهنمای MySQL.
جدول تکرار هرگز جمع بندی نمی شود (ابزار به طور خودکار این جدول را به آن اضافه می کند
"--نادیده گرفتن-جدول").
--[no]replicate-check
پیش فرض: بله
پس از اتمام هر جدول، کپی ها را برای تفاوت داده ها بررسی کنید. ابزار پیدا می کند
با اجرای یک دستور SELECT ساده در همه کپی های شناسایی شده تفاوت دارد. را
پرس و جو نتایج حاصل از جمع کنترلی replica را با نتایج حاصل جمعبندی اصلی مقایسه میکند. آی تی
گزارش تفاوت در ستون DIFFS خروجی.
-- Replicate-check-only
بدون اجرای پرسوجوهای جمعآوری شده، کپیها را از نظر سازگاری بررسی کنید. این گزینه است
فقط با "--[no]replicate-check" استفاده می شود. اگر مشخص شده باشد، pt-table-checksum اینطور نیست
جمع بندی هر جدول این کپی ها را برای تفاوت های قبلی بررسی می کند
چک جمع، و سپس خارج می شود. اگر pt-table-checksum را بی سر و صدا اجرا کنید، ممکن است مفید باشد
به عنوان مثال، در یک کار cron، و بعداً می خواهید یک گزارش در مورد نتایج کار cron،
شاید برای اجرای چک Nagios.
--تکرار-بررسی-تکرار مجدد
نوع: int; پیش فرض: 1
هنگامی که با اختلاف مواجه می شوید، بارها این مقایسه را دوباره امتحان کنید. فقط زمانی که
بعد از اینکه این تعداد چک معتبر تلقی شد، تفاوت باقی می ماند. با استفاده از این
گزینه ای با مقدار 2 یا بیشتر تفاوت های جعلی را که هنگام استفاده به وجود می آیند را کاهش می دهد
گزینه --Resume.
--replicate-base
نوع: رشته
فقط از این پایگاه داده استفاده کنید. به طور پیش فرض، pt-table-checksum USE را برای انتخاب اجرا می کند
پایگاه داده ای که شامل جدولی است که در حال حاضر روی آن کار می کند. این بهترین تلاش است
برای جلوگیری از مشکلات فیلترهای تکراری مانند binlog_ignore_db و
replicate_ignore_db. با این حال، فیلترهای تکرار می توانند موقعیتی را ایجاد کنند که در آنجا وجود دارد
به سادگی هیچ راه درستی برای انجام کارها نیست. برخی از عبارات ممکن است تکرار نشوند، و
دیگران ممکن است باعث شکست تکرار شوند. در چنین مواقعی می توانید از این گزینه برای
یک پایگاه داده پیش فرض را مشخص کنید که pt-table-checksum با USE انتخاب می کند و هرگز تغییر نمی کند.
همچنین به "--[no]check-replication-filters" مراجعه کنید.
--از سرگیری
ازسرگیری جمع بندی چک از آخرین تکه تکمیل شده (غیرفعال می شود
"--[no]empty-replicate-table"). اگر ابزار قبل از اینکه همه جداول را بررسی کند متوقف شود،
این گزینه باعث میشود که جمعبندی چک از آخرین تکه آخرین جدول آن رزومه شود
تمام شده.
-- دوباره تلاش می کند
نوع: int; پیش فرض: 2
زمانی که یک خطای غیرمرگبار وجود دارد، این قطعه را بارها امتحان کنید. خطاهای غیر کشنده هستند
مشکلاتی مانند اتمام زمان انتظار قفل یا از بین رفتن پرس و جو.
-- زمان اجرا
نوع: زمان
چه مدت برای دویدن. پیشفرض این است که تا زمانی که تمام جدولها جمعبندی شوند اجرا شود. اینها
پسوندهای مقدار زمانی مجاز هستند: s (ثانیه)، m (دقیقه)، h (ساعت)، و d (روز).
این گزینه را با "--Resume" ترکیب کنید تا به تعداد جدول های موجود در یک جدول بررسی شود
زمان، از جایی که ابزار در دفعه بعد اجرا شد از سر گرفته می شود.
-- جداکننده
نوع: رشته; پیش فرض: #
کاراکتر جداکننده که برای CONCAT_WS(). این کاراکتر برای پیوستن به
مقادیر ستون ها هنگام جمع بندی چک
--set-vars
نوع: آرایه; گروه: اتصال
متغیرهای MySQL را در این لیست جفت "variable=value" جدا شده با کاما تنظیم کنید.
به طور پیش فرض، ابزار مجموعه های زیر را تنظیم می کند:
wait_timeout=10000
innodb_lock_wait_timeout=1
متغیرهای مشخص شده در خط فرمان این پیش فرض ها را لغو می کنند. مثلا،
با تعیین "--set-vars wait_timeout=500" مقدار پیش فرض 10000 لغو می شود.
ابزار یک هشدار چاپ می کند و اگر متغیری تنظیم نشود ادامه می دهد.
-- سوکت
فرم کوتاه: -S; نوع: رشته; گروه: اتصال
فایل سوکت برای استفاده برای اتصال.
-- جداول
فرم کوتاه: -t; نوع: هش گروه: فیلتر
فقط این فهرست جداول با کاما از هم جدا شده است. نام جدول ممکن است واجد شرایط باشد
نام پایگاه داده
--tables-regex
نوع: رشته; گروه: فیلتر
فقط جدولهایی که نامشان با پرل regex مطابقت دارد.
-- تراشیدن
اضافه کردن TRIM() به ستون های VARCHAR (در مقایسه 4.1 با >= 5.0 کمک می کند). این مفید است
زمانی که به تفاوت فضای انتهایی بین نسخههای MySQL اهمیتی نمیدهید
در برخورد با فضاهای دنباله دار متفاوت هستند. MySQL 5.0 و نسخه های جدیدتر همگی دنباله دار هستند
فاصله ها در VARCHAR، در حالی که نسخه های قبلی آنها را حذف می کردند. این تفاوت ها خواهد بود
باعث تفاوت های کاذب جمع چک می شود.
--کاربر
فرم کوتاه: -u; نوع: رشته; گروه: اتصال
کاربر برای ورود اگر کاربر فعلی نیست.
- نسخه
گروه: راهنما
نمایش نسخه و خروج
--[no]version-check
پیش فرض: بله
آخرین نسخه Percona Toolkit، MySQL و سایر برنامه ها را بررسی کنید.
این یک ویژگی استاندارد «بررسی خودکار بهروزرسانیها» با دو ویژگی دیگر است
امکانات. ابتدا این ابزار نسخه سایر برنامه ها را در سیستم محلی بررسی می کند
علاوه بر نسخه خودش به عنوان مثال، نسخه هر سرور MySQL را بررسی می کند
به Perl و ماژول Perl DBD::mysql متصل می شود. دوم اینکه بررسی می کند و هشدار می دهد
در مورد نسخه هایی با مشکلات شناخته شده به عنوان مثال، MySQL 5.5.25 یک باگ بحرانی داشت و
به عنوان 5.5.25a دوباره منتشر شد.
هر گونه به روز رسانی یا مشکل شناخته شده قبل از خروجی عادی ابزار در STDOUT چاپ می شود.
این ویژگی هرگز نباید در عملکرد عادی ابزار اختلال ایجاد کند.
برای اطلاعات بیشتر مراجعه کنید .
--جایی که
نوع: رشته
فقط ردیف های مطابق با این عبارت WHERE را انجام دهید. می توانید از این گزینه برای محدود کردن استفاده کنید
چک جمع فقط به بخشی از جدول. این به ویژه مفید است اگر شما ضمیمه
فقط جداول است و نمی خواهید دائماً همه ردیف ها را دوباره بررسی کنید. شما می توانید یک کار روزانه را انجام دهید
به عنوان مثال فقط ردیف های دیروز را بررسی کنید.
این گزینه بسیار شبیه گزینه -w برای mysqldump است. WHERE را مشخص نکنید
کلمه کلیدی. ممکن است لازم باشد مقدار را نقل قول کنید. به عنوان مثال:
pt-table-checksum --where "ts > CURRENT_DATE - INTERVAL 1 DAY"
المثنی چک
بهطور پیشفرض، pt-table-checksum تلاش میکند همه کپیهای متصل به آن را پیدا کند و به آنها متصل شود
میزبان استاد این فرآیند خودکار "بازگشت برده" نامیده می شود و توسط آن کنترل می شود
گزینه های "--recursion-method" و "--recurse". ابزار این بررسی ها را روی همه انجام می دهد
کپی ها:
1. "--[no]check-replication-filters"
pt-table-checksum فیلترهای تکرار را در همه کپی ها بررسی می کند زیرا آنها می توانند
فرآیند چکسام را پیچیده یا شکسته میکند. به طور پیش فرض، ابزار در صورت وجود خارج می شود
فیلترهای تکرار یافت می شوند، اما این بررسی را می توان با مشخص کردن غیرفعال کرد
"--No-check-replication-filters".
2. جدول "--replicate".
pt-table-checksum بررسی می کند که جدول "--replicate" در همه replica ها وجود دارد، در غیر این صورت
checksumming می تواند در صورت به روز رسانی جدول در نسخه اصلی، تکرار را از بین ببرد
به ماکتی که جدول ندارد. این بررسی را نمی توان غیرفعال کرد و ابزار
برای همیشه منتظر می ماند تا جدول روی همه کپی ها وجود داشته باشد و پیام های "--progress" را چاپ کند
در حالی که منتظر است
3. اندازه تک تکه
اگر بتوان جدولی را در یک تکه در master جمع کرد، pt-table-checksum
بررسی کنید که اندازه جدول در همه ماکت ها کمتر از "--chunk-size" باشد *
"--chunk-size-limit". این از یک مشکل نادر در جایی که میز روی Master قرار دارد جلوگیری می کند
خالی یا کوچک است، اما در یک ماکت بسیار بزرگتر است. در این مورد تک تکه
چکسوم در Master میتواند ماکت را بیش از حد بارگذاری کند.
یکی دیگر از مشکلات نادر زمانی رخ می دهد که اندازه جدول در یک ماکت نزدیک به
"--chunk-size" * "--chunk-size-limit". در چنین مواردی، جدول احتمال بیشتری دارد
از قلم انداخته شد، حتی با وجود ایمن بودن چکسوم در یک تکه. این اتفاق می افتد زیرا
اندازه جدول تخمینی است. هنگامی که آن تخمین ها و "--chunk-size" *
"--chunk-size-limit" تقریباً برابر هستند، این بررسی نسبت به آن حساس تر می شود
حاشیه خطای تخمین ها به جای تفاوت های واقعی واقعی در اندازه جدول.
تعیین یک مقدار بزرگتر برای "--chunk-size-limit" به جلوگیری از این مشکل کمک می کند.
این چک را نمی توان غیرفعال کرد.
4. تاخیر
پس از هر قطعه، pt-table-checksum تاخیر را در همه کپی ها، یا فقط
ماکت مشخص شده توسط "--check-slave-lag". این به ابزار کمک می کند تا بیش از حد بارگذاری نشود
کپی با داده های جمع آوری شده هیچ راهی برای غیرفعال کردن این چک وجود ندارد، اما می توانید
یک ماکت را برای بررسی با "--check-slave-lag" مشخص کنید، و اگر آن ماکت
سریعتر، به جلوگیری از انتظار طولانی مدت ابزار برای کاهش تاخیر ماکت کمک میکند.
5. تکه های چک
هنگامی که pt-table-checksum جمع بندی یک جدول را به پایان می رساند، منتظر آخرین جمع چک می ماند
chunk برای تکرار به همه replica ها تا بتواند "--[no]replicate-check" را انجام دهد.
غیرفعال کردن آن گزینه با تعیین --no-replicate-check این بررسی را غیرفعال می کند، اما آن را
همچنین گزارش فوری تفاوتهای جمعبندی را غیرفعال میکند و در نتیجه به یک ثانیه نیاز دارد
ابزار را با "--replicate-check-only" اجرا کنید تا تفاوتهای جمعبندی چک را پیدا کرده و چاپ کنید.
پلاگین
فایل مشخص شده توسط "--plugin" باید یک کلاس (یعنی یک بسته) فراخوانی را تعریف کند
"pt_table_checksum_plugin" با یک زیربرنامه "new()". این ابزار یک نمونه از
این کلاس و هر قلابی را که تعریف می کند فراخوانی کنید. نیازی به قلاب نیست، اما پلاگین لازم نیست
بدون آنها بسیار مفید است
این قلاب ها به این ترتیب در صورت تعریف نامیده می شوند:
init انجام
before_replicate_check
after_replicate_check
get_slave_lag
قبل از_تصاویر_جدول
جدول پس از جمع بندی
به هر هوک آرگومان های مختلفی منتقل می شود. برای دیدن اینکه کدام آرگومان ها به یک هوک منتقل می شوند،
نام قلاب را در کد منبع ابزار جستجو کنید، مانند:
# ---قلاب پلاگین
if ( $plugin && $plugin->can('init') ) {
$plugin->init(
برده => $slaves،
slave_lag_cxns => $slave_lag_cxns،
repl_table => $repl_table،
);
}
نظر "# --plugin hook" قبل از هر تماس هوک قرار می گیرد.
اگر سوالی دارید یا به کمک نیاز دارید، لطفاً با Percona تماس بگیرید.
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.
· تو
dsn: user; کپی: بله
کاربر برای ورود اگر کاربر فعلی نیست.
محیط زیست
متغیر محیطی "PTDEBUG" خروجی اشکال زدایی کامل را در STDERR فعال می کند. برای فعال کردن
اشکال زدایی و ضبط تمام خروجی ها در یک فایل، ابزار را مانند:
PTDEBUG=1 pt-table-checksum ... > FILE 2>&1
مراقب باشید: خروجی اشکال زدایی حجیم است و می تواند چندین مگابایت خروجی تولید کند.
SYSTEM الزامات
شما به Perl، DBI، DBD::mysql و برخی از بسته های اصلی نیاز دارید که باید در هر کدام از آنها نصب شوند.
نسخه نسبتاً جدید پرل.
با استفاده از خدمات onworks.net از pt-table-checksump به صورت آنلاین استفاده کنید