זוהי הפקודה pt-online-schema-changep שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו בחינם כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
pt-online-schema-change - ALTER טבלאות מבלי לנעול אותן.
תַקצִיר
שימוש: pt-online-schema-change [OPTIONS] DSN
pt-online-schema-change משנה את מבנה הטבלה מבלי לחסום קריאה או כתיבה.
ציין את מסד הנתונים והטבלה ב-DSN. אל תשתמש בכלי זה לפני קריאתו
תיעוד ובדיקת הגיבויים שלך בקפידה.
הוסף עמודה ל-sakila.actor:
pt-online-schema-change --alter "ADD COLUMN c1 INT" D=sakila,t=actor
שנה את sakila.actor ל-InnoDB, ביצוע יעיל של OPTIMIZE TABLE בצורה לא חוסמת
אופנה כי זה כבר טבלת InnoDB:
pt-online-schema-change --alter "ENGINE=InnoDB" D=sakila,t=actor
סיכונים
Percona Toolkit בוגר, מוכח בעולם האמיתי, ונבדק היטב, אבל כולו מסד נתונים
כלים יכולים להוות סיכון למערכת ולשרת מסד הנתונים. לפני השימוש בכלי זה,
אנא:
· קרא את התיעוד של הכלי
· עיין ב-"BUGS" הידוע של הכלי
· בדוק את הכלי בשרת שאינו ייצור
· גבה את שרת הייצור שלך ואמת את הגיבויים
תיאור
pt-online-schema-change מחקה את הדרך שבה MySQL משנה טבלאות באופן פנימי, אבל זה עובד
על עותק של הטבלה שברצונך לשנות. זה אומר שהטבלה המקורית לא
נעול, ולקוחות עשויים להמשיך לקרוא ולשנות נתונים בו.
pt-online-schema-change פועל על ידי יצירת עותק ריק של הטבלה לשינוי, שינוי
זה כרצונך, ולאחר מכן העתקת שורות מהטבלה המקורית לטבלה החדשה. כאשר
ההעתקה הושלמה, היא מרחיקה את הטבלה המקורית ומחליפה אותה בטבלה החדשה. על ידי
ברירת מחדל, זה גם מוריד את הטבלה המקורית.
תהליך העתקת הנתונים מבוצע בנתחים קטנים של נתונים, אשר מגוונים כדי לנסות
לגרום להם לביצוע בפרק זמן מסוים (ראה "--chunk-time"). התהליך הזה הוא מאוד
בדומה לאופן שבו כלים אחרים, כגון pt-table-checksum, עובדים. כל שינוי בנתונים ב
הטבלאות המקוריות במהלך ההעתקה יבואו לידי ביטוי בטבלה החדשה, בגלל הכלי
יוצר טריגרים בטבלה המקורית כדי לעדכן את השורות המתאימות בטבלה החדשה.
השימוש בטריגרים אומר שהכלי לא יעבוד אם כבר מוגדרים טריגרים
על השולחן.
כאשר הכלי מסיים להעתיק נתונים לטבלה החדשה, הוא משתמש ב-"RENAME TABLE" אטומי
פעולה לשינוי שם הטבלה המקורית והחדשה בו זמנית. אחרי שזה יסתיים,
הכלי מפיל את הטבלה המקורית.
מפתחות זרים מסבכים את פעולת הכלי ומכניסים סיכון נוסף. הדרך
של שינוי אטומי של הטבלאות המקוריות והחדשות לא עובד כאשר מפתחות זרים מתייחסים
לשולחן. הכלי חייב לעדכן מפתחות זרים כדי להתייחס לטבלה החדשה לאחר הסכימה
השינוי הושלם. הכלי תומך בשתי שיטות להשגת זאת. אתה יכול לקרוא
עוד על כך בתיעוד של "--alter-foreign-keys-method".
מפתחות זרים גם גורמים לכמה תופעות לוואי. לשולחן הסופי יהיו אותם מפתחות זרים
ואינדקסים כטבלה המקורית (אלא אם כן תציין אחרת ב-ALTER שלך
הצהרה), אך שמות האובייקטים עשויים להשתנות מעט כדי למנוע שם אובייקט
התנגשויות ב-MySQL וב-InnoDB.
למען הבטיחות, הכלי לא משנה את הטבלה אלא אם כן תציין את האפשרות "--execute",
שאינו מופעל כברירת מחדל. הכלי תומך במגוון אמצעים אחרים למניעת
עומס לא רצוי או בעיות אחרות, כולל זיהוי אוטומטי של העתקים, התחברות ל
אותם, ושימוש בבדיקות הבטיחות הבאות:
· ברוב המקרים הכלי יסרב לפעול אלא אם כן PRIMARY KEY או UNIQUE INDEX
נוכח בטבלה. ראה "--alter" לפרטים.
· הכלי מסרב לפעול אם הוא מזהה מסנני שכפול. לִרְאוֹת
"--[no]check-replication-filters" לפרטים.
· הכלי משהה את פעולת העתקת הנתונים אם הוא מבחין בהעתקים כלשהם שמתעכבים
בשכפול. ראה "--max-lag" לפרטים.
· הכלי משהה או מבטל את פעולתו אם הוא מזהה עומס רב מדי על השרת. לִרְאוֹת
"--max-load" ו-"--critical-load" לפרטים.
· הכלי מגדיר "innodb_lock_wait_timeout=1" ו (עבור MySQL 5.5 ואילך)
"lock_wait_timeout=60" כך שסביר יותר שהוא יהיה הקורבן של כל נעילה
טענה, ופחות סיכוי לשבש עסקאות אחרות. ערכים אלו יכולים להיות
שונה על ידי ציון "--set-vars".
· הכלי מסרב לשנות את הטבלה אם אילוצי מפתח זר מתייחסים אליה, אלא אם כן
אתה מציין "--alter-foreign-keys-method".
· הכלי אינו יכול לשנות טבלאות MyISAM בצמתי "Percona XtraDB Cluster".
פרקונה XtraDB אשכול
pt-online-schema-change עובד עם Percona XtraDB Cluster (PXC) 5.5.28-23.7 ואילך, אבל
ישנן שתי מגבלות: ניתן לשנות רק טבלאות InnoDB, ו-"wsrep_OSU_method" חייב
להיות מוגדר ל-"TOI" (בידוד סדר מוחלט). הכלי יוצא עם שגיאה אם המארח הוא א
צומת אשכול והטבלה היא MyISAM או בהמרה ל-MyISAM ("ENGINE=MyISAM"), או
אם "wsrep_OSU_method" אינו "TOI". אין דרך להשבית את הבדיקות הללו.
תפוקה
הכלי מדפיס מידע על פעילותו ל-STDOUT כדי שתוכל לראות מה זה
מַעֲשֶׂה. במהלך שלב העתקת הנתונים, הוא מדפיס דוחות "--התקדמות" ל-STDERR. אתה יכול לקבל
מידע נוסף על ידי ציון "--print".
אם צוין "--סטטיסטיקה", מודפס דוח של ספירות אירועים פנימיים שונים ב-
הסוף, כמו:
# ספירת אירועים
# ====== =====
# הוסף 1
אפשרויות
"--dry-run" ו-"--execute" סותרים זה את זה.
כלי זה מקבל ארגומנטים נוספים של שורת הפקודה. עיין ב"תקציר" והשימוש
מידע לפרטים.
--לשנות
סוג: מחרוזת
שינוי הסכימה, ללא מילות המפתח ALTER TABLE. אתה יכול לבצע מספר רב
שינויים בטבלה על ידי ציון אותם בפסיקים. אנא עיין ב-MySQL
מדריך לתחביר של ALTER TABLE.
חלות ההגבלות הבאות, שאם תנסה, תגרום לכלי להיכשל
דרכים בלתי צפויות:
· כמעט בכל המקרים צריך להיות PRIMARY KEY או UNIQUE INDEX ב-
שולחן. זה הכרחי מכיוון שהכלי יוצר טריגר DELETE כדי לשמור על
טבלה חדשה עודכנה בזמן שהתהליך פועל.
חריג בולט הוא כאשר נוצר מ-PRIMARY KEY או UNIQUE INDEX
קיימים עמודות כחלק מסעיף ALTER; במקרה זה הוא ישתמש באלה
עמודות עבור הטריגר DELETE.
· לא ניתן להשתמש בסעיף "RENAME" כדי לשנות את שם הטבלה.
· לא ניתן לשנות שמות של עמודות על ידי שחרור והוספה מחדש עם השם החדש. הכלי
לא יעתיק את נתוני העמודה המקורית לעמודה החדשה.
· אם תוסיף עמודה ללא ערך ברירת מחדל ותהפוך אותה ל- NOT NULL, הכלי יעשה זאת
נכשל, מכיוון שהוא לא ינסה לנחש ערך ברירת מחדל עבורך; עליך לציין את
ברירת המחדל.
· "DROP FOREIGN KEY constraint_name" דורש ציון "_constraint_name" במקום זאת
מאשר ה-"constraint_name" האמיתי. עקב מגבלה ב-MySQL, pt-online-schema-
שינוי מוסיף קו תחתון מוביל לשמות אילוצי מפתח זר בעת יצירת ה
שולחן חדש. לדוגמה, כדי לבטל את האילוץ הזה:
אילוץ `fk_foo` FOREIGN KEY (`foo_id`) הפניות `bar` (`foo_id`)
עליך לציין "--alter "DROP FOREIGN KEY _fk_foo"".
· הכלי אינו משתמש ב-"LOCK IN SHARE MODE" עם MySQL 5.0 מכיוון שהוא יכול לגרום ל-
שגיאת עבד ששוברת שכפול:
שאילתה גרמה לשגיאות שונות באדון ובעבד. שגיאה במאסטר:
'נמצא מבוי סתום בעת ניסיון להשיג נעילה; נסה להפעיל מחדש את העסקה' (1213),
שגיאה בעבד: 'אין שגיאה' (0). מסד נתונים ברירת מחדל: 'pt_osc'.
שאילתה: 'INSERT INTO pt_osc.t (id, c) VALUES ('730', 'new row')'
השגיאה מתרחשת בעת המרת טבלת MyISAM ל-InnoDB מכיוון ש-MyISAM אינו
טרנסקציונלי אבל InnoDB הוא טרנזקציוני. MySQL 5.1 ואילך מטפלים במקרה זה
נכון, אבל הבדיקה משחזרת את השגיאה 5% מהמקרים עם MySQL 5.0.
זהו באג MySQL, דומה לhttp://bugs.mysql.com/bug.php?id=45694>, אבל
אין תיקון או מעקף ב-MySQL 5.0. ללא "LOCK IN SHARE MODE", בדיקות
לעבור 100% מהזמן, כך שהסיכון לאובדן נתונים או שבירה של שכפול צריך להיות
זניח.
Be בטוח ל לאמת מה היא חדש שולחן if באמצעות MySQL 5.0 ו המרת החל מ- MyISAM ל
InnoDB!
--alter-keys-method
סוג: מחרוזת
כיצד לשנות מפתחות זרים כך שיפנו לטבלה החדשה. מפתחות זרים כי
יש להתייחס במיוחד לטבלה שיש לשנות כדי להבטיח שהן
המשך להפנות לטבלה הנכונה. כאשר הכלי משנה את שם הטבלה המקורית ל
תן לחדש לתפוס את מקומו, המפתחות הזרים "עקבו אחרי" הטבלה ששמה שונה, וחייבים
ישתנה כדי להתייחס לטבלה החדשה במקום זאת.
הכלי תומך בשתי טכניקות להשיג זאת. זה מוצא אוטומטית "ילד
טבלאות" המתייחסות לטבלה שיש לשנות.
המכונית
קבע אוטומטית איזו שיטה היא הטובה ביותר. הכלי משתמש ב-"rebuild_constraints"
אם אפשר (ראה את התיאור של שיטה זו לפרטים), ואם לא, אז זה
משתמש ב-"drop_swap".
rebuild_constraints
שיטה זו משתמשת ב-"ALTER TABLE" כדי להוריד ולהוסיף מחדש אילוצי מפתח זר
עיין בטבלה החדשה. זוהי הטכניקה המועדפת, אלא אם כן אחת או יותר מהן
הטבלאות "ילד" כל כך גדולות שה-"ALTER" ייקח יותר מדי זמן. הכלי
קובע כי על ידי השוואת מספר השורות בטבלת הצאצא לשיעור ב
שהכלי מסוגל להעתיק שורות מהטבלה הישנה לטבלה החדשה. אם ה
כלי מעריך שניתן לשנות את טבלת הילד בפחות זמן מה
"--chunk-time", אז הוא ישתמש בטכניקה זו. למטרות הערכת ה
בזמן הדרוש לשינוי טבלת הצאצא, הכלי מכפיל את קצב העתקת השורות
לפי "--chunk-size-limit", מכיוון ש-"ALTER TABLE" של MySQL הוא בדרך כלל הרבה יותר מהיר
מאשר התהליך החיצוני של העתקת שורות.
עקב מגבלה ב-MySQL, למפתחות זרים לא יהיו אותם שמות אחרי ה-
ALTER שעשו לפניו. הכלי צריך לשנות את שם המפתח הזר כאשר הוא
מגדיר אותו מחדש, מה שמוסיף קו תחתון מוביל לשם. במקרים מסוימים, MySQL
גם משנה אוטומטית את שמות האינדקסים הנדרשים עבור המפתח הזר.
drop_swap
השבת בדיקות מפתח זר (FOREIGN_KEY_CHECKS=0), ולאחר מכן שחרר את הטבלה המקורית
לפני שינוי שם השולחן החדש למקומו. זה שונה מהרגיל
שיטת החלפת הטבלה הישנה והחדשה, המשתמשת ב-"RENAME" אטומי כלומר
לא ניתן לזיהוי ליישומי לקוח.
שיטה זו מהירה יותר ואינה חוסמת, אך היא מסוכנת יותר משתי סיבות.
ראשית, לזמן קצר בין השמטת הטבלה המקורית לבין שינוי שם ה-
טבלה זמנית, הטבלה שיש לשנות פשוט לא קיימת, ושאילתות
נגד זה יגרום לשגיאה. שנית, אם יש שגיאה והחדש
לא ניתן לשנות את שם הטבלה למקום הישן, אז זה מאוחר מדי
להפסיק, כי השולחן הישן נעלם לצמיתות.
שיטה זו מאלצת "--no-swap-tables" ו------no-srop-old-table".
אף לא אחד
שיטה זו היא כמו "drop_swap" ללא ה-"swap". כל מפתחות זרים כי
הפניה הטבלה המקורית תפנה כעת לטבלה לא קיימת. זה יהיה
בדרך כלל גורמים להפרות מפתח זר הנראות ב-"SHOW ENGINE INNODB
STATUS", בדומה להלן:
מנסה להוסיף לאינדקס 'idx_fk_staff_id' tuple:
DATA TUPLE: 2 שדות;
0: לן 1; hex 05; asc ;;
1: לן 4; hex 80000001; asc ;;
אבל טבלת האב `סקילה`.`צוות_ישן`
או שקובץ ה-.ibd שלו אינו קיים כעת!
הסיבה לכך היא שהטבלה המקורית (במקרה זה, sakila.staff) שונה ל-
sakila.staff_old ואז ירד. שיטה זו לטיפול באילוצים של מפתח זר
מסופק כך שמנהל מסד הנתונים יכול להשבית את הכלי המובנה
פונקציונליות אם תרצה.
--[לא]נתח-לפני-החלפה
ברירת מחדל: כן
בצע את ANALYZE TABLE על השולחן החדש לפני החלפה עם הישן. כברירת מחדל,
זה קורה רק כשמריצים MySQL 5.6 ואילך, ו-"innodb_stats_persistent" הוא
מופעל. ציין את האפשרות באופן מפורש להפעיל או להשבית אותה ללא קשר ל-MySQL
גרסה ו-"innodb_stats_persistent".
זה עוקף בעיה שעלולה להיות רצינית הקשורה לסטטיסטיקה של InnoDB אופטימיזציה.
אם הטבלה שמקבלת התראה תפוסה והכלי יסתיים במהירות, הטבלה החדשה תעשה זאת
אין להם נתונים סטטיסטיים של כלי האופטימיזציה לאחר ההחלפה. זה יכול לגרום לשימוש מהיר באינדקס
שאילתות לבצע סריקות טבלה מלאה עד לעדכון הנתונים הסטטיסטיים של כלי האופטימיזציה (בדרך כלל לאחר
10 שניות). אם השולחן גדול והשרת עמוס מאוד, הדבר עלול לגרום להפסקה.
--שאל-עבר
בקש סיסמה בעת התחברות ל-MySQL.
--charset
צורה קצרה: -A; סוג: מחרוזת
ערכת תווים ברירת מחדל. אם הערך הוא utf8, מגדיר את binmode של Perl ב-STDOUT ל-utf8,
מעביר את האפשרות mysql_enable_utf8 ל-DBD::mysql, ומפעיל את SET NAMES UTF8 לאחר
מתחבר ל-MySQL. כל ערך אחר מגדיר binmode על STDOUT ללא שכבת utf8,
ומריץ את SET NAMES לאחר התחברות ל-MySQL.
--[אין]שינוי המחאה
ברירת מחדל: כן
מנתח את ה-"--alter" שצוין ומנסה להתריע על התנהגות בלתי מכוונת אפשרית.
נכון לעכשיו, הוא בודק עבור:
שמות של עמודות
בגרסאות קודמות של הכלי, שינוי שם של עמודה עם "CHANGE COLUMN name
new_name" יוביל לאיבוד הנתונים של העמודה. הכלי מנתח כעת את
לשנות את ההצהרה ומנסה לתפוס את המקרים האלה, כך שהעמודות ששונו היה אמור להיות
אותם נתונים כמו המקורות. עם זאת, הקוד שעושה זאת אינו מלא-
מנתח SQL מפוצץ, אז תחילה עליך להפעיל את הכלי עם "--dry-run" ו-"--print"
וודא שהוא מזהה את העמודות ששמם שונה בצורה נכונה.
שחרר את המפתח הראשי
אם "--alter" מכיל "DROP PRIMARY KEY" (לא תלוי רישיות ורווח), אזהרה
מודפס והכלי יוצא אלא אם צוין "--dry-run". שינוי ה
המפתח הראשי יכול להיות מסוכן, אבל הכלי יכול להתמודד עם זה. הטריגרים של הכלי,
במיוחד הדק DELETE, מושפעים ביותר משינוי המפתח הראשי
כי הכלי מעדיף להשתמש במפתח הראשי עבור הטריגרים שלו. אתה צריך
תחילה הפעל את הכלי עם "--dry-run" ו-"--print" וודא שהטריגרים הם
לתקן.
--מרווח בדיקה
סוג: זמן; ברירת מחדל: 1
זמן שינה בין בדיקות עבור "--max-lag".
--[אין] תוכנית צ'ק
ברירת מחדל: כן
בדוק תוכניות ביצוע שאילתות לבטיחות. כברירת מחדל, אפשרות זו גורמת לכלי לפעול
הסבירו לפני הפעלת שאילתות שנועדו לגשת לכמות קטנה של נתונים, אבל
שיכולה לגשת לשורות רבות אם MySQL תבחר בתוכנית ביצוע גרועה. אלה כוללים את
שאילתות לקביעת גבולות הנתחים ואת שאילתות הנתחים עצמם. אם זה מופיע
ש-MySQL ישתמש בתוכנית ביצוע שאילתה גרועה, הכלי ידלג על הנתח של
השולחן.
הכלי משתמש במספר היוריסטיות כדי לקבוע אם תוכנית ביצוע גרועה. ה
ראשית, האם EXPLAIN מדווח ש-MySQL מתכוונת להשתמש באינדקס הרצוי כדי לגשת אליו
את השורות. אם MySQL בוחר באינדקס אחר, הכלי מחשיב את השאילתה לא בטוחה.
הכלי גם בודק כמה מהאינדקס מדווח MySQL שהוא ישתמש עבור
שאילתא. הפלט EXPLAIN מציג זאת בעמודה key_len. הכלי זוכר את
key_len הגדולה ביותר שנראתה, ומדלגת על חלקים שבהם MySQL מדווחת שהיא תשתמש בקובץ קטן יותר
הקידומת של האינדקס. ניתן להבין היוריסטיקה זו כדילוג על נתחים בעלי א
תוכנית ביצוע גרועה יותר מאשר נתחים אחרים.
הכלי מדפיס אזהרה בפעם הראשונה שמדלגים על נתח עקב ביצוע גרוע
תוכנית בכל טבלה. נתחים הבאים מדלגים בשקט, למרות שאתה יכול לראות את
ספירת נתחים שדילגו בעמודה SKIPPED בפלט של הכלי.
אפשרות זו מוסיפה קצת עבודת הגדרה לכל שולחן וחלק. למרות שהעבודה לא
פולשני עבור MySQL, זה מביא ליותר נסיעות הלוך ושוב לשרת, אשר צורך
זְמַן. הפיכת נתחים קטנים מדי תגרום לתקורה להיות גדולה יותר יחסית. זה
לכן מומלץ לא לעשות נתחים קטנים מדי, כי הכלי עלול לקחת
זמן רב מאוד להשלים אם כן.
--[אין]מסנני-שכפול-בדיקה
ברירת מחדל: כן
בטל אם מוגדר מסנן שכפול כלשהו בשרת כלשהו. הכלי מחפש שרת
אפשרויות שמסננות שכפול, כגון binlog_ignore_db ו- replicate_do_db. אם זה
מוצא מסננים כאלה, הוא מבטל עם שגיאה.
אם ההעתקים מוגדרים עם אפשרויות סינון כלשהן, עליך להיזהר שלא
לשנות מסדי נתונים או טבלאות שקיימים במאסטר ולא בעותקים העתקניים,
כי זה עלול לגרום לכישלון שכפול. למידע נוסף על שכפול
כללים, ראהhttp://dev.mysql.com/doc/en/replication-rules.html>.
--check-slave-lag
סוג: מחרוזת
השהה את העתקת הנתונים עד שהפיגור של העתק הזה יהיה קטן מ---max-lag. הערך הוא א
DSN שיורש מאפיינים מאפשרויות החיבור ("--port", "--user",
וכו.). אפשרות זו עוקפת את ההתנהגות הרגילה של חיפוש ומתמשך
ניטור השהיית שכפול בכל העותקים המחוברים. אם אתה לא רוצה לפקח
כל ההעתקים, אבל אתה רוצה שיותר מסתם עותק אחד יהיה במעקב, אז השתמש ב-
אפשרות DSN לאפשרות "--recursion-method" במקום אפשרות זו.
--chunk-index
סוג: מחרוזת
העדיפו את האינדקס הזה עבור טבלאות חתיכות. כברירת מחדל, הכלי בוחר הכי הרבה
אינדקס מתאים לנתחים. אפשרות זו מאפשרת לך לציין את האינדקס שאתה
לְהַעֲדִיף. אם האינדקס לא קיים, הכלי יחזור לברירת המחדל שלו
התנהגות של בחירת אינדקס. הכלי מוסיף את האינדקס להצהרות SQL ב-a
סעיף "אינדקס כוח". היזהר בעת שימוש באפשרות זו; בחירה גרועה של מדד יכולה
לגרום לביצועים גרועים.
--chunk-index-columns
סוג: int
השתמש רק במספר העמודות השמאליות ביותר של "--chunk-index". זה עובד רק עבור
אינדקסים מורכבים, והוא שימושי במקרים בהם באג במיטוב השאילתות של MySQL
(מתכנן) גורם לו לסרוק טווח גדול של שורות במקום להשתמש באינדקס לאיתור
נקודות התחלה וסיום בדיוק. בעיה זו מתרחשת לפעמים באינדקסים עם
עמודות רבות, כגון 4 או יותר. אם זה קורה, הכלי עשוי להדפיס אזהרה
הקשורים לאפשרות "--[no]check-plan". הוראה לכלי להשתמש רק בראשון
N עמודות של האינדקס מהווה פתרון לעקיפת הבאג במקרים מסוימים.
--גודל נתח
סוג: גודל; ברירת מחדל: 1000
מספר שורות לבחירה עבור כל נתח שהועתק. סיומות מותרות הן k, M, G.
אפשרות זו יכולה לעקוף את התנהגות ברירת המחדל, שהיא התאמת גודל הנתח
באופן דינמי כדי לנסות לגרום לנתחים לרוץ בדיוק בשניות "--chunk-time". כשזה
אפשרות לא מוגדרת במפורש, ערך ברירת המחדל שלה משמש כנקודת התחלה, אלא לאחר מכן
שהכלי מתעלם מהערך של אפשרות זו. אם תגדיר את האפשרות הזו במפורש,
עם זאת, אז הוא משבית את התנהגות ההתאמה הדינמית ומנסה ליצור את כל הנתחים
בדיוק את מספר השורות שצוין.
יש עדינות: אם מדד הנתחים אינו ייחודי, אז יתכן שהנתחים
יהיה גדול מהרצוי. לדוגמה, אם טבלה מחולקת לפי אינדקס ש
מכיל 10,000 של ערך נתון, אין דרך לכתוב משפט WHERE שתואם
רק 1,000 מהערכים, והנתח הזה יהיה בגודל של לפחות 10,000 שורות. כמו
chunk כנראה ידלג בגלל "--chunk-size-limit".
---chunk-size-limit
סוג: לצוף; ברירת מחדל: 4.0
אל תעתיק נתחים גדולים בהרבה מגודל הנתח הרצוי.
כאשר לטבלה אין אינדקסים ייחודיים, גדלי נתחים עלולים להיות לא מדויקים. אפשרות זו
מציין גבול נסבל מקסימלי לאי הדיוק. הכלי משתמש ל
להעריך כמה שורות יש בנתח. אם ההערכה הזו עולה על הנתח הרצוי
הגודל כפול מהמגבלה, ואז הכלי מדלג על הנתח.
הערך המינימלי עבור אפשרות זו הוא 1, מה שאומר שאף נתח לא יכול להיות גדול מ
"--גוש-גודל". אתה כנראה לא רוצה לציין 1, כי שורות שדווחו על ידי
הסבר הם אומדנים, שיכולים להיות שונים ממספר השורות האמיתי ב-
חתיכה. אתה יכול להשבית בדיקת נתחים גדולים על ידי ציון ערך של 0.
הכלי גם משתמש באפשרות זו כדי לקבוע כיצד לטפל במפתחות זרים שמתייחסים אליהם
הטבלה שיש לשנות. ראה "--alter-foreign-keys-method" לפרטים.
--צ'אנק-זמן
סוג: לצוף; ברירת מחדל: 0.5
התאם את גודל הנתח באופן דינמי כך שלכל שאילתת העתקת נתונים ייקח כל כך הרבה זמן לביצוע.
הכלי עוקב אחר קצב ההעתקה (שורות בשנייה) ומתאים את גודל הנתח לאחר כל אחת
שאילתת העתקת נתונים, כך שהשאילתה הבאה לוקחת את פרק הזמן הזה (בשניות).
לבצע. זה שומר על ממוצע נע של שאילתות בשנייה הולך ופוחת, כך
שאם ביצועי השרת משתנים עקב שינויים בעומס השרת, הכלי
מסתגל במהירות.
אם אפשרות זו מוגדרת לאפס, גודל הנתח לא יתכוונן אוטומטית, ולכן זמני השאילתה
להשתנות, אבל גדלי נתחי שאילתה לא. דרך נוספת לעשות את אותו הדבר היא לציין א
ערך עבור "--chunk-size" במפורש, במקום להשאיר אותו כברירת מחדל.
--config
סוג: מערך
קרא את הרשימה המופרדת בפסיקים של קובצי תצורה; אם צוין, זה חייב להיות הראשון
אפשרות בשורת הפקודה.
--עומס קריטי
סוג: מערך; ברירת מחדל: Threads_running=50
בדוק SHOW GLOBAL STATUS לאחר כל נתח, והפסק אם העומס גבוה מדי. ה
option מקבל רשימה מופרדת בפסיקים של משתני מצב MySQL וספים. א
האופציונלי "=MAX_VALUE" (או ":MAX_VALUE") יכול לעקוב אחר כל משתנה. אם לא ניתן, ה
הכלי קובע סף על ידי בחינת הערך הנוכחי בעת האתחול והכפלתו.
ראה "--max-load" לפרטים נוספים. אפשרויות אלה פועלות באופן דומה, מלבד זאת
option תבטל את פעולת הכלי במקום להשהות אותו, וערך ברירת המחדל הוא
מחושב אחרת אם לא מציינים סף. הסיבה לאפשרות זו היא א
בדיקת בטיחות למקרה שהטריגרים בטבלה המקורית מוסיפים כל כך הרבה עומס על השרת
שזה גורם להשבתה. כנראה שאין ערך יחיד של Threads_running כלומר
שגוי עבור כל שרת, אבל נראה שברירת המחדל של 50 תהיה גבוהה באופן בלתי מתקבל על הדעת
רוב השרתים, מה שמציין שיש לבטל את הפעולה באופן מיידי.
--מאגר מידע
צורה קצרה: -D; סוג: מחרוזת
התחבר למסד נתונים זה.
--מנוע ברירת מחדל
הסר את "ENGINE" מהטבלה החדשה.
כברירת מחדל הטבלה החדשה נוצרת עם אותן אפשרויות טבלה כמו הטבלה המקורית,
אז אם הטבלה המקורית משתמשת ב-InnoDB, אז הטבלה החדשה תשתמש ב-InnoDB. בבירור
במקרים הכוללים שכפול, הדבר עלול לגרום לשינויים לא מכוונים בהעתקים העושים שימוש ב-a
מנוע שונה עבור אותו שולחן. ציון אפשרות זו גורם לטבלה החדשה
להיווצר עם מנוע ברירת המחדל של המערכת.
-קובץ ברירת המחדל
צורה קצרה: -F; סוג: מחרוזת
קרא רק אפשרויות mysql מהקובץ הנתון. עליך לתת שם נתיב מוחלט.
--[אין]טבלה חדשה
ברירת מחדל: כן
שחרר את הטבלה החדשה אם העתקת הטבלה המקורית נכשלת.
ציון "--no-drop-new-table" ו-"--no-swap-tables" משאיר את העותק החדש והשונה
של הטבלה מבלי לשנות את הטבלה המקורית. ראה "--new-table-name".
--no-drop-new-table לא עובד עם "alter-foreign-keys-method drop_swap".
--[אין]טבלה-ישנה
ברירת מחדל: כן
שחרר את הטבלה המקורית לאחר שינוי שמה. לאחר שהשולחן המקורי היה
שונה שם בהצלחה כדי לתת לטבלה החדשה לתפוס את מקומה, ואם אין שגיאות,
הכלי מפיל את הטבלה המקורית כברירת מחדל. אם יש שגיאות, הכלי עוזב
השולחן המקורי במקום.
אם צוין "--no-swap-tables", אז אין טבלה ישנה לשחרר.
--[אין] גורמים לירידה
ברירת מחדל: כן
שחרר טריגרים על השולחן הישן. "--no-dropp-trigers" מאלץ "--no-dropp-old-table".
--ריצה יבשה
צור ושנה את הטבלה החדשה, אך אל תיצור טריגרים, העתק נתונים או החלפת
שולחן מקורי.
--לבצע
ציין שקראת את התיעוד וברצונך לשנות את הטבלה. אתה חייב
ציין אפשרות זו כדי לשנות את הטבלה. אם לא, הכלי יפעל רק
כמה בדיקות בטיחות ויציאה. זה עוזר להבטיח שקראת את התיעוד
ולהבין כיצד להשתמש בכלי זה. אם לא קראת את התיעוד, עשה זאת
לא לציין אפשרות זו.
--כּוֹחַ
אפשרות זו עוקפת אישור במקרה של שימוש ב-alter-foreign-keys-method = none ,
מה שעשוי לשבור אילוצי מפתח זר.
- עזרה
הצג עזרה וצא.
--מנחה
צורה קצרה: -h; סוג: מחרוזת
התחבר למארח.
--max-flow-ctl
סוג: צף
קצת דומה ל--max-lag אבל עבור אשכולות PXC. בדוק את אשכול הזמן הממוצע שהושקע
השהייה עבור בקרת זרימה והשהיית הכלי אם היא עוברת את האחוז המצוין
באופציה. ערך של 0 יגרום לכלי להשהות כאשר *כל* בקרת זרימה
מתגלה פעילות. ברירת המחדל היא ללא בדיקת בקרת זרימה. אפשרות זו זמינה
עבור גרסאות PXC 5.6 ומעלה.
--max-lag
סוג: זמן; ברירת מחדל: 1 שניות
השהה את העתקת הנתונים עד שהפיגור של כל העתקים יקטן מערך זה. אחרי כל נתון-
העתק שאילתה (כל נתח), הכלי בוחן את השהיית השכפול של כל ההעתקים אליהם
שהוא מחבר, באמצעות Seconds_Behind_Master. אם העתק כלשהו מפגר יותר מ
הערך של אפשרות זו, אז הכלי יירדם למשך שניות "--check-interval",
ואז בדוק שוב את כל ההעתקים. אם אתה מציין "--check-slave-lag", אז הכלי בלבד
בודק את השרת הזה לאיחור, לא את כל השרתים. אם אתה רוצה לשלוט בדיוק באיזה
שרתים שהכלי עוקב אחריהם, השתמש בערך DSN כדי "--recursion-method".
הכלי מחכה לנצח להעתקים שיפסיקו לפגר. אם עוצר העתק כלשהו, ה
הכלי ממתין לנצח עד להפעלת העתק. העתקת הנתונים ממשיכה כאשר הכל
העתקים פועלים ולא מפגרים יותר מדי.
הכלי מדפיס דוחות התקדמות בזמן ההמתנה. אם העתק מופסק, הוא מדפיס א
דוח התקדמות מיד, ואז שוב בכל מרווח דוח התקדמות.
--עומס מירבי
סוג: מערך; ברירת מחדל: 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
STATUS מיד לאחר סיום כל שאילתה. אם תציין סף לכך
משתנה, אז תוכל להורות לכלי להמתין עד שהשאילתות יפעלו כרגיל
שוב. עם זאת, זה לא ימנע עמידה בתור; זה רק ייתן לשרת הזדמנות
להתאושש מהתור. אם אתה מבחין בתור, עדיף להקטין את
נתח זמן.
--שם-טבלה חדש
סוג: מחרוזת; ברירת מחדל: %T_new
שם טבלה חדש לפני החלפתה. %T מוחלף בשם הטבלה המקורי.
כאשר נעשה שימוש ברירת המחדל, הכלי מכניס את השם בקידומת של עד 10 "_" (קו תחתון) ל-
למצוא שם טבלה ייחודי. אם צוין שם טבלה, הכלי אינו מקדימה אותו
עם "_", אז הטבלה לא חייבת להתקיים.
--סיסמה
צורה קצרה: -p; סוג: מחרוזת
סיסמה לשימוש בעת החיבור. אם הסיסמה מכילה פסיקים יש לבצע אסקייפ
עם קו נטוי אחורי: "exam\,ple"
--pid
סוג: מחרוזת
צור את קובץ ה-PID הנתון. הכלי לא יופעל אם קובץ ה-PID כבר קיים ו
ה-PID שהוא מכיל שונה מה-PID הנוכחי. עם זאת, אם קובץ ה-PID
קיים וה-PID שהוא מכיל אינו פועל יותר, הכלי יחליף את ה-PID
קובץ עם ה-PID הנוכחי. קובץ ה-PID מוסר אוטומטית כאשר הכלי יוצא.
--חיבור
סוג: מחרוזת
קובץ מודול Perl שמגדיר מחלקה "pt_online_schema_change_plugin". תוסף
מאפשר לך לכתוב מודול Perl שיכול להתחבר לחלקים רבים של pt-online-schema-
שינוי. זה דורש היכרות טובה עם מוסכמות Perl ו-Percona Toolkit, אשר
הם מעבר לתחום זה של תיעוד זה. אנא צור קשר עם Percona אם יש לך
שאלות או זקוק לעזרה.
ראה "PLUGIN" למידע נוסף.
--נמל
צורה קצרה: -P; סוג: int
מספר יציאה לשימוש לחיבור.
--הדפס
הדפס הצהרות SQL ל-STDOUT. ציון אפשרות זו מאפשר לך לראות את רוב
הצהרות שהכלי מבצע. אתה יכול להשתמש באפשרות זו עם "--dry-run", עבור
דוגמא.
--התקדמות
סוג: מערך; ברירת מחדל: זמן, 30
הדפס דוחות התקדמות ל-STDERR תוך העתקת שורות. הערך מופרד בפסיקים
רשימה עם שני חלקים. החלק הראשון יכול להיות אחוז, זמן או איטרציות; ה
החלק השני מציין באיזו תדירות יש להדפיס עדכון, באחוזים, שניות,
או מספר איטרציות.
--שֶׁקֶט
צורה קצרה: -q
אל תדפיס הודעות ל-STDOUT (משבית את "--התקדמות"). שגיאות ואזהרות הן
עדיין מודפס ל-STDERR.
--שחזור
סוג: int
מספר הרמות שיש לחזור בהיררכיה בעת גילוי העתקים. ברירת המחדל היא
אֵינְסוֹף. ראה גם "--שיטת-רקורסיה".
--שיטת הרקורסיה
סוג: מערך; ברירת מחדל: רשימת תהליכים, מארחים
שיטת רקורסיה מועדפת לגילוי העתקים. השיטות האפשריות הן:
שימושים בשיטה
=============================
רשימת תהליכים הצג רשימת תהליכים
מארחים הצג מארחי עבדים
dsn=DSN DSNs מטבלה
אין אל תמצא עבדים
שיטת ה-proceslist היא ברירת המחדל, מכיוון ש-SHOW SLAVE HOSTS אינה אמינה.
עם זאת, שיטת המארחים יכולה לעבוד טוב יותר אם השרת משתמש ביציאה לא סטנדרטית (לא
3306). הכלי בדרך כלל עושה את הדבר הנכון ומוצא את כל ההעתקים, אבל אתה יכול לתת
שיטה מועדפת והיא תשמש תחילה.
שיטת המארחים דורשת הגדרת תצורה של העתקים עם report_host, report_port,
וכו '
שיטת dsn היא מיוחדת: היא מציינת טבלה שממנה קוראים מחרוזות DSN אחרות.
ה-DSN שצוין חייב לציין D ו-t, או t מוסמך למסד נתונים. טבלת ה-DSN
צריך להיות במבנה הבא:
צור טבלה 'dsns' (
`מזהה` int(11) NOT NULL AUTO_INCREMENT,
`הורה_מזהה` int(11) ברירת מחדל NULL,
`dsn` ורצ 'ר(255) לא NULL,
מפתח ראשוני ('מזהה')
);
כדי שהכלי ינטר רק את המארחים 10.10.1.16 ו-10.10.1.17 עבור השהיית שכפול,
הכנס את הערכים "h=10.10.1.16" ו-"h=10.10.1.17" לטבלה. נכון לעכשיו, ה
DSNs מסודרים לפי id, אך מתעלמים מ-id ו-parent_id.
--set-vars
סוג: מערך
הגדר את משתני MySQL ברשימה מופרדת בפסיקים של זוגות "משתנה=ערך".
כברירת מחדל, הכלי מגדיר:
wait_timeout=10000
innodb_lock_wait_timeout=1
lock_wait_timeout=60
משתנים שצוינו בשורת הפקודה עוקפים ברירות מחדל אלה. לדוגמה,
ציון "--set-vars wait_timeout=500" עוקף את ערך ברירת המחדל של 10000.
הכלי מדפיס אזהרה וממשיך אם לא ניתן להגדיר משתנה.
--לִישׁוֹן
סוג: לצוף; ברירת מחדל: 0
כמה זמן לישון (בשניות) לאחר העתקת כל נתח. אפשרות זו שימושית כאשר
חסימה על ידי "--max-lag" ו-"--max-load" אינה אפשרית. שנייה קטנה, תת-שנייה
יש להשתמש בערך, כמו 0.1, אחרת הכלי עשוי לקחת הרבה זמן להעתיק
שולחנות גדולים.
--שֶׁקַע
טפסים קצרים; סוג: מחרוזת
קובץ Socket לשימוש לחיבור.
--סטָטִיסטִיקָה
הדפס סטטיסטיקות על מונים פנימיים. זה שימושי כדי לראות כמה אזהרות
הודחקו בהשוואה למספר ה-INSERT.
--[אין]טבלאות החלפה
ברירת מחדל: כן
החלף את הטבלה המקורית ואת הטבלה החדשה והשונה. שלב זה משלים את המקוון
תהליך שינוי הסכימה על ידי הפיכת הטבלה עם הסכימה החדשה לתפוס את המקום של
שולחן מקורי. הטבלה המקורית הופכת ל"שולחן הישן", והכלי מפיל אותה
אלא אם כן אתה משבית את "--[no]טבלה-ישנת ירידה".
--מנסה
סוג: מערך
כמה פעמים לנסות פעולות קריטיות. אם פעולות מסוימות נכשלות עקב אי-
שגיאות קטלניות וניתנות לשחזור, הכלי ממתין ומנסה את הפעולה שוב. אלו הם
הפעולות שניסו מחדש, עם מספר הניסיונות המוגדר כברירת מחדל וזמן ההמתנה
בין נסיונות (בשניות):
נסיונות פעולה המתן
======================== ====
create_triggers 10 1
drop_triggers 10 1
copy_rows 10 0.25
swap_tables 10 1
update_foreign_keys 10 1
ניתוח_טבלה 10 1
כדי לשנות את ברירות המחדל, ציין את הערכים החדשים כמו:
--tries create_triggers:5:0.5,drop_triggers:5:0.5
זה גורם לכלי לנסות "create_triggers" ו-"drop_triggers" 5 פעמים עם 0.5
המתנה שנייה בין נסיונות. אז הפורמט הוא:
operation:tries:wait[,operation:tries:wait]
יש לציין את כל שלושת הערכים.
שים לב שרוב הפעולות מושפעות רק ב-MySQL 5.5 ואילך על ידי
"lock_wait_timeout" (ראה "--set-vars") בגלל נעילות מטא נתונים. ה"קופי_שורות"
הפעולה מושפעת בכל גרסה של MySQL על ידי "innodb_lock_wait_timeout".
ליצירה ושחרור של טריגרים, מספר הניסיונות חל על כל "CREATE
הצהרת TRIGGER" ו-"DROP TRIGGER" עבור כל טריגר. להעתקת שורות, המספר
של ניסיונות חל על כל נתח, לא על כל הטבלה. להחלפת טבלאות, המספר
של ניסיונות חל בדרך כלל פעם אחת מכיוון שבדרך כלל יש רק "RENAME TABLE" אחד
הַצהָרָה. עבור בנייה מחדש של אילוצי מפתח זר, מספר הניסיונות חל על
כל הצהרה ("ALTER" הצהרות עבור "rebuild_constraints"
"--alter-keys-method"; הצהרות אחרות עבור שיטת "drop_swap").
הכלי מנסה שוב כל פעולה אם מתרחשות השגיאות הבאות:
נעילת פסק זמן המתנה (innodb_lock_wait_timeout ו-lock_wait_timeout)
נמצא מבוי סתום
השאילתה נהרגה (KILL QUERY )
החיבור נהרג (KILL CONNECTION )
אבד החיבור ל-MySQL
במקרה של קשרים שאבדו ונהרגו, הכלי יתחבר מחדש אוטומטית.
כשלים וניסיונות חוזרים נרשמים ב"--סטטיסטיקה".
--מִשׁתַמֵשׁ
צורה קצרה: -u; סוג: מחרוזת
משתמש לכניסה אם לא משתמש נוכחי.
--גִרְסָה
הצג גרסה וצא.
--[אין]בדיקת גרסה
ברירת מחדל: כן
בדוק את הגרסה העדכנית ביותר של Percona Toolkit, MySQL ותוכניות אחרות.
זוהי תכונה רגילה של "בדוק עדכונים אוטומטית", עם שניים נוספים
מאפיינים. ראשית, הכלי בודק את הגרסה של תוכניות אחרות במערכת המקומית
תוספת לגרסה משלו. לדוגמה, הוא בודק את הגרסה של כל שרת MySQL
הוא מתחבר ל- Perl ולמודול Perl DBD::mysql. שנית, הוא בודק ומזהיר
לגבי גרסאות עם בעיות ידועות. לדוגמה, ל-MySQL 5.5.25 היה באג קריטי ו
שוחרר מחדש כ-5.5.25א.
כל עדכונים או בעיות ידועות מודפסים ל-STDOUT לפני הפלט הרגיל של הכלי.
תכונה זו לא אמורה להפריע לפעולה הרגילה של הכלי.
למידע נוסף, בקר .
חיבור
הקובץ שצוין על ידי "--plugin" חייב להגדיר מחלקה (כלומר חבילה) שנקראת
"pt_online_schema_change_plugin" עם תת שגרת "new()". הכלי יצור
מופע של מחלקה זו וקורא לכל hooks שהיא מגדירה. אין צורך בווים, אבל א
התוסף לא מאוד שימושי בלעדיהם.
הווים האלה, בסדר הזה, נקראים אם הם מוגדרים:
init
לפני_יצירת_טבלה_חדשה
after_create_new_table
לפני_שינוי_טבלה_חדשה
after_alter_new_table
לפני_יצירת_טריגרים
לאחר_יצירת_טריגרים
לפני_קופי_שורות
אחרי_קופי_שורות
לפני_החלפת_טבלאות
after_swap_tables
לפני_עדכון_מפתחות_זרים
after_update_foreign_keys
לפני_ירידה_ישן_טבלה
after_drop_old_table
לפני_ירידה_טריגרים
לפני_יציאה
get_slave_lag
כל וו מועבר טיעונים שונים. כדי לראות אילו טיעונים מועברים להוק,
חפש את שם ה-hook בקוד המקור של הכלי, כמו:
# -- וו פלאגין
if ( $plugin && $plugin->can('init') ) {
$plugin->init(
orig_tbl => $orig_tbl,
child_tables => $child_tables,
renamed_cols => $named_cols,
עבדים => $slaves,
slave_lag_cxns => $slave_lag_cxns,
);
}
ההערה "# --plugin hook" קודמת לכל שיחת Hook.
אנא צור קשר עם Percona אם יש לך שאלות או זקוק לעזרה.
dsn אפשרויות
אפשרויות DSN אלה משמשות ליצירת DSN. כל אפשרות ניתנת כמו "אופציה=ערך".
האפשרויות תלויות רישיות, ולכן P ו-p אינן אותה אפשרות. לא יכול להיות
רווח לבן לפני או אחרי הסימן "=" ואם הערך מכיל רווח לבן יש לצטט אותו.
אפשרויות DSN מופרדות בפסיקים. ראה את דף המנגנון של percona-toolkit לפרטים מלאים.
א
dsn: charset; העתקה: כן
ערכת תווים ברירת מחדל.
· ד
dsn: מסד נתונים; העתקה: כן
מסד נתונים לטבלה הישנה והחדשה.
· ו
dsn: mysql_read_default_file; העתקה: כן
קרא רק אפשרויות ברירת מחדל מהקובץ הנתון
· ח
dsn: מארח; העתקה: כן
התחבר למארח.
· עמ'
dsn: סיסמה; העתקה: כן
סיסמה לשימוש בעת החיבור. אם הסיסמה מכילה פסיקים יש לבצע אסקייפ
עם קו נטוי אחורי: "exam\,ple"
· עמ '
dsn: יציאה; העתקה: כן
מספר יציאה לשימוש לחיבור.
· ש
dsn: mysql_socket; העתקה: כן
קובץ Socket לשימוש לחיבור.
· ט
dsn: טבלה; עותק: לא
טבלה לשינוי.
· u
dsn: משתמש; העתקה: כן
משתמש לכניסה אם לא משתמש נוכחי.
הסביבה
משתנה הסביבה "PTDEBUG" מאפשר פלט איתור באגים מילולי ל-STDERR. כדי לאפשר
איתור באגים ולכידת כל הפלט לקובץ, הפעל את הכלי כמו:
PTDEBUG=1 pt-online-schema-change ... > קובץ 2>&1
היזהר: פלט ניפוי באגים הוא נפח גדול ויכול ליצור כמה מגה-בייט של פלט.
מערכת דרישות
אתה צריך Perl, DBI, DBD::mysql וכמה חבילות ליבה שצריכות להיות מותקנות בכל
גרסה חדשה למדי של Perl.
כלי זה עובד רק על MySQL 5.0.2 וגרסאות חדשות יותר, מכיוון שגרסאות קודמות לא
תמיכה בטריגרים.
השתמש ב-pt-online-schema-changep באינטרנט באמצעות שירותי onworks.net