ภาษาอังกฤษภาษาฝรั่งเศสสเปน

Ad


ไอคอน Fav ของ OnWorks

pt-archiverp - ออนไลน์ใน Cloud

เรียกใช้ pt-archiverp ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง pt-archiverp ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


pt-archiver - เก็บถาวรแถวจากตาราง MySQL ลงในตารางหรือไฟล์อื่น

เรื่องย่อ


การใช้งาน: pt-archiver [ตัวเลือก] --source DSN --where WHERE

pt-archiver nibbles บันทึกจากตาราง MySQL อาร์กิวเมนต์ --source และ --dest ใช้DSN
ไวยากรณ์; ถ้า COPY คือใช่ --dest จะเป็นค่าเริ่มต้นของค่าคีย์จาก --source

ตัวอย่าง:

เก็บถาวรแถวทั้งหมดจาก oltp_server ถึง olap_server และไปยังไฟล์:

pt-archiver --source h=oltp_server,D=test,t=tbl --dest h=olap_server \
--file '/var/log/archive/%Y-%m-%d-%D.%t' \
--โดยที่ "1=1" --limit 1000 --commit-each

ล้าง (ลบ) แถวเด็กกำพร้าจากตารางย่อย:

pt-archiver --source h=host,D=db,t=child --purge \
--โดยที่ 'ไม่มีอยู่ (เลือก * จากพาเรนต์ WHERE col=child.col)'

ความเสี่ยง


Percona Toolkit ได้รับการพัฒนา พิสูจน์แล้วในโลกแห่งความเป็นจริง และผ่านการทดสอบอย่างดี แต่ฐานข้อมูลทั้งหมด
เครื่องมือสามารถก่อให้เกิดความเสี่ยงต่อระบบและเซิร์ฟเวอร์ฐานข้อมูล ก่อนใช้เครื่องมือนี้
กรุณา:

· อ่านเอกสารประกอบของเครื่องมือ

·ตรวจสอบเครื่องมือที่เรียกว่า "BUGS"

· ทดสอบเครื่องมือบนเซิร์ฟเวอร์ที่ไม่ได้ใช้งานจริง

·สำรองเซิร์ฟเวอร์ที่ใช้งานจริงของคุณและตรวจสอบการสำรองข้อมูล

DESCRIPTION


pt-archiver เป็นเครื่องมือที่ฉันใช้ในการเก็บถาวรตารางตามที่อธิบายไว้ใน
<http://tinyurl.com/mysql-archiving>. เป้าหมายคืองานที่มีผลกระทบต่ำเฉพาะไปข้างหน้าเพื่อ
ดึงข้อมูลเก่าออกจากตารางโดยไม่กระทบต่อการสืบค้น OLTP มากนัก คุณสามารถแทรก
ข้อมูลลงในตารางอื่นซึ่งไม่จำเป็นต้องอยู่บนเซิร์ฟเวอร์เดียวกัน คุณยังสามารถเขียนถึง a
ไฟล์ในรูปแบบที่เหมาะสมกับ LOAD DATA INFILE หรือคุณทำทั้งสองอย่างไม่ได้ ซึ่งในกรณีนี้คือ
แค่ DELETE ที่เพิ่มขึ้นเรื่อยๆ

pt-archiver สามารถขยายได้ผ่านกลไกปลั๊กอิน คุณสามารถใส่รหัสของคุณเองเพื่อเพิ่ม
ตรรกะในการเก็บถาวรขั้นสูงที่อาจเป็นประโยชน์สำหรับการเก็บถาวรข้อมูลที่ขึ้นต่อกัน การใช้
กฎเกณฑ์ทางธุรกิจที่ซับซ้อน หรือการสร้างคลังข้อมูลระหว่างกระบวนการเก็บถาวร

คุณต้องเลือกค่าอย่างระมัดระวังสำหรับบางตัวเลือก ที่สำคัญที่สุดคือ "--จำกัด"
"--ลองใหม่" และ "--txn-size"

กลยุทธ์คือการหาแถวแรกจากนั้นสแกนดัชนีไปข้างหน้าเท่านั้นเพื่อหาเพิ่มเติม
แถวอย่างมีประสิทธิภาพ แบบสอบถามที่ตามมาแต่ละรายการไม่ควรสแกนทั้งตาราง มันควรจะแสวงหา
ลงในดัชนี จากนั้นสแกนจนกว่าจะพบแถวที่เก็บถาวรเพิ่มเติม ระบุดัชนีด้วย
ส่วน 'i' ของอาร์กิวเมนต์ "--source" อาจมีความสำคัญสำหรับสิ่งนี้ ใช้ "--dry-run" ถึง
ตรวจสอบข้อความค้นหาที่สร้างขึ้นและต้องแน่ใจว่าได้อธิบายเพื่อดูว่ามีประสิทธิภาพหรือไม่
(โดยส่วนใหญ่ คุณอาจต้องการสแกนคีย์ PRIMARY ซึ่งเป็นค่าเริ่มต้น) สม่ำเสมอ
ดีกว่า ตรวจสอบความแตกต่างในตัวนับสถานะตัวจัดการก่อนและหลังเรียกใช้
แบบสอบถาม และตรวจสอบให้แน่ใจว่าไม่ได้สแกนทั้งตารางทุกแบบสอบถาม

คุณสามารถปิดใช้งานการเพิ่มประสิทธิภาพการค้นหาแล้วสแกนบางส่วนหรือทั้งหมดได้ด้วย "--no-ascend"
และ "--ขึ้น-ลงก่อน" บางครั้งอาจมีประสิทธิภาพมากกว่าสำหรับคีย์แบบหลายคอลัมน์ เป็น
โปรดทราบว่า pt-archiver ถูกสร้างขึ้นเพื่อเริ่มต้นที่จุดเริ่มต้นของดัชนีที่เลือกและสแกน
มันไปข้างหน้าเท่านั้น ซึ่งอาจส่งผลให้เกิดการสแกนโต๊ะยาวหากคุณพยายามแทะจาก
ที่ส่วนท้ายของตารางโดยใช้ดัชนีอื่นนอกเหนือจากที่ต้องการ ดู "--แหล่งที่มา" และอ่าน
เอกสารเกี่ยวกับส่วน "i" หากสิ่งนี้ใช้ได้กับคุณ

เพอร์โคนา เอ็กซ์ตร้าดีบี Cluster


pt-archiver ใช้งานได้กับ Percona XtraDB Cluster (PXC) 5.5.28-23.7 และใหม่กว่า แต่มี
ข้อจำกัดสามประการที่คุณควรพิจารณาก่อนเก็บถาวรในคลัสเตอร์:

เกิดข้อผิดพลาดในการคอมมิต
pt-archiver ไม่ตรวจสอบข้อผิดพลาดเมื่อทำธุรกรรม คอมมิตบน PXC can
ล้มเหลว แต่เครื่องมือยังไม่ตรวจสอบหรือลองทำธุรกรรมอีกครั้งเมื่อสิ่งนี้เกิดขึ้น
ถ้ามันเกิดขึ้น เครื่องมือจะตาย

ตาราง MyISAM
การเก็บถาวรตาราง MyISAM ใช้งานได้ แต่การรองรับ MyISAM ใน PXC ยังคงเป็นการทดลองที่
เวลาของการเปิดตัวครั้งนี้ มีข้อบกพร่องหลายประการที่ทราบเกี่ยวกับ PXC, ตาราง MyISAM และ
คอลัมน์ "AUTO_INCREMENT" ดังนั้น คุณต้องแน่ใจว่าการเก็บถาวรจะไม่โดยตรง
หรือส่งผลทางอ้อมในการใช้ค่าเริ่มต้น "AUTO_INCREMENT" สำหรับตาราง MyISAM
ตัวอย่างเช่น สิ่งนี้เกิดขึ้นกับ "--dest" หากใช้ "--columns" และ
ไม่รวมคอลัมน์ "AUTO_INCREMENT" เครื่องมือนี้ไม่ตรวจสอบสิ่งนี้!

ตัวเลือกที่ไม่ใช่คลัสเตอร์
ตัวเลือกบางอย่างอาจใช้หรือไม่ได้ผล ตัวอย่างเช่น ถ้าคลัสเตอร์โหนดไม่ใช่ a
ทาส จากนั้น "--check-slave-lag" จะไม่ทำงาน และเนื่องจากตาราง PXC มักจะเป็น
InnoDB แต่ InnoDB ไม่รองรับ "INSERT DELAYED" ดังนั้น "--delayed-insert" จะไม่รองรับ
งาน. ตัวเลือกอื่นๆ อาจใช้ไม่ได้เช่นกัน แต่เครื่องมือจะไม่ตรวจสอบ ดังนั้น
คุณควรทดสอบการเก็บถาวรบนคลัสเตอร์ทดสอบก่อนที่จะเก็บถาวรบนคลัสเตอร์จริงของคุณ

เอาท์พุท


หากคุณระบุ "--ความคืบหน้า" เอาต์พุตจะเป็นแถวส่วนหัว บวกกับเอาต์พุตสถานะตามช่วงเวลา
แต่ละแถวในเอาต์พุตสถานะจะแสดงวันที่และเวลาปัจจุบัน กี่วินาที pt-
Archiver ทำงานอยู่ และมีการเก็บถาวรกี่แถว

หากคุณระบุ "--สถิติ" "pt-archiver" จะแสดงเวลาและข้อมูลอื่นๆ เพื่อช่วย
คุณระบุได้ว่ากระบวนการเก็บถาวรส่วนใดของคุณใช้เวลามากที่สุด

การจัดการข้อผิดพลาด


pt-archiver พยายามจับสัญญาณและออกอย่างสง่างาม เช่น ถ้าคุณส่งมัน
SIGTERM (Ctrl-C บนระบบ UNIX-ish) จะจับสัญญาณ พิมพ์ข้อความเกี่ยวกับ
สัญญาณและออกค่อนข้างปกติ จะไม่ดำเนินการ "--วิเคราะห์" หรือ "--เพิ่มประสิทธิภาพ"
เพราะอาจใช้เวลานานกว่าจะเสร็จ มันจะเรียกใช้รหัสอื่น ๆ ทั้งหมดตามปกติ
รวมทั้งโทร หลังจบ() บนปลั๊กอินใด ๆ (ดู "การขยาย")

กล่าวอีกนัยหนึ่งสัญญาณหากจับได้จะแยกออกจากลูปการเก็บข้อมูลหลักและข้าม
เพิ่มประสิทธิภาพ/วิเคราะห์

OPTIONS


ระบุ "--dest", "--file" หรือ "--purge" อย่างน้อยหนึ่งรายการ

"--ignore" และ "--replace" เป็นคนละเรื่องกัน

"--txn-size" และ "--commit-each" จะไม่เกิดร่วมกัน

"--low-priority-insert" และ "--delayed-insert" จะไม่เกิดร่วมกัน

"--share-lock" และ "-for-update" จะไม่เกิดร่วมกัน

"--analyze" และ "--optimize" จะไม่เกิดร่วมกัน

"--no-ascend" และ "--no-delete" จะไม่เกิดร่วมกัน

ค่า DSN ใน "--dest" ค่าเริ่มต้นเป็นค่าจาก "--source" หาก COPY คือใช่

--วิเคราะห์
ประเภท: string

เรียกใช้ ANALYZE TABLE หลังจากนั้นใน "--source" และ/หรือ "--dest"

เรียกใช้ ANALYZE TABLE หลังจากเสร็จสิ้น อาร์กิวเมนต์เป็นสตริงโดยพลการ ถ้ามัน
ประกอบด้วยตัวอักษร 's' แหล่งที่มาจะได้รับการวิเคราะห์ หากมี 'd' แสดงว่า
ปลายทางจะถูกวิเคราะห์ คุณสามารถระบุอย่างใดอย่างหนึ่งหรือทั้งสองอย่าง ตัวอย่างเช่น
ต่อไปนี้จะวิเคราะห์ทั้งสอง:

--วิเคราะห์=ds

ดูhttp://dev.mysql.com/doc/en/analyze-table.html> สำหรับรายละเอียดเกี่ยวกับ ANALYZE TABLE

--ขึ้นก่อน
ขึ้นเฉพาะคอลัมน์แรกของดัชนี

หากคุณต้องการใช้การปรับดัชนีจากน้อยไปมาก (ดู "--ไม่ขึ้น") แต่อย่า
ต้องการเสียค่าใช้จ่ายในการขึ้นดัชนีหลายคอลัมน์ขนาดใหญ่ คุณสามารถใช้สิ่งนี้
ตัวเลือกที่จะบอกให้ pt-archiver ขึ้นเฉพาะคอลัมน์ซ้ายสุดของดัชนี นี้สามารถ
ให้ประสิทธิภาพที่เพิ่มขึ้นอย่างมีนัยสำคัญมากกว่าการไม่ขึ้นดัชนีเลยในขณะที่
หลีกเลี่ยงค่าใช้จ่ายในการขึ้นดัชนีทั้งหมด

ดู "การขยาย" สำหรับการสนทนาว่าสิ่งนี้โต้ตอบกับปลั๊กอินอย่างไร

--ขอผ่าน
ถามรหัสผ่านเมื่อเชื่อมต่อกับ MySQL

--กันชน
บัฟเฟอร์ส่งออกไปที่ "--file" และล้างเมื่อส่ง

ปิดใช้งานการล้างอัตโนมัติไปที่ "--file" และล้าง "--file" ไปยังดิสก์เฉพาะเมื่อมีการทำธุรกรรม
กระทำ โดยทั่วไปหมายความว่าไฟล์ถูกบล็อกโดยระบบปฏิบัติการ ดังนั้น
อาจมีการฟลัชโดยนัยไปยังดิสก์ระหว่างการคอมมิตเช่นกัน ค่าเริ่มต้นคือto
ล้าง "--file" ไปยังดิสก์หลังทุกแถว

อันตรายคือความผิดพลาดอาจทำให้ข้อมูลสูญหายได้

ประสิทธิภาพที่เพิ่มขึ้นที่ฉันได้เห็นจากการใช้ "--บัฟเฟอร์" อยู่ที่ประมาณ 5 ถึง 15 เปอร์เซ็นต์
ไมล์สะสมของคุณอาจแตกต่างกันไป

--bulk-ลบ
ลบแต่ละส่วนด้วยคำสั่งเดียว (หมายถึง "--commit-each")

ลบแต่ละแถวเป็นกลุ่มด้วยคำสั่ง "DELETE" เดียว ถ้อยแถลง
ลบทุกแถวระหว่างแถวแรกและแถวสุดท้ายของกลุ่ม แปลว่า
"--commit-each" เนื่องจากจะเป็นความคิดที่ดีที่จะ "INSERT" ทีละแถวและ
ส่งพวกเขาก่อนกลุ่ม "DELETE"

วิธีปกติคือการลบทุกแถวด้วยคีย์หลัก การลบจำนวนมากอาจเป็น
เร็วกว่ามาก พวกเขา ด้วย อาจ ไม่ be เร็วขึ้น หากคุณมีประโยค "WHERE" ที่ซับซ้อน

ตัวเลือกนี้จะชะลอการประมวลผล "DELETE" ทั้งหมดจนกว่าแถวจะเป็น
เสร็จ. หากคุณมีปลั๊กอินที่ต้นทาง วิธี "before_delete" จะไม่เป็น
เรียกว่า. แต่จะเรียกเมธอด "before_bulk_delete" ในภายหลังแทน

คำเตือน: หากคุณมีปลั๊กอินบนแหล่งที่มาที่บางครั้งไม่คืนค่าจริงจาก
"is_archivable()" คุณควรใช้ตัวเลือกนี้เฉพาะเมื่อคุณเข้าใจว่ามันทำอะไร ถ้า
ปลั๊กอินสั่ง "pt-archiver" ไม่ให้เก็บถาวรแถว มันจะถูกลบโดย
ลบจำนวนมาก!

--[ไม่]กลุ่ม-ลบ-จำกัด
ค่าเริ่มต้น: ใช่

เพิ่มคำสั่ง "--limit" ถึง "--bulk-delete"

นี่เป็นตัวเลือกขั้นสูงและคุณไม่ควรปิดการใช้งานเว้นแต่คุณจะรู้ว่าคุณเป็นอะไร
ทำและทำไม! โดยค่าเริ่มต้น "--bulk-delete" จะต่อท้ายประโยค "--limit" ต่อกลุ่ม
ลบคำสั่ง SQL ในบางกรณี วรรคนี้สามารถละเว้นได้โดยการระบุ
"--ไม่จำกัดจำนวน-ลบ-จำกัด" ยังต้องระบุ "--limit"

--bulk-แทรก
แทรกแต่ละอันด้วย LOAD DATA INFILE (หมายถึง "--bulk-delete" "--commit-each")

แทรกแต่ละแถวด้วย "LOAD DATA LOCAL INFILE" อาจจะเร็วกว่า
แทรกทีละแถวด้วยคำสั่ง "INSERT" มันถูกนำไปใช้โดยการสร้าง a
ไฟล์ชั่วคราวสำหรับแต่ละแถวของแถว และเขียนแถวไปยังไฟล์นี้แทน
แทรกพวกเขา เมื่อกลุ่มเสร็จสิ้น มันจะอัปโหลดแถว

เพื่อปกป้องความปลอดภัยของข้อมูลของคุณ ตัวเลือกนี้บังคับให้ใช้การลบจำนวนมาก มัน
จะไม่ปลอดภัยที่จะลบแต่ละแถวตามที่พบก่อนที่จะแทรกแถวลงใน
ปลายทางก่อน การบังคับให้ลบจำนวนมากรับประกันว่าการลบจะรอจนกว่า
แทรกได้สำเร็จ

ตัวเลือก "--low-priority-insert", "--replace" และ "--ignore" ใช้งานได้กับสิ่งนี้
ตัวเลือก แต่ "--delayed-insert" ไม่ทำ

หาก "LOAD DATA LOCAL INFILE" แสดงข้อผิดพลาดในบรรทัดของ "The used command is not
อนุญาตในเวอร์ชัน MySQL นี้" โปรดดูเอกสารประกอบสำหรับตัวเลือก "L" DSN

--ชุดอักขระ
แบบสั้น: -A; ประเภท: string

ชุดอักขระเริ่มต้น หากค่าเป็น utf8 ให้ตั้งค่า binmode ของ Perl บน STDOUT เป็น utf8
ส่งผ่านตัวเลือก mysql_enable_utf8 ไปยัง DBD::mysql และรัน SET NAMES UTF8 หลังจากนั้น
เชื่อมต่อกับ MySQL ค่าอื่น ๆ ตั้งค่า binmode บน STDOUT โดยไม่มีเลเยอร์ utf8
และรัน SET NAMES หลังจากเชื่อมต่อกับ MySQL

โปรดทราบว่าเฉพาะชุดอักขระที่รู้จักโดย MySQL เท่านั้นที่รู้จัก ตัวอย่างเช่น "UTF8" will
ใช้งานได้ แต่ "UTF-8" จะไม่ทำงาน

ดูเพิ่มเติมที่ "--[no]check-charset"

--[ไม่]ตรวจสอบชุดอักขระ
ค่าเริ่มต้น: ใช่

ตรวจสอบให้แน่ใจว่าชุดอักขระการเชื่อมต่อและตารางเหมือนกัน ปิดการใช้งานการตรวจสอบนี้อาจ
ทำให้ข้อความถูกแปลงจากชุดอักขระหนึ่งไปเป็นอักขระอื่นอย่างไม่ถูกต้อง (โดยปกติจาก
utf8 เป็น latin1) ซึ่งอาจทำให้ข้อมูลสูญหายหรือ mojibake การปิดใช้งานการตรวจสอบนี้อาจเป็น
มีประโยชน์หรือจำเป็นเมื่อต้องการแปลงชุดอักขระ

--[ไม่]ตรวจสอบคอลัมน์
ค่าเริ่มต้น: ใช่

ตรวจสอบให้แน่ใจว่า "--source" และ "--dest" มีคอลัมน์เดียวกัน

เปิดใช้งานโดยค่าเริ่มต้น ทำให้ pt-archiver ตรวจสอบว่าตารางต้นทางและปลายทาง
มีคอลัมน์เดียวกัน ไม่ตรวจสอบลำดับคอลัมน์ ชนิดข้อมูล ฯลฯ เพียง
ตรวจสอบว่าคอลัมน์ทั้งหมดในต้นทางมีอยู่ในปลายทางและในทางกลับกัน ถ้า
มีความแตกต่างใด ๆ pt-archiver จะออกโดยมีข้อผิดพลาด

หากต้องการปิดใช้งานการตรวจสอบนี้ ให้ระบุ --no-check-columns

--check-ช่วงเวลา
ประเภท: เวลา; ค่าเริ่มต้น: 1s

หากได้รับ "--check-slave-lag" สิ่งนี้จะกำหนดระยะเวลาที่เครื่องมือจะหยุดแต่ละอัน
เวลาที่พบว่าทาสกำลังล้าหลัง
การตรวจสอบนี้ดำเนินการทุกๆ 100 แถว

--check-ทาส-ล่าช้า
ชนิด: สตริง; ทำซ้ำได้: ใช่

หยุดการเก็บชั่วคราวจนกว่าสเลฟแล็กของ DSN ที่ระบุจะน้อยกว่า "--max-lag" นี้
สามารถระบุตัวเลือกได้หลายครั้งสำหรับการตรวจสอบมากกว่าหนึ่งทาส

--คอลัมน์
แบบสั้น: -c; ประเภท: array

รายการคอลัมน์ที่คั่นด้วยเครื่องหมายจุลภาคที่จะเก็บถาวร

ระบุรายการคอลัมน์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อดึงข้อมูล เขียนลงในไฟล์ และแทรกลงใน
ตารางปลายทาง หากระบุไว้ pt-archiver จะละเว้นคอลัมน์อื่นๆ เว้นแต่ว่า
จำเป็นต้องเพิ่มลงในคำสั่ง "SELECT" เพื่อขึ้นดัชนีหรือลบแถว
มันดึงและใช้คอลัมน์พิเศษเหล่านี้ภายใน แต่ไม่ได้เขียนลงใน
ไฟล์หรือไปยังตารางปลายทาง มัน ทำ ส่งต่อไปยังปลั๊กอิน

ดูเพิ่มเติมที่ "--primary-key-only"

--commit-แต่ละ
คอมมิตแต่ละชุดของแถวที่ดึงและเก็บถาวร (ปิดใช้งาน "--txn-size")

ทำธุรกรรมและล้าง "--file" หลังจากเก็บถาวรแต่ละชุดแล้ว
ก่อนดึงชุดแถวถัดไป และก่อนนอนหากระบุ "--sleep"
ปิดการใช้งาน "--txn-size"; ใช้ "--limit" เพื่อควบคุมขนาดรายการด้วย
"--กระทำ-แต่ละ".

ตัวเลือกนี้มีประโยชน์เป็นทางลัดในการทำให้ "--limit" และ "--txn-size" เป็นค่าเดียวกัน
แต่ที่สำคัญกว่านั้นคือหลีกเลี่ยงการทำธุรกรรมที่ถูกระงับในขณะที่ค้นหาเพิ่มเติม
แถว ตัวอย่างเช่น สมมติว่าคุณกำลังเก็บถาวรแถวเก่าตั้งแต่เริ่มต้น a very
ตารางขนาดใหญ่ที่มี "--limit" 1000 และ "--txn-size" 1000 หลังจากค้นหาระยะหนึ่ง
และการเก็บถาวร 1000 แถวในแต่ละครั้ง pt-archiver จะค้นหา 999 แถวและไฟล์เก็บถาวรล่าสุด
จากนั้นดำเนินการ SELECT ถัดไปเพื่อค้นหาแถวเพิ่มเติม สิ่งนี้จะสแกนส่วนที่เหลือของ
ตาราง แต่ไม่พบแถวใด ๆ อีกต่อไป ได้เปิดธุรกรรมไว้นานมาก
เวลาเท่านั้นที่จะตัดสินว่ามันเสร็จสิ้นอยู่แล้ว คุณสามารถใช้ "--commit-each" เพื่อหลีกเลี่ยง
นี้.

--การกำหนดค่า
ชนิด: Array

อ่านรายการไฟล์ปรับแต่งที่คั่นด้วยเครื่องหมายจุลภาค ถ้าระบุ ต้องนี่ก่อน
ตัวเลือกบนบรรทัดคำสั่ง

--ฐานข้อมูล
แบบสั้น: -D; ประเภท: string

เชื่อมต่อกับฐานข้อมูลนี้

--ล่าช้า-แทรก
เพิ่มตัวแก้ไข DELAYED ในคำสั่ง INSERT

เพิ่มตัวแก้ไข DELAYED ให้กับคำสั่ง INSERT หรือ REPLACE ดู
<http://dev.mysql.com/doc/en/insert.html> เพื่อดูรายละเอียด

--ปลายทาง
ชนิด: DSN

DSN ระบุตารางที่จะเก็บถาวร

รายการนี้ระบุตารางที่ pt-archiver จะแทรกแถวที่เก็บถาวรจาก
"--แหล่งที่มา". ใช้รูปแบบอาร์กิวเมนต์ key=val เดียวกันกับ "--source" หายไปมากที่สุด
ค่าดีฟอลต์เป็นค่าเดียวกับ "--source" ดังนั้นคุณจึงไม่ต้องทำซ้ำตัวเลือก
ที่เหมือนกันใน "--source" และ "--dest" ใช้ตัวเลือก "--help" เพื่อดูว่า
ค่าจะถูกคัดลอกจาก "--source"

คำเตือน: การใช้ไฟล์ตัวเลือกเริ่มต้น (F) ตัวเลือก DSN ที่กำหนดซ็อกเก็ตสำหรับ
"--source" ทำให้ pt-archiver เชื่อมต่อกับ "--dest" โดยใช้ซ็อกเก็ตนั้นเว้นแต่เป็นอย่างอื่น
ซ็อกเก็ตสำหรับ "--dest" ถูกระบุ ซึ่งหมายความว่า pt-archiver อาจเชื่อมต่อไม่ถูกต้อง
เป็น "--source" เมื่อเชื่อมต่อกับ "--dest" ตัวอย่างเช่น:

--แหล่งที่มา F=host1.cnf,D=db,t=tbl --dest h=host2

เมื่อ pt-archiver เชื่อมต่อกับ "--dest", host2 มันจะเชื่อมต่อผ่าน "--source"
host1, ซ็อกเก็ตที่กำหนดไว้ใน host1.cnf

--ดรายรัน
พิมพ์คำค้นหาและออกโดยไม่ทำอะไรเลย

ทำให้ pt-archiver ออกหลังจากพิมพ์ชื่อไฟล์และคำสั่ง SQL ที่จะใช้

--ไฟล์
ประเภท: string

ไฟล์ที่จะเก็บถาวรกับ รูปแบบวันที่()-เหมือนการจัดรูปแบบ

ชื่อไฟล์ที่จะเขียนแถวที่เก็บถาวร เซตย่อยของ MySQL's รูปแบบวันที่() การจัดรูปแบบ
อนุญาตให้ใช้รหัสในชื่อไฟล์ดังนี้:

%d วันของเดือน ตัวเลข (01..31)
%H ชั่วโมง (00..23)
%i นาที ตัวเลข (00..59)
%m เดือน ตัวเลข (01..12)
%s วินาที (00..59)
%Y ปี ตัวเลข สี่หลัก

คุณสามารถใช้โค้ดรูปแบบพิเศษต่อไปนี้ได้เช่นกัน:

%D ชื่อฐานข้อมูล
%t ชื่อตาราง

ตัวอย่าง:

--file '/var/log/archive/%Y-%m-%d-%D.%t'

เนื้อหาของไฟล์อยู่ในรูปแบบเดียวกับที่ใช้โดย SELECT INTO OUTFILE ตามที่บันทึกไว้
ในคู่มือ MySQL: แถวที่สิ้นสุดด้วยการขึ้นบรรทัดใหม่ คอลัมน์ที่สิ้นสุดด้วยแท็บ NULL
อักขระถูกแทนด้วย \N และอักขระพิเศษหนีโดย \ นี้ช่วยให้
คุณโหลดไฟล์ใหม่ด้วยการตั้งค่าเริ่มต้นของ LOAD DATA INFILE

หากคุณต้องการให้ส่วนหัวของคอลัมน์อยู่ที่ด้านบนของไฟล์ โปรดดู "--ส่วนหัว" ไฟล์เป็นแบบอัตโนมัติ-
ล้างโดยค่าเริ่มต้น; ดู "--บัฟเฟอร์"

--สำหรับการปรับปรุง
เพิ่มตัวแก้ไข FOR UPDATE ให้กับคำสั่ง SELECT

ดูรายละเอียดได้ที่http://dev.mysql.com/doc/en/innodb-locking-reads.html>.

--หัวข้อ
พิมพ์ส่วนหัวของคอลัมน์ที่ด้านบนของ "--file"

เขียนชื่อคอลัมน์เป็นบรรทัดแรกในไฟล์ที่กำหนดโดย "--file" ถ้าไฟล์
มีอยู่ไม่เขียนส่วนหัว สิ่งนี้ทำให้ไฟล์สามารถโหลดได้ด้วย LOAD DATA INFILE ใน
กรณีที่คุณผนวกเอาท์พุตเพิ่มเติมเข้าไป

--ช่วยด้วย
แสดงความช่วยเหลือและออก

--ลำดับความสำคัญสูง-select
เพิ่มตัวแก้ไข HIGH_PRIORITY ให้กับคำสั่ง SELECT

ดูhttp://dev.mysql.com/doc/en/select.html> เพื่อดูรายละเอียด

--เจ้าภาพ
แบบสั้น: -h; ประเภท: string

เชื่อมต่อกับโฮสต์

--ไม่สนใจ
ใช้ IGNORE สำหรับคำสั่ง INSERT

ทำให้ INSERTs เป็น "--dest" เป็น INSERT IGNORE

--จำกัด
ชนิด: int; ค่าเริ่มต้น: 1

จำนวนแถวที่จะดึงและเก็บถาวรต่อคำสั่ง

จำกัดจำนวนแถวที่ส่งคืนโดยคำสั่ง SELECT ที่ดึงแถวไปที่
คลังเก็บเอกสารสำคัญ. ค่าเริ่มต้นคือหนึ่งแถว การเพิ่มขีดจำกัดอาจมีประสิทธิภาพมากกว่า แต่be
ระวังถ้าคุณกำลังเก็บถาวรแบบกระจัดกระจาย ข้ามไปหลายแถว สิ่งนี้อาจเป็นไปได้
ทำให้เกิดความขัดแย้งมากขึ้นกับแบบสอบถามอื่น ๆ ขึ้นอยู่กับเอ็นจิ้นการจัดเก็บ ธุรกรรม
ระดับการแยก และตัวเลือกเช่น "--for-update"

--ท้องถิ่น
อย่าเขียนข้อความค้นหา OPTIMIZE หรือ ANALYZE ลงใน binlog

เพิ่มตัวแก้ไข NO_WRITE_TO_BINLOG ในการสืบค้น ANALYZE และ OPTIMIZE ดู "-วิเคราะห์"
เพื่อดูรายละเอียด

--low-priority-ลบ
เพิ่มตัวแก้ไข LOW_PRIORITY ให้กับคำสั่ง DELETE

ดูhttp://dev.mysql.com/doc/en/delete.html> เพื่อดูรายละเอียด

--แทรกลำดับความสำคัญต่ำ
เพิ่มตัวแก้ไข LOW_PRIORITY ให้กับคำสั่ง INSERT หรือ REPLACE

ดูhttp://dev.mysql.com/doc/en/insert.html> เพื่อดูรายละเอียด

--max-flow-ctl
ประเภท: float

ค่อนข้างคล้ายกับ --max-lag แต่สำหรับคลัสเตอร์ PXC ตรวจสอบกลุ่มเวลาเฉลี่ยที่ใช้ไป
หยุดชั่วคราวสำหรับ Flow Control และทำให้เครื่องมือหยุดชั่วคราวหากเกินเปอร์เซ็นต์ที่ระบุ
ในตัวเลือก ค่าเริ่มต้นคือไม่มีการตรวจสอบ Flow Control ตัวเลือกนี้ใช้ได้กับ PXC
เวอร์ชัน 5.6 หรือสูงกว่า

--max-ล่าช้า
ประเภท: เวลา; ค่าเริ่มต้น: 1s

หยุดการเก็บชั่วคราวหากทาสที่ได้รับจาก "--check-slave-lag" ล่าช้า

ตัวเลือกนี้ทำให้ pt-archiver ดูทาสทุกครั้งที่กำลังจะดึงข้อมูล
แถวอื่น หากความล่าช้าของสเลฟมากกว่าค่าของออปชั่น หรือถ้าสเลฟ
ไม่ทำงาน (ดังนั้นความล่าช้าของมันคือ NULL), pt-table-checksum sleeps สำหรับ "--check-interval"
วินาทีแล้วดูแล็กอีกครั้ง ซ้ำแล้วซ้ำเล่าจนทาสถูกจับได้
จากนั้นดำเนินการดึงและเก็บถาวรแถว

ตัวเลือกนี้อาจไม่จำเป็นต้องใช้ "--sleep" หรือ "--sleep-coef"

--ไม่ขึ้น
อย่าใช้การเพิ่มประสิทธิภาพดัชนีจากน้อยไปมาก

การเพิ่มประสิทธิภาพดัชนีจากน้อยไปมากเริ่มต้นทำให้ "pt-archiver" เพิ่มประสิทธิภาพซ้ำแล้วซ้ำอีก
คำสั่ง "SELECT" เพื่อให้ค้นหาในดัชนีที่การสืบค้นก่อนหน้าสิ้นสุด จากนั้น scan
พร้อมๆ กัน แทนที่จะสแกนตั้งแต่ต้นตารางทุกครั้ง นี่คือ
เปิดใช้งานโดยค่าเริ่มต้น เนื่องจากเป็นกลยุทธ์ที่ดีสำหรับการเข้าถึงซ้ำๆ

ดัชนีหลายคอลัมน์ขนาดใหญ่อาจทำให้ส่วนคำสั่ง WHERE ซับซ้อนเพียงพอที่
สิ่งนี้อาจมีประสิทธิภาพน้อยกว่าจริง ลองพิจารณาตัวอย่างคีย์หลักสี่คอลัมน์
บน (a, b, c, d). ส่วนคำสั่ง WHERE เพื่อเริ่มต้นเมื่อการสืบค้นล่าสุดสิ้นสุดลงมีดังนี้:

ที่ไหน (a > ?)
หรือ (a = ? และ b > ?)
หรือ (a = ? และ b = ? และ c > ?)
หรือ (a = ? และ b = ? และ c = ? และ d >= ?)

การเติมพื้นที่ที่สำรองไว้ด้วยค่าจะใช้หน่วยความจำและ CPU เพิ่มการรับส่งข้อมูลเครือข่ายและ
แยกวิเคราะห์ค่าใช้จ่าย และอาจทำให้การสืบค้น MySQL เพิ่มประสิทธิภาพได้ยากขึ้น สี่คอลัมน์
คีย์ไม่ใช่เรื่องใหญ่ แต่เป็นคีย์สิบคอลัมน์ที่ทุกคอลัมน์อนุญาตให้ "NULL" อาจ
เป็น

การเพิ่มดัชนีอาจไม่จำเป็นหากคุณรู้ว่าคุณเพียงแค่ลบ rows
จากต้นตารางเป็นชิ้นๆแต่ไม่ทิ้งรูใดๆ จึงเริ่มที่
การเริ่มต้นของตารางเป็นสิ่งที่มีประสิทธิภาพมากที่สุด

ดูเพิ่มเติมที่ "--ขึ้นก่อน" ดู "การขยาย" สำหรับการสนทนาว่าสิ่งนี้มีปฏิสัมพันธ์อย่างไร
ด้วยปลั๊กอิน

--no-ลบ
อย่าลบแถวที่เก็บถาวร

ทำให้ "pt-archiver" ไม่ลบแถวหลังจากประมวลผล สิ่งนี้ไม่อนุญาต
"--no-ascend" เพราะการเปิดใช้งานทั้งสองจะทำให้เกิดการวนซ้ำไม่สิ้นสุด

หากมีปลั๊กอินบน DSN ต้นทาง จะเรียกเมธอด "before_delete"
แม้ว่า "pt-archiver" จะไม่ดำเนินการลบ ดู "การขยาย" สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ
ปลั๊กอิน

--เพิ่มประสิทธิภาพ
ประเภท: string

เรียกใช้ OPTIMIZE TABLE หลังจากนั้นใน "--source" และ/หรือ "--dest"

เรียกใช้ OPTIMIZE TABLE หลังจากเสร็จสิ้น ดู "--วิเคราะห์" สำหรับไวยากรณ์ตัวเลือกและ
<http://dev.mysql.com/doc/en/optimize-table.html> สำหรับรายละเอียดเกี่ยวกับ OPTIMIZE TABLE

--รหัสผ่าน
แบบสั้น: -p; ประเภท: string

รหัสผ่านเพื่อใช้ในการเชื่อมต่อ หากรหัสผ่านมีเครื่องหมายจุลภาค จะต้องหลีกเลี่ยง
ด้วยแบ็กสแลช: "exam\,ple"

--ปิด
ประเภท: string

สร้างไฟล์ PID ที่กำหนด เครื่องมือจะไม่เริ่มทำงานหากมีไฟล์ PID อยู่แล้วและ
PID ที่มีอยู่ในนั้นแตกต่างจาก PID ปัจจุบัน อย่างไรก็ตาม หากไฟล์ PID
มีอยู่และ PID ที่มีอยู่ไม่ทำงานอีกต่อไป เครื่องมือจะเขียนทับ PID
ไฟล์ที่มี PID ปัจจุบัน ไฟล์ PID จะถูกลบออกโดยอัตโนมัติเมื่อเครื่องมือออก

--เสียบเข้าไป
ประเภท: string

ชื่อโมดูล Perl เพื่อใช้เป็นปลั๊กอินทั่วไป

ระบุชื่อโมดูล Perl ของปลั๊กอินเอนกประสงค์ ปัจจุบันใช้เท่านั้น
สำหรับสถิติ (ดู "--สถิติ") และต้องมีเมธอด "new()" และ "statistics()"

เมธอด "new( src =" $src, dst => $dst, opts => $o )> รับแหล่งที่มาและ
DSN ปลายทางและการเชื่อมต่อฐานข้อมูล เช่นเดียวกับการเชื่อมต่อเฉพาะ
ปลั๊กอินทำ นอกจากนี้ยังได้รับอ็อบเจ็กต์ OptionParser ($o) สำหรับการเข้าถึง command-line
ตัวเลือก (ตัวอย่าง: "$o-"get('purge');>)

เมธอด "statistics(\%stats, $time)" รับแฮชรีฟของสถิติที่รวบรวมโดย
งานเก็บถาวร และเวลาเริ่มงานทั้งหมด

--ท่า
แบบสั้น: -P; ประเภท: int

หมายเลขพอร์ตที่ใช้เชื่อมต่อ

--คีย์หลักเท่านั้น
คอลัมน์คีย์หลักเท่านั้น

ทางลัดสำหรับระบุ "--คอลัมน์" ด้วยคอลัมน์คีย์หลัก นี่คือ
ประสิทธิภาพหากคุณต้องการล้างแถว มันหลีกเลี่ยงการดึงทั้งแถวเมื่อ
เฉพาะคอลัมน์คีย์หลักที่จำเป็นสำหรับคำสั่ง "DELETE" ดูเพิ่มเติมที่ "--ล้าง"

--ความคืบหน้า
ประเภท: int

พิมพ์ข้อมูลความคืบหน้าทุก X แถว

พิมพ์เวลาปัจจุบัน เวลาที่ผ่านไป และแถวที่เก็บถาวรทุก X แถว

--ล้าง
ล้างข้อมูลแทนการเก็บถาวร อนุญาตให้ละเว้น "--file" และ "--dest"

อนุญาตให้เก็บถาวรโดยไม่มีอาร์กิวเมนต์ "--file" หรือ "--dest" ซึ่งเป็นการลบล้างอย่างมีประสิทธิภาพ
เนื่องจากแถวนั้นเพิ่งถูกลบไป

หากคุณต้องการล้างแถว ให้พิจารณาระบุคอลัมน์คีย์หลักของตาราง
ด้วย "--primary-key-only" ซึ่งจะป้องกันการดึงข้อมูลคอลัมน์ทั้งหมดจากเซิร์ฟเวอร์สำหรับ
ไม่มีเหตุผล.

--ด่วน-ลบ
เพิ่มตัวแก้ไข QUICK ไปยังคำสั่ง DELETE

ดูhttp://dev.mysql.com/doc/en/delete.html> เพื่อดูรายละเอียด ตามที่ระบุไว้ใน
เอกสารประกอบ ในบางกรณีอาจเร็วกว่าหากใช้ DELETE QUICK ตามด้วย OPTIMIZE
ตาราง. คุณสามารถใช้ "--optimize" สำหรับสิ่งนี้

--เงียบ
แบบสั้น: -q

ห้ามพิมพ์ผลลัพธ์ใดๆ เช่น สำหรับ "--statistics"

ระงับเอาต์พุตปกติ รวมถึงเอาต์พุตของ "--statistics" แต่ไม่ระงับ
ผลลัพธ์จาก "--ทำไม-เลิก"

--แทนที่
ทำให้ INSERTs เป็น "--dest" ถูกเขียนเป็น REPLACE

--ลองใหม่
ชนิด: int; ค่าเริ่มต้น: 1

จำนวนครั้งในการลองใหม่ต่อการหมดเวลาหรือการชะงักงัน

ระบุจำนวนครั้งที่ pt-archiver ควรลองอีกครั้งเมื่อมี InnoDB lock
รอหมดเวลาหรือการหยุดชะงัก เมื่อการลองใหม่หมดลง pt-archiver จะออกด้วย an
ความผิดพลาด

พิจารณาอย่างรอบคอบว่าคุณต้องการเกิดอะไรขึ้นเมื่อคุณกำลังเก็บถาวรระหว่างส่วนผสมของ
เอ็นจิ้นการจัดเก็บข้อมูลเชิงธุรกรรมและไม่ใช่ธุรกรรม INSERT เป็น "--dest" และ
DELETE จาก "--source" อยู่ในการเชื่อมต่อที่แยกจากกัน จึงไม่จริง
เข้าร่วมในธุรกรรมเดียวกันแม้ว่าจะอยู่บนเซิร์ฟเวอร์เดียวกันก็ตาม อย่างไรก็ตาม พ-
Archiver ใช้ธุรกรรมแบบกระจายอย่างง่ายในโค้ด ดังนั้นคอมมิตและย้อนกลับ
ควรเกิดขึ้นตามที่ต้องการในการเชื่อมต่อทั้งสอง

ในตอนนี้ ฉันยังไม่ได้เขียนโค้ดใดๆ เพื่อจัดการกับข้อผิดพลาดเกี่ยวกับการจัดเก็บธุรกรรม
เครื่องยนต์อื่นที่ไม่ใช่ InnoDB ขอคุณสมบัตินั้นหากคุณต้องการ

--รันไทม์
ประเภท: เวลา

ได้เวลาวิ่งก่อนออก

คำต่อท้ายที่เลือกได้ s=seconds, m=minutes, h=hours, d=days; หากไม่มีคำต่อท้าย s จะถูกใช้

--[ไม่]ปลอดภัย-เพิ่มอัตโนมัติ
ค่าเริ่มต้น: ใช่

อย่าเก็บถาวรแถวที่มี AUTO_INCREMENT สูงสุด

เพิ่มส่วนคำสั่ง WHERE พิเศษเพื่อป้องกันไม่ให้ pt-archiver ลบแถวใหม่ล่าสุดเมื่อ
ขึ้นจากคีย์ AUTO_INCREMENT คอลัมน์เดียว ป้องกันการใช้ซ้ำ
ค่า AUTO_INCREMENT หากเซิร์ฟเวอร์รีสตาร์ท และเปิดใช้งานโดยค่าเริ่มต้น

ส่วนคำสั่ง WHERE พิเศษมีค่าสูงสุดของคอลัมน์การเพิ่มอัตโนมัติ ณ
จุดเริ่มต้นของงานเก็บถาวรหรือล้างข้อมูล หากมีการแทรกแถวใหม่ในขณะที่ pt-archiver
กำลังวิ่งอยู่ก็จะไม่เห็นพวกเขา

--แมวมอง
ชนิด: สตริง; ค่าเริ่มต้น: /tmp/pt-archiver-sentinel

ออกหากมีไฟล์นี้อยู่

การมีอยู่ของไฟล์ที่ระบุโดย "--sentinel" จะทำให้ pt-archiver หยุดทำงาน
การเก็บถาวรและออก ค่าเริ่มต้นคือ /tmp/pt-archiver-sentinel คุณอาจพบสิ่งนี้
สะดวกในการหยุดงาน cron อย่างสวยงามหากจำเป็น ดูเพิ่มเติมที่ "--หยุด"

--set-vars
ชนิด: Array

ตั้งค่าตัวแปร MySQL ในรายการคู่ "variable=value" ที่คั่นด้วยเครื่องหมายจุลภาค

โดยค่าเริ่มต้น เครื่องมือจะตั้งค่า:

wait_timeout=10000

ตัวแปรที่ระบุในบรรทัดคำสั่งจะแทนที่ค่าเริ่มต้นเหล่านี้ ตัวอย่างเช่น,
การระบุ "--set-vars wait_timeout=500" จะแทนที่ค่าเริ่มต้นที่ 10000

เครื่องมือจะพิมพ์คำเตือนและดำเนินการต่อหากไม่สามารถตั้งค่าตัวแปรได้

--share-ล็อค
เพิ่มตัวแก้ไข LOCK IN SHARE MODE ให้กับคำสั่ง SELECT

ดูhttp://dev.mysql.com/doc/en/innodb-locking-reads.html>.

--ข้ามการตรวจสอบคีย์ต่างประเทศ
ปิดใช้งานการตรวจสอบคีย์ต่างประเทศด้วย SET FOREIGN_KEY_CHECKS=0

--นอน
ประเภท: int

เวลาพักระหว่างการดึงข้อมูล

ระบุระยะเวลาพักระหว่างคำสั่ง SELECT ค่าเริ่มต้นคือไม่นอนที่
ทั้งหมด. ธุรกรรมไม่ได้ถูกคอมมิต และไฟล์ "--file" จะไม่ถูกล้างก่อน
นอนหลับ. ดู "--txn-size" เพื่อควบคุมสิ่งนั้น

หากระบุ "--commit-each" การคอมมิตและการล้างข้อมูลจะเกิดขึ้นก่อนนอน

--sleep-coef
ประเภท: float

คำนวณ "--สลีป" เป็นผลคูณของเวลา SELECT ล่าสุด

หากระบุตัวเลือกนี้ pt-archiver จะเข้าสู่โหมดสลีปสำหรับเวลาสืบค้นของ Last
SELECT คูณด้วยสัมประสิทธิ์ที่ระบุ

นี่เป็นวิธีที่ซับซ้อนกว่าเล็กน้อยในการควบคุม SELECT: การนอนหลับที่แตกต่างกัน
ระยะเวลาระหว่าง SELECT แต่ละรายการ ขึ้นอยู่กับระยะเวลาที่ SELECT ใช้เวลานาน

--เบ้า
แบบฟอร์ม; ประเภท: string

ไฟล์ซ็อกเก็ตที่ใช้สำหรับการเชื่อมต่อ

--แหล่งที่มา
ชนิด: DSN

DSN ระบุตารางที่จะเก็บถาวรจาก (จำเป็น) อาร์กิวเมนต์นี้เป็น DSN ดู
"ตัวเลือก DSN" สำหรับไวยากรณ์ ตัวเลือกส่วนใหญ่ควบคุมวิธีที่ pt-archiver เชื่อมต่อกับ MySQL
แต่มีตัวเลือก DSN เพิ่มเติมบางส่วนในไวยากรณ์ของเครื่องมือนี้ ตัว D, t และ i
ตัวเลือก เลือกตารางที่จะเก็บถาวร:

--แหล่งที่มา h=my_server,D=my_database,t=my_tbl

ตัวเลือกระบุฐานข้อมูลที่จะตั้งค่าเป็นค่าเริ่มต้นของการเชื่อมต่อด้วย USE ถ้า
ตัวเลือก b เป็นจริง ปิดใช้งานการบันทึกไบนารีด้วย SQL_LOG_BIN ตัวเลือก m
ระบุการดำเนินการที่เสียบได้ ซึ่งโมดูล Perl ภายนอกสามารถให้ได้ เพียง
ส่วนที่ต้องการคือตาราง ส่วนอื่นๆ อาจอ่านได้จากที่ต่างๆ ใน
สภาพแวดล้อม (เช่นไฟล์ตัวเลือก)

ส่วน 'i' สมควรได้รับการกล่าวถึงเป็นพิเศษ สิ่งนี้บอก pt-archiver ว่าดัชนีใดควร
สแกนเพื่อเก็บถาวร สิ่งนี้ปรากฏในคำใบ้ FORCE INDEX หรือ USE INDEX ใน SELECT
คำสั่งที่ใช้ในการดึงแถวเก็บถาวร หากคุณไม่ระบุอะไรเลย pt-archiver
จะค้นหาดัชนีที่ดีโดยอัตโนมัติ โดยเลือกใช้ "คีย์หลัก" หากมี ในของฉัน
ประสบการณ์นี้มักจะใช้ได้ผลดี ดังนั้นโดยส่วนใหญ่คุณอาจละเว้น
'ฉัน' ส่วนหนึ่ง

ดัชนีใช้เพื่อเพิ่มประสิทธิภาพการเข้าถึงตารางซ้ำๆ pt-archiver จำได้
แถวสุดท้ายที่ดึงมาจากแต่ละคำสั่ง SELECT และใช้เพื่อสร้าง WHERE
ประโยคโดยใช้คอลัมน์ในดัชนีที่ระบุซึ่งควรอนุญาตให้ MySQL เริ่มต้น
ต่อไป SELECT ที่อันสุดท้ายสิ้นสุด แทนที่จะสแกนจาก
จุดเริ่มต้นของตารางด้วย SELECT ที่ต่อเนื่องกัน หากคุณกำลังใช้ภายนอก
ปลั๊กอิน โปรดดูที่ "การขยาย" สำหรับการสนทนาเกี่ยวกับวิธีการโต้ตอบกับจากน้อยไปมาก
ดัชนี

ตัวเลือก 'a' และ 'b' ช่วยให้คุณควบคุมวิธีที่คำสั่งไหลผ่านไบนารี
บันทึก. หากคุณระบุตัวเลือก 'b' การบันทึกไบนารีจะถูกปิดใช้งานในไฟล์ที่ระบุ
การเชื่อมต่อ. หากคุณระบุตัวเลือก 'a' การเชื่อมต่อจะ "ใช้" ตามที่ระบุ
ฐานข้อมูล ซึ่งคุณสามารถใช้เพื่อป้องกันไม่ให้สเลฟรันเหตุการณ์บันทึกไบนารี
ด้วยตัวเลือก "--replicate-ignore-db" สองตัวเลือกนี้ใช้ต่างกันได้
วิธีเพื่อให้บรรลุเป้าหมายเดียวกัน: เก็บข้อมูลจากต้นแบบ แต่ทิ้งไว้บน
ทาส. ตัวอย่างเช่น คุณสามารถเรียกใช้งานล้างบนต้นแบบและป้องกันไม่ให้
เกิดขึ้นกับทาสโดยใช้วิธีการที่คุณเลือก

คำเตือน: การใช้ไฟล์ตัวเลือกเริ่มต้น (F) ตัวเลือก DSN ที่กำหนดซ็อกเก็ตสำหรับ
"--source" ทำให้ pt-archiver เชื่อมต่อกับ "--dest" โดยใช้ซ็อกเก็ตนั้นเว้นแต่เป็นอย่างอื่น
ซ็อกเก็ตสำหรับ "--dest" ถูกระบุ ซึ่งหมายความว่า pt-archiver อาจเชื่อมต่อไม่ถูกต้อง
เป็น "--source" เมื่อมีการเชื่อมต่อกับ "--dest" ตัวอย่างเช่น:

--แหล่งที่มา F=host1.cnf,D=db,t=tbl --dest h=host2

เมื่อ pt-archiver เชื่อมต่อกับ "--dest", host2 มันจะเชื่อมต่อผ่าน "--source"
host1, ซ็อกเก็ตที่กำหนดไว้ใน host1.cnf

--สถิติ
รวบรวมและพิมพ์สถิติเวลา

ทำให้ pt-archiver รวบรวมสถิติเกี่ยวกับเวลาเกี่ยวกับสิ่งที่ทำ สถิติเหล่านี้
ใช้ได้กับปลั๊กอินที่ระบุโดย "--plugin"

เว้นแต่คุณจะระบุ "--เงียบ" "pt-archiver" จะพิมพ์สถิติเมื่อออกจากระบบ NS
สถิติมีลักษณะดังนี้:

Started at 2008-07-18T07:18:53, ended at 2008-07-18T07:18:53
ที่มา: D=db,t=table
เลือก4
ใส่ 4
ลบ4
การดำเนินการ นับเวลา %
กระทำ 10 0.1079 88.27
เลือก 5 0.0047 3.87
กำลังลบ 4 0.0028 2.29
แทรก 4 0.0028 2.28
อื่นๆ 0 0.0040 3.29

สอง (หรือสาม) บรรทัดแรกแสดงเวลาและตารางต้นทางและปลายทาง NS
สามบรรทัดถัดไปแสดงจำนวนแถวที่ดึง แทรก และลบ

บรรทัดที่เหลือแสดงการนับและเวลา คอลัมน์คือการกระทำ ผลรวม
จำนวนครั้งที่จับเวลาการกระทำนั้น เวลาทั้งหมดที่ใช้ และเปอร์เซ็นต์ของ
รันไทม์ทั้งหมดของโปรแกรม แถวจะเรียงตามลำดับเวลาทั้งหมดจากมากไปน้อย NS
แถวสุดท้ายคือเวลาที่เหลือซึ่งไม่ได้ระบุถึงสิ่งใดอย่างชัดเจน การกระทำจะ
แตกต่างกันไปขึ้นอยู่กับตัวเลือกบรรทัดคำสั่ง

หากให้ "--ทำไม-เลิก" พฤติกรรมจะเปลี่ยนไปเล็กน้อย ตัวเลือกนี้ทำให้
พิมพ์เหตุผลในการออกแม้เพียงเพราะไม่มีแถวอีกต่อไป

ตัวเลือกนี้ต้องการโมดูล Time::HiRes มาตรฐาน ซึ่งเป็นส่วนหนึ่งของ Perl on . หลัก
Perl รุ่นใหม่ที่สมเหตุสมผล

--หยุด
หยุดเรียกใช้อินสแตนซ์โดยสร้างไฟล์ Sentinel

ทำให้ pt-archiver สร้างไฟล์ Sentinel ที่ระบุโดย "--sentinel" และออก
สิ่งนี้ควรมีผลในการหยุดอินสแตนซ์ที่ทำงานอยู่ทั้งหมดที่กำลังเฝ้าดู
ไฟล์ Sentinel เดียวกัน

--txn-ขนาด
ชนิด: int; ค่าเริ่มต้น: 1

จำนวนแถวต่อธุรกรรม

ระบุขนาด ในจำนวนแถว ของแต่ละธุรกรรม ศูนย์ปิดการใช้งานการทำธุรกรรม
โดยสิ้นเชิง หลังจากที่ pt-archiver ประมวลผลหลายแถวนี้ มันจะคอมมิตทั้ง
"--source" และ "--dest" หากได้รับ และล้างไฟล์ที่กำหนดโดย "--file"

พารามิเตอร์นี้มีความสำคัญต่อประสิทธิภาพการทำงาน หากคุณกำลังเก็บถาวรจากเซิร์ฟเวอร์จริง
เช่น ทำงาน OLTP หนักๆ คุณต้องเลือกสมดุลที่ดีระหว่าง
ขนาดธุรกรรมและค่าโสหุ้ย ธุรกรรมขนาดใหญ่สร้างความเป็นไปได้ของ
ล็อกการโต้แย้งและการหยุดชะงักที่มากขึ้น แต่การทำธุรกรรมที่มีขนาดเล็กลงทำให้เกิดบ่อยขึ้น
กระทำค่าโสหุ้ยซึ่งอาจมีนัยสำคัญ เพื่อให้ความคิดในชุดทดสอบขนาดเล็ก I
ทำงานด้วยขณะเขียน pt-archiver ค่า 500 ทำให้การเก็บถาวรใช้เวลาประมาณ2
วินาทีต่อ 1000 แถวบนอินสแตนซ์ MySQL ที่เงียบเป็นอย่างอื่นบนเครื่องเดสก์ท็อปของฉัน
การเก็บถาวรไปยังดิสก์และไปยังตารางอื่น ปิดการใช้งานธุรกรรมที่มีค่าศูนย์
ซึ่งเปิด autocommit ประสิทธิภาพลดลงเหลือ 38 วินาทีต่อพันแถว

หากคุณไม่ได้เก็บถาวรจากหรือไปยังเอ็นจิ้นการจัดเก็บข้อมูลเชิงธุรกรรม คุณอาจต้องการ
ปิดใช้งานธุรกรรมเพื่อไม่ให้ pt-archiver พยายามส่ง

--ผู้ใช้
แบบสั้น: -u; ประเภท: string

ผู้ใช้สำหรับเข้าสู่ระบบหากไม่ใช่ผู้ใช้ปัจจุบัน

--รุ่น
แสดงเวอร์ชันและออก

--[ไม่] version-check
ค่าเริ่มต้น: ใช่

ตรวจสอบเวอร์ชันล่าสุดของ Percona Toolkit, MySQL และโปรแกรมอื่นๆ

นี่คือคุณสมบัติ "ตรวจหาการอัปเดตอัตโนมัติ" มาตรฐาน พร้อมด้วยคุณสมบัติเพิ่มเติมอีกสองรายการ
คุณสมบัติ. ขั้นแรก เครื่องมือจะตรวจสอบเวอร์ชันของโปรแกรมอื่นๆ บนระบบโลคัลใน
นอกจากเวอร์ชั่นของตัวเองแล้ว ตัวอย่างเช่น จะตรวจสอบเวอร์ชันของทุกเซิร์ฟเวอร์ MySQL
มันเชื่อมต่อกับ Perl และโมดูล Perl DBD::mysql ประการที่สอง ตรวจสอบและเตือน
เกี่ยวกับรุ่นที่มีปัญหาที่ทราบ ตัวอย่างเช่น MySQL 5.5.25 มีจุดบกพร่องที่สำคัญและ
ได้รับการเผยแพร่อีกครั้งในชื่อ 5.5.25a

การอัปเดตหรือปัญหาที่ทราบจะพิมพ์ไปที่ STDOUT ก่อนเอาต์พุตปกติของเครื่องมือ
คุณลักษณะนี้ไม่ควรรบกวนการทำงานปกติของเครื่องมือ

ดูรายละเอียดเพิ่มเติมได้ที่ .

--ที่ไหน
ประเภท: string

ส่วนคำสั่ง WHERE เพื่อจำกัดแถวที่จะเก็บถาวร (จำเป็น)

ระบุส่วนคำสั่ง WHERE เพื่อจำกัดแถวที่จะเก็บถาวร ไม่ต้องใส่คำว่า
ที่ไหน. คุณอาจต้องอ้างอิงอาร์กิวเมนต์เพื่อป้องกันไม่ให้เชลล์ของคุณตีความ
ตัวอย่างเช่น:

--โดยที่ 'ts < current_date - ช่วง 90 วัน'

เพื่อความปลอดภัย ต้องระบุ "--where" หากคุณไม่ต้องการ WHERE clause ให้ใช้
"--ที่ไหน" 1=1

--ทำไม-เลิก
พิมพ์เหตุผลในการออกเว้นแต่แถวจะหมด

ทำให้ pt-archiver พิมพ์ข้อความหากออกด้วยเหตุผลอื่นนอกเหนือจากการรัน
ออกจากแถวเพื่อเก็บถาวร สิ่งนี้มีประโยชน์หากคุณมีงาน cron ด้วย "--run-time"
ระบุตัวอย่างเช่นและคุณต้องการให้แน่ใจว่า pt-archiver เสร็จสิ้นก่อน
หมดเวลา

หากให้ "--สถิติ" ลักษณะการทำงานจะเปลี่ยนไปเล็กน้อย มันจะพิมพ์
เหตุผลในการออกทั้งๆ ที่เพียงเพราะไม่มีแถวแล้ว

เอาต์พุตนี้พิมพ์แม้ว่าจะได้รับ "--เงียบ" นั่นคือคุณสามารถใส่ "pt-archiver" ลงใน
งาน "cron" และรับอีเมลหากมีทางออกที่ผิดปกติ

DSN OPTIONS


ตัวเลือก DSN เหล่านี้ใช้เพื่อสร้าง DSN แต่ละตัวเลือกจะได้รับเช่น "option=value"
ตัวเลือกจะคำนึงถึงขนาดตัวพิมพ์ ดังนั้น P และ p ไม่ใช่ตัวเลือกเดียวกัน ไม่สามารถ
ช่องว่างก่อนหรือหลัง "=" และถ้าค่ามีช่องว่างจะต้องยกมา
ตัวเลือก DSN คั่นด้วยเครื่องหมายจุลภาค ดูหน้าคู่มือ percona-toolkit สำหรับรายละเอียดทั้งหมด

·ก

สำเนา: ไม่

ฐานข้อมูลที่จะใช้เมื่อดำเนินการค้นหา

·ก

dsn: ชุดอักขระ; สำเนา: ใช่

ชุดอักขระเริ่มต้น

· NS

สำเนา: ไม่

หากเป็น true ให้ปิดใช้งาน binlog ด้วย SQL_LOG_BIN

· NS

dsn: ฐานข้อมูล; สำเนา: ใช่

ฐานข้อมูลที่มีตาราง

· NS

dsn: mysql_read_default_file; สำเนา: ใช่

อ่านเฉพาะตัวเลือกเริ่มต้นจากไฟล์ที่กำหนด

·ชม

dsn: โฮสต์; สำเนา: ใช่

เชื่อมต่อกับโฮสต์

· ผม

สำเนา: ใช่

ดัชนีที่จะใช้

·ล

สำเนา: ใช่

เปิดใช้งาน LOAD DATA LOCAL INFILE อย่างชัดเจน

ด้วยเหตุผลบางอย่าง ผู้ขายบางรายจึงคอมไพล์ libmysql โดยไม่มี --enable-local-infile
ตัวเลือกซึ่งปิดใช้งานคำสั่ง สิ่งนี้สามารถนำไปสู่สถานการณ์แปลก ๆ เช่น
เซิร์ฟเวอร์อนุญาต LOCAL INFILE แต่ไคลเอนต์ส่งข้อยกเว้นหากใช้งาน

อย่างไรก็ตาม ตราบใดที่เซิร์ฟเวอร์อนุญาต LOAD DATA ไคลเอ็นต์ก็สามารถเปิดใช้งานใหม่ได้อย่างง่ายดาย ดู
และ
<http://search.cpan.org/~capttofu/DBD-mysql/lib/DBD/mysql.pm>. ตัวเลือกนี้ไม่
ตรงนั้น

แม้ว่าเราจะไม่พบกรณีที่การเปลี่ยนตัวเลือกนี้ทำให้เกิดข้อผิดพลาดหรือแตกต่าง
เพื่อความปลอดภัย ตัวเลือกนี้ไม่ได้เปิดอยู่โดยค่าเริ่มต้น

· NS

สำเนา: ไม่

ชื่อโมดูลปลั๊กอิน

· NS

dsn: รหัสผ่าน; สำเนา: ใช่

รหัสผ่านเพื่อใช้ในการเชื่อมต่อ หากรหัสผ่านมีเครื่องหมายจุลภาค จะต้องหลีกเลี่ยง
ด้วยแบ็กสแลช: "exam\,ple"

· ป

dsn: พอร์ต; สำเนา: ใช่

หมายเลขพอร์ตที่ใช้เชื่อมต่อ

· NS

dsn: mysql_socket; สำเนา: ใช่

ไฟล์ซ็อกเก็ตที่ใช้สำหรับการเชื่อมต่อ

· NS

สำเนา: ใช่

ตารางที่จะเก็บถาวรจาก/ถึง

· ยู

dsn: ผู้ใช้; สำเนา: ใช่

ผู้ใช้สำหรับเข้าสู่ระบบหากไม่ใช่ผู้ใช้ปัจจุบัน

ขยายเวลา


pt-archiver สามารถขยายได้โดยการเสียบโมดูล Perl ภายนอกเพื่อจัดการกับตรรกะและ/หรือ
การกระทำ คุณสามารถระบุโมดูลสำหรับทั้ง "--source" และ "--dest" โดยใช้ 'm'
ส่วนหนึ่งของข้อกำหนด ตัวอย่างเช่น:

--source D=test,t=test1,m=My::Module1 --dest m=My::Module2,t=test2

สิ่งนี้จะทำให้ pt-archiver โหลดแพ็คเกจ My::Module1 และ My::Module2 สร้าง
อินสแตนซ์ของพวกเขา แล้วโทรไปยังพวกเขาในระหว่างกระบวนการเก็บถาวร

คุณยังสามารถระบุปลั๊กอินด้วย "--plugin"

โมดูลต้องจัดเตรียมอินเทอร์เฟซนี้:

ใหม่ (dbh => $dbh, db => $db_name, tbl => $tbl_name)
ตัวสร้างของปลั๊กอินถูกส่งผ่านการอ้างอิงไปยังตัวจัดการฐานข้อมูล ฐานข้อมูล
ชื่อและชื่อตาราง ปลั๊กอินถูกสร้างขึ้นหลังจาก pt-archiver เปิด
การเชื่อมต่อและก่อนที่จะตรวจสอบตารางที่ให้ไว้ในอาร์กิวเมนต์ สิ่งนี้ทำให้
ปลั๊กอินสร้างโอกาสในการสร้างและเติมตารางชั่วคราว หรือทำงานตั้งค่าอื่นๆ

before_begin(cols => \@cols, allcols => \@allcols)
วิธีการนี้ถูกเรียกก่อนที่ pt-archiver จะเริ่มวนซ้ำผ่านแถวและ
การเก็บถาวร แต่หลังจากที่มันทำงานตั้งค่าอื่น ๆ ทั้งหมด (ตรวจสอบโครงสร้างตาราง
การออกแบบแบบสอบถาม SQL และอื่นๆ) นี่เป็นครั้งเดียวที่ pt-archiver บอก plugin
ชื่อคอลัมน์สำหรับแถวที่จะส่งผ่านปลั๊กอินขณะเก็บถาวร

อาร์กิวเมนต์ "cols" คือชื่อคอลัมน์ที่ผู้ใช้ร้องขอให้เก็บถาวร ไม่ว่าจะโดย
ค่าเริ่มต้นหรือโดยตัวเลือก "--คอลัมน์" อาร์กิวเมนต์ "allcols" คือรายการของคอลัมน์
ชื่อสำหรับ pt-archiver ทุกแถวจะดึงมาจากตารางต้นทาง มันอาจจะดึงมากขึ้น
คอลัมน์มากกว่าที่ผู้ใช้ร้องขอ เนื่องจากต้องการบางคอลัมน์เพื่อการใช้งานของตัวเอง เมื่อไหร่
ฟังก์ชั่นปลั๊กอินที่ตามมาจะได้รับแถวซึ่งเป็นแถวเต็มที่มีส่วนเสริมทั้งหมด
คอลัมน์ หากมี ให้เพิ่มต่อท้าย

is_archivable(row => \@row)
วิธีนี้เรียกว่าแต่ละแถวเพื่อพิจารณาว่าสามารถเก็บถาวรได้หรือไม่ นี้
ใช้กับ "--source" เท่านั้น อาร์กิวเมนต์คือตัวแถวเอง เป็น arrayref ถ้า
วิธีการคืนค่าจริง แถวจะถูกเก็บถาวร มิฉะนั้นจะถูกข้าม

การข้ามแถวจะเพิ่มความยุ่งยากให้กับดัชนีที่ไม่ซ้ำ โดยปกติ pt-archiver จะใช้ a
ส่วนคำสั่ง WHERE ที่ออกแบบมาเพื่อกำหนดเป้าหมายแถวที่ประมวลผลล่าสุดเป็นจุดเริ่มต้นการสแกน
สำหรับคำสั่ง SELECT ถัดไป หากคุณข้ามแถวโดยคืนค่าเท็จจาก
is_archivable(), pt-archiver สามารถเข้าสู่ลูปอนันต์ได้เนื่องจากแถวยังคง
มีอยู่ ดังนั้น เมื่อคุณระบุปลั๊กอินสำหรับอาร์กิวเมนต์ "--source" pt-archiver
จะเปลี่ยนประโยค WHERE ของมันเล็กน้อย แทนที่จะเริ่มต้นที่ "มากกว่าหรือเท่ากับ
ถึง" แถวที่ประมวลผลล่าสุดจะเริ่ม "มากกว่าอย่างเคร่งครัด" สิ่งนี้จะได้ผล
ดีในดัชนีที่ไม่ซ้ำกันเช่นคีย์หลัก แต่อาจข้ามแถว (ออกจากรู) บน
ดัชนีที่ไม่ซ้ำกันหรือเมื่อขึ้นเฉพาะคอลัมน์แรกของดัชนี

"pt-archiver" จะเปลี่ยนส่วนคำสั่งในลักษณะเดียวกันหากคุณระบุ "--no-delete"
เพราะสามารถวนซ้ำแบบอนันต์ได้อีกครั้ง

หากคุณระบุตัวเลือก "--bulk-delete" และคืนค่า false จากวิธีนี้
"pt-archiver" อาจไม่ทำในสิ่งที่คุณต้องการ แถวจะไม่ถูกเก็บถาวร แต่จะเป็น
ลบ เนื่องจากการลบจำนวนมากทำงานในช่วงของแถวและไม่ทราบว่าแถวไหน
ปลั๊กอินที่เลือกเก็บไว้

หากคุณระบุตัวเลือก "--bulk-insert" ค่าส่งคืนของวิธีนี้จะมีผล
ไม่ว่าจะเป็นแถวที่เขียนลงในไฟล์ชั่วคราวสำหรับการแทรกจำนวนมากดังนั้นการแทรกจำนวนมาก
จะทำงานตามที่คาดไว้ อย่างไรก็ตาม การแทรกจำนวนมากจำเป็นต้องมีการลบจำนวนมาก

before_delete(row => \@row)
วิธีนี้เรียกว่าสำหรับแต่ละแถวก่อนที่จะถูกลบ ใช้ได้เฉพาะกับ
"--แหล่งที่มา". นี่เป็นที่ที่ดีสำหรับคุณในการจัดการการขึ้นต่อกัน เช่น การลบ
สิ่งที่เป็นกุญแจต่างประเทศในแถวที่คุณกำลังจะลบ คุณสามารถใช้
สิ่งนี้เพื่อเก็บถาวรตารางที่ขึ้นต่อกันทั้งหมดแบบเรียกซ้ำ

เมธอดปลั๊กอินนี้ถูกเรียกแม้ว่าจะให้ "--no-delete" ก็ตาม แต่ไม่ใช่ if
"--ลบจำนวนมาก" จะได้รับ

before_bulk_delete(first_row => \@row, last_row => \@row)
วิธีการนี้ถูกเรียกก่อนที่จะดำเนินการลบจำนวนมาก มันคล้ายกับ
เมธอด "before_delete" ยกเว้นอาร์กิวเมนต์เป็นแถวแรกและแถวสุดท้ายของช่วง
ที่จะถูกลบ มันถูกเรียกแม้ว่าจะได้รับ "--no-delete"

before_insert(row => \@row)
วิธีนี้เรียกว่าสำหรับแต่ละแถวก่อนที่จะแทรก ใช้ได้เฉพาะกับ
"--ปลายทาง". คุณสามารถใช้สิ่งนี้เพื่อแทรกแถวลงในหลายตาราง บางทีด้วย an
ON DUPLICATE KEY UPDATE clause เพื่อสร้างตารางสรุปในคลังข้อมูล

วิธีนี้จะไม่ถูกเรียกหากได้รับ "--bulk-insert"

before_bulk_insert(first_row => \@row, last_row => \@row, filename =>
Bulk_insert_ชื่อไฟล์)
วิธีการนี้ถูกเรียกก่อนที่จะดำเนินการแทรกจำนวนมาก มันคล้ายกับ
เมธอด "before_insert" ยกเว้นอาร์กิวเมนต์เป็นแถวแรกและแถวสุดท้ายของช่วง
ที่จะถูกลบ

custom_sth(row => \@row, sql => $sql)
วิธีนี้เรียกว่าก่อนแทรกแถว แต่หลังจาก "before_insert()". มัน
อนุญาตให้ปลั๊กอินระบุคำสั่ง "INSERT" ที่แตกต่างกันหากต้องการ การกลับมา
ค่า (ถ้ามี) ควรเป็นตัวจัดการคำสั่ง DBI พารามิเตอร์ "sql" คือข้อความ SQL
ใช้เพื่อเตรียมคำสั่ง "INSERT" เริ่มต้น วิธีนี้จะไม่ถูกเรียกถ้าคุณ
ระบุ "--bulk-insert"

ถ้าไม่มีค่าถูกส่งกลับ ตัวจัดการคำสั่ง "INSERT" เริ่มต้นจะถูกใช้

วิธีนี้ใช้ได้กับปลั๊กอินที่ระบุสำหรับ "--dest" เท่านั้น ดังนั้นหากปลั๊กอินของคุณไม่ใช่
ทำในสิ่งที่คุณคาดหวัง ตรวจสอบว่าคุณได้ระบุไว้สำหรับปลายทางไม่ใช่
แหล่ง

custom_sth_bulk(first_row => \@row, last_row => \@row, sql => $sql, ชื่อไฟล์ =>
$bulk_insert_ชื่อไฟล์)
หากคุณได้ระบุ "--bulk-insert" วิธีการนี้จะถูกเรียกก่อนกลุ่ม
แทรก แต่หลังจาก "before_bulk_insert()" และข้อโต้แย้งก็ต่างกัน

ค่าส่งคืนของวิธีนี้ ฯลฯ คล้ายกับ "กำหนดเอง_sth()" กระบวนการ.

หลังจบ()
เมธอดนี้ถูกเรียกหลังจาก pt-archiver ออกจากลูปการเก็บถาวร คอมมิตฐานข้อมูลทั้งหมด
จัดการ ปิด "--file" และพิมพ์สถิติสุดท้าย แต่ก่อนที่ pt-archiver จะทำงาน
วิเคราะห์หรือเพิ่มประสิทธิภาพ (ดู "--วิเคราะห์" และ "--เพิ่มประสิทธิภาพ")

หากคุณระบุปลั๊กอินสำหรับทั้ง "--source" และ "--dest", โครงสร้าง pt-archiver, การเรียก
before_begin()และโทร หลังจบ() ในสองปลั๊กอินตามลำดับ "--แหล่งที่มา"
"--ปลายทาง".

pt-archiver ถือว่ามันควบคุมการทำธุรกรรมและปลั๊กอินจะไม่กระทำหรือม้วน
กลับตัวจัดการฐานข้อมูล ตัวจัดการฐานข้อมูลที่ส่งไปยังตัวสร้างของปลั๊กอินคือ
pt-archiver ตัวจัดการเดียวกันใช้ตัวเอง จำไว้ว่า "--source" และ "--dest" นั้นแยกจากกัน
จัดการ

โมดูลตัวอย่างอาจมีลักษณะดังนี้:

แพ็คเกจ My::Module;

ย่อยใหม่ {
ของฉัน ( $class, %args ) = @_;
ส่งคืน bless(\%args, $class);
}

ย่อย before_begin {
ของฉัน ( $self, %args ) = @_;
# บันทึกชื่อคอลัมน์ไว้ใช้ภายหลัง
$self->{cols} = $args{cols};
}

ย่อย is_archivable {
ของฉัน ( $self, %args ) = @_;
# ทำตรรกะขั้นสูงด้วย $args{row}
1 กลับ;
}

ย่อย before_delete {} # ไม่ต้องดำเนินการ
ย่อย before_insert {} # ไม่ต้องดำเนินการ
sub custom_sth {} # ไม่ต้องดำเนินการ
ย่อย after_finish {} # ไม่ต้องดำเนินการ

1;

และพวกเรา


ตัวแปรสภาพแวดล้อม "PTDEBUG" เปิดใช้งานเอาต์พุตการดีบักแบบละเอียดไปยัง STDERR การเปิดใช้งาน
การดีบักและดักจับเอาต์พุตทั้งหมดไปยังไฟล์ เรียกใช้เครื่องมือเช่น:

PDTEBUG=1 pt-archiver ... > ไฟล์ 2>&1

ระวัง: การดีบักเอาท์พุตมีจำนวนมากและสามารถสร้างเอาต์พุตได้หลายเมกะไบต์

ระบบ สิ่งที่ต้องมี


คุณต้องมี Perl, DBI, DBD::mysql และแพ็คเกจหลักบางตัวที่ควรติดตั้งในทุก
Perl เวอร์ชันใหม่พอสมควร

ใช้ pt-archiverp ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

  • 1
    DivKit
    DivKit
    DivKit เป็นโอเพ่นซอร์สที่ขับเคลื่อนด้วยเซิร์ฟเวอร์
    กรอบงาน UI (SDUI) มันช่วยให้คุณ
    เปิดตัวการอัปเดตที่มาจากเซิร์ฟเวอร์ไปยัง
    แอพเวอร์ชันต่างๆ นอกจากนี้ยังสามารถเป็นได้
    ใช้สำหรับ...
    ดาวน์โหลด DivKit
  • 2
    ตัวแปลงย่อย
    ตัวแปลงย่อย
    ยูทิลิตี้เพื่อแปลงระหว่างต่างๆ
    รูปแบบการสมัครสมาชิก ผู้ใช้ Shadowrocket
    ควรใช้ ss, ssr หรือ v2ray เป็นเป้าหมาย
    คุณสามารถเพิ่ม &remark= ใน
    HT ที่ชอบโทรเลข...
    ดาวน์โหลดตัวแปลงย่อย
  • 3
    สวอช
    สวอช
    SWASH เป็นตัวเลขเอนกประสงค์
    เครื่องมือจำลองความไม่มั่นคง
    ไม่อุทกสถิต, ฟรีพื้นผิว,
    ปรากฏการณ์การไหลหมุนและการขนส่ง
    ในน่านน้ำชายฝั่งเช่น ...
    ดาวน์โหลด SWASH
  • 4
    VBA-M (เก็บถาวร - ตอนนี้บน Github)
    VBA-M (เก็บถาวร - ตอนนี้บน Github)
    ย้ายโครงการไปที่
    https://github.com/visualboyadvance-m/visualboyadvance-m
    คุณสมบัติ: การสร้างสูตรโกงบันทึกหลายสถานะ
    ระบบ, รองรับ gba, gbc, gb, sgb,
    เอสจีบีทูทู...
    ดาวน์โหลด VBA-M (เก็บถาวร - ตอนนี้บน Github)
  • 5
    Stacer
    Stacer
    เครื่องมือเพิ่มประสิทธิภาพและการตรวจสอบระบบ Linux
    ที่เก็บ Github:
    https://github.com/oguzhaninan/Stacer.
    ผู้ชม: ผู้ใช้ปลายทาง/เดสก์ท็อป ผู้ใช้
    อินเทอร์เฟซ: Qt. การเขียนโปรแกรมแล...
    ดาวน์โหลด Stacer
  • 6
    ออเร้นจ์ฟ็อกซ์
    ออเร้นจ์ฟ็อกซ์
    ทางแยกของ TeamWinRecoveryProject (TWRP)
    พร้อมฟังก์ชั่นเสริมมากมาย ออกแบบใหม่
    และคุณสมบัติอื่น ๆ : รองรับเสียงแหลมและ
    ไม่ใช่ Treble ROMs เคอร์เนล Oreo ที่ทันสมัย
    สร้าง...
    ดาวน์โหลด OrangeFox
  • เพิ่มเติม»

คำสั่ง Linux

Ad