ນີ້ແມ່ນຄໍາສັ່ງ pt-archiverp ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
pt-archiver - ເກັບແຖວຈາກຕາຕະລາງ MySQL ເຂົ້າໄປໃນຕາຕະລາງອື່ນຫຼືໄຟລ໌.
ສະຫຼຸບສັງລວມ
ການນຳໃຊ້: pt-archiver [ຕົວເລືອກ] --source DSN --where WHERE
pt-archiver nibbles ບັນທຶກຈາກຕາຕະລາງ MySQL. ການໂຕ້ຖຽງ --source ແລະ --dest ໃຊ້ DSN
syntax; ຖ້າ 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' \
--where "1=1" --limit 1000 --commit-each
ລຶບ (ລຶບ) ແຖວເດັກກຳພ້າອອກຈາກຕາຕະລາງເດັກນ້ອຍ:
pt-archiver --source h=host,D=db,t=child --purge \
--ບ່ອນທີ່ 'ບໍ່ມີຢູ່(ເລືອກ *ຈາກພໍ່ແມ່ WHERE col=child.col)'
RISKS
Percona Toolkit ແມ່ນຜູ້ໃຫຍ່, ພິສູດໃນໂລກທີ່ແທ້ຈິງ, ແລະທົດສອບໄດ້ດີ, ແຕ່ຖານຂໍ້ມູນທັງຫມົດ
ເຄື່ອງມືສາມາດສ້າງຄວາມສ່ຽງຕໍ່ລະບົບແລະເຄື່ອງແມ່ຂ່າຍຂອງຖານຂໍ້ມູນ. ກ່ອນທີ່ຈະໃຊ້ເຄື່ອງມືນີ້,
ກະລຸນາ:
· ອ່ານເອກະສານຂອງເຄື່ອງມື
·ທົບທວນເຄື່ອງມືທີ່ຮູ້ຈັກ "BUGS"
· ທົດສອບເຄື່ອງມືໃນເຊີບເວີທີ່ບໍ່ແມ່ນການຜະລິດ
·ສໍາຮອງເຄື່ອງແມ່ຂ່າຍການຜະລິດຂອງທ່ານແລະກວດສອບການສໍາຮອງຂໍ້ມູນ
ລາຍລະອຽດ
pt-archiver ແມ່ນເຄື່ອງມືທີ່ຂ້ອຍໃຊ້ເພື່ອເກັບຕາຕະລາງຕາມທີ່ອະທິບາຍໄວ້ໃນ
<http://tinyurl.com/mysql-archiving>. ເປົ້າຫມາຍແມ່ນມີຜົນກະທົບຕ່ໍາ, ວຽກເຮັດງານທໍາຕໍ່ໄປເທົ່ານັ້ນ
ເຈາະຂໍ້ມູນເກົ່າອອກຈາກຕາຕະລາງໂດຍບໍ່ມີຜົນກະທົບຕໍ່ການສອບຖາມ OLTP ຫຼາຍ. ທ່ານສາມາດໃສ່
ຂໍ້ມູນເຂົ້າໄປໃນຕາຕະລາງອື່ນ, ເຊິ່ງບໍ່ຈໍາເປັນຕ້ອງຢູ່ໃນເຄື່ອງແມ່ຂ່າຍດຽວກັນ. ທ່ານຍັງສາມາດຂຽນມັນໃສ່ a
ໄຟລ໌ໃນຮູບແບບທີ່ເຫມາະສົມສໍາລັບ LOAD DATA INFILE. ຫຼືທ່ານບໍ່ສາມາດເຮັດໄດ້, ໃນກໍລະນີໃດກໍ່ຕາມ
ພຽງແຕ່ເປັນການເພີ່ມການລຶບ.
pt-archiver ແມ່ນສາມາດຂະຫຍາຍໄດ້ຜ່ານກົນໄກ plugin. ທ່ານສາມາດໃສ່ລະຫັດຂອງທ່ານເອງເພື່ອເພີ່ມ
ເຫດຜົນການຈັດເກັບແບບພິເສດທີ່ສາມາດເປັນປະໂຫຍດສໍາລັບການເກັບຂໍ້ມູນທີ່ຂຶ້ນກັບ, ນໍາໃຊ້
ກົດລະບຽບທຸລະກິດທີ່ຊັບຊ້ອນ, ຫຼືການສ້າງສາງຂໍ້ມູນໃນລະຫວ່າງຂະບວນການເກັບຂໍ້ມູນ.
ທ່ານຈໍາເປັນຕ້ອງເລືອກຄ່າຢ່າງລະມັດລະວັງສໍາລັບບາງທາງເລືອກ. ສິ່ງທີ່ສໍາຄັນທີ່ສຸດແມ່ນ "-- ຈໍາກັດ",
"--retries", ແລະ "--txn-size".
ຍຸດທະສາດແມ່ນເພື່ອຊອກຫາແຖວທໍາອິດ (s), ຫຼັງຈາກນັ້ນສະແກນບາງດັດສະນີໄປຂ້າງຫນ້າເທົ່ານັ້ນເພື່ອຊອກຫາເພີ່ມເຕີມ
ແຖວຢ່າງມີປະສິດທິພາບ. ແຕ່ລະຄໍາຖາມຕໍ່ໄປບໍ່ຄວນສະແກນຕາຕະລາງທັງຫມົດ; ມັນຄວນຈະຊອກຫາ
ເຂົ້າໄປໃນດັດຊະນີ, ຈາກນັ້ນສະແກນຈົນກວ່າມັນຈະພົບເຫັນແຖວທີ່ສາມາດເກັບໄວ້ໄດ້ຫຼາຍຂຶ້ນ. ການກໍານົດດັດຊະນີທີ່ມີ
ສ່ວນ 'i' ຂອງການໂຕ້ຖຽງ "--source" ສາມາດເປັນສິ່ງສໍາຄັນສໍາລັບການນີ້; ໃຊ້ "--dry-run" ເພື່ອ
ກວດເບິ່ງແບບສອບຖາມທີ່ສ້າງຂຶ້ນແລະໃຫ້ແນ່ໃຈວ່າຈະອະທິບາຍໃຫ້ເຂົາເຈົ້າເພື່ອເບິ່ງວ່າພວກເຂົາມີປະສິດທິພາບ
(ເວລາສ່ວນໃຫຍ່ທ່ານອາດຈະຕ້ອງການສະແກນລະຫັດ PRIMARY, ເຊິ່ງເປັນຄ່າເລີ່ມຕົ້ນ). ເຖິງແມ່ນວ່າ
ດີກວ່າ, ກວດເບິ່ງຄວາມແຕກຕ່າງໃນຕົວນັບສະຖານະ Handler ກ່ອນ ແລະຫຼັງຈາກແລ່ນ
query, ແລະໃຫ້ແນ່ໃຈວ່າມັນບໍ່ໄດ້ສະແກນຕາຕະລາງທັງຫມົດທຸກຄໍາຖາມ.
ທ່ານສາມາດປິດການເພີ່ມປະສິດທິພາບການຊອກຫາຈາກນັ້ນສະແກນບາງສ່ວນຫຼືທັງຫມົດດ້ວຍ "--no-ascend"
ແລະ "--ascend-first". ບາງເທື່ອອັນນີ້ອາດຈະມີປະສິດທິພາບຫຼາຍຂຶ້ນສຳລັບກະແຈຫຼາຍຖັນ. ເປັນ
ຮູ້ວ່າ pt-archiver ຖືກສ້າງຂຶ້ນເພື່ອເລີ່ມຕົ້ນໃນຕອນຕົ້ນຂອງດັດສະນີທີ່ມັນເລືອກແລະສະແກນ
ມັນສົ່ງຕໍ່ເທົ່ານັ້ນ. ນີ້ອາດຈະສົ່ງຜົນໃຫ້ການສະແກນຕາຕະລາງຍາວຖ້າຫາກວ່າທ່ານກໍາລັງພະຍາຍາມທີ່ຈະ nibble ຈາກ
ສິ້ນສຸດຕາຕະລາງໂດຍດັດຊະນີອື່ນນອກເຫນືອຈາກອັນທີ່ມັນມັກ. ເບິ່ງ "--source" ແລະອ່ານ
ເອກະສານຢູ່ໃນສ່ວນ "i" ຖ້າອັນນີ້ໃຊ້ກັບເຈົ້າ.
ເປຍໂນ XtraDB ກຸ່ມບ້ານ
pt-archiver ເຮັດວຽກກັບ Percona XtraDB Cluster (PXC) 5.5.28-23.7 ແລະໃຫມ່ກວ່າ, ແຕ່ມີ.
ສາມຂໍ້ຈໍາກັດທີ່ທ່ານຄວນພິຈາລະນາກ່ອນທີ່ຈະເກັບໄວ້ໃນກຸ່ມ:
ເກີດຄວາມຜິດພາດຂຶ້ນ
pt-archiver ບໍ່ໄດ້ກວດສອບຄວາມຜິດພາດເມື່ອມັນເຮັດທຸລະກໍາ. ຄໍາຫມັ້ນສັນຍາກ່ຽວກັບ PXC ສາມາດ
ລົ້ມເຫລວ, ແຕ່ເຄື່ອງມືຍັງບໍ່ກວດສອບ ຫຼືພະຍາຍາມເຮັດທຸລະກຳຄືນໃໝ່ເມື່ອອັນນີ້ເກີດຂຶ້ນ.
ຖ້າມັນເກີດຂຶ້ນ, ເຄື່ອງມືຈະຕາຍ.
ຕາຕະລາງ MyISAM
ການເກັບຕາຕະລາງ MyISAM ເຮັດວຽກ, ແຕ່ການສະຫນັບສະຫນູນ MyISAM ໃນ PXC ແມ່ນຍັງທົດລອງຢູ່
ເວລາຂອງການປ່ອຍນີ້. ມີຫຼາຍແມງໄມ້ທີ່ຮູ້ຈັກກັບ PXC, ຕາຕະລາງ MyISAM, ແລະ
ຖັນ "AUTO_INCREMENT". ດັ່ງນັ້ນ, ທ່ານຕ້ອງຮັບປະກັນວ່າການຈັດເກັບຈະບໍ່ໂດຍກົງ
ຫຼືສົ່ງຜົນໃຫ້ທາງອ້ອມໃນການນໍາໃຊ້ຄ່າເລີ່ມຕົ້ນ "AUTO_INCREMENT" ສໍາລັບຕາຕະລາງ MyISAM.
ຕົວຢ່າງ, ນີ້ເກີດຂື້ນກັບ "--dest" ຖ້າ "--columns" ຖືກໃຊ້ແລະ
ບໍ່ລວມຖັນ "AUTO_INCREMENT". ເຄື່ອງມືບໍ່ໄດ້ກວດສອບນີ້!
ທາງເລືອກທີ່ບໍ່ແມ່ນກຸ່ມ
ທາງເລືອກບາງຢ່າງອາດຈະເຮັດວຽກຫຼືອາດຈະບໍ່ເຮັດວຽກ. ຕົວຢ່າງ, ຖ້າ node cluster ບໍ່ແມ່ນ a
slave, ຫຼັງຈາກນັ້ນ "--check-slave-lag" ບໍ່ເຮັດວຽກ. ແລະນັບຕັ້ງແຕ່ຕາຕະລາງ PXC ແມ່ນປົກກະຕິແລ້ວ
InnoDB, ແຕ່ InnoDB ບໍ່ສະຫນັບສະຫນູນ "INSERT DELAYED", ຫຼັງຈາກນັ້ນ "--delayed-insert" ບໍ່ໄດ້.
ເຮັດວຽກ. ທາງເລືອກອື່ນອາດຈະບໍ່ເຮັດວຽກ, ແຕ່ເຄື່ອງມືບໍ່ໄດ້ກວດເບິ່ງພວກມັນ, ດັ່ງນັ້ນ
ທ່ານຄວນທົດສອບການຈັດເກັບໃນກຸ່ມທົດສອບກ່ອນທີ່ຈະເກັບຢູ່ໃນກຸ່ມຕົວຈິງຂອງເຈົ້າ.
OUTPUT
ຖ້າທ່ານລະບຸ "--progress", ຜົນຜະລິດແມ່ນແຖວຫົວ, ບວກກັບຜົນໄດ້ຮັບຂອງສະຖານະພາບໃນໄລຍະຫ່າງ.
ແຕ່ລະແຖວໃນຜົນຜະລິດສະຖານະການລາຍການວັນທີແລະເວລາປະຈຸບັນ, ວິນາທີຈໍານວນວິນາທີ pt-
archiver ໄດ້ແລ່ນ, ແລະຈໍານວນແຖວທີ່ມັນຖືກເກັບໄວ້.
ຖ້າທ່ານລະບຸ "--statistics", "pt-archiver" ຜົນໄດ້ຮັບທີ່ໃຊ້ເວລາແລະຂໍ້ມູນອື່ນໆເພື່ອຊ່ວຍ
ທ່ານລະບຸວ່າສ່ວນໃດຂອງຂະບວນການຈັດເກັບຂອງເຈົ້າໃຊ້ເວລາຫຼາຍທີ່ສຸດ.
ຄວາມຜິດພາດການຈັດການ
pt-archiver ພະຍາຍາມຈັບສັນຍານແລະອອກຈາກ gracefully; ຕົວຢ່າງ, ຖ້າທ່ານສົ່ງມັນ
SIGTERM (Ctrl-C ໃນລະບົບ UNIX-ish), ມັນຈະຈັບສັນຍານ, ພິມຂໍ້ຄວາມກ່ຽວກັບ
ສັນຍານ, ແລະອອກຈາກປົກກະຕິ. ມັນຈະບໍ່ດໍາເນີນການ "--analyze" ຫຼື "--optimize",
ເພາະວ່າສິ່ງເຫຼົ່ານີ້ອາດຈະໃຊ້ເວລາດົນເພື່ອສໍາເລັດ. ມັນຈະແລ່ນລະຫັດອື່ນໆທັງຫມົດຕາມປົກກະຕິ,
ລວມທັງການໂທ after_finish() ໃນ plugins ໃດ (ເບິ່ງ "ການຂະຫຍາຍ").
ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ສັນຍານ, ຖ້າຖືກຈັບ, ຈະແຕກອອກຈາກວົງການເກັບຮັກສາຕົ້ນຕໍແລະຂ້າມ
ປັບ / ວິເຄາະ.
OPTIONS
ລະບຸຢ່າງໜ້ອຍໜຶ່ງໃນ "--dest", "--file", ຫຼື "--purge".
"--ignore" ແລະ "--replace" ແມ່ນສະເພາະເຊິ່ງກັນແລະກັນ.
"--txn-size" ແລະ "--commit-ແຕ່ລະ" ແມ່ນສະເພາະເຊິ່ງກັນແລະກັນ.
"--low-priority-insert" ແລະ "--delayed-insert" ແມ່ນສະເພາະເຊິ່ງກັນແລະກັນ.
"--share-lock" ແລະ "--for-update" ແມ່ນສະເພາະເຊິ່ງກັນແລະກັນ.
"--analyze" ແລະ "--optimize" ແມ່ນສະເພາະເຊິ່ງກັນແລະກັນ.
"--no-ascend" ແລະ "--no-delete" ແມ່ນສະເພາະເຊິ່ງກັນແລະກັນ.
ຄ່າ DSN ໃນ "--dest" ຄ່າເລີ່ມຕົ້ນເປັນຄ່າຈາກ "--source" ຖ້າ COPY ແມ່ນແລ້ວ.
-- ວິເຄາະ
ປະເພດ: string
ດໍາເນີນການຕາຕະລາງການວິເຄາະຫຼັງຈາກນັ້ນໃນ "--source" ແລະ/ຫຼື "--dest".
ແລ່ນຕາຕະລາງການວິເຄາະຫຼັງຈາກສໍາເລັດ. argument ເປັນ string arbitrary. ຖ້າຫາກວ່າມັນ
ມີຕົວອັກສອນ 's', ແຫຼ່ງຈະຖືກວິເຄາະ. ຖ້າມັນມີ 'd', the
ຈຸດໝາຍປາຍທາງຈະຖືກວິເຄາະ. ທ່ານສາມາດລະບຸທັງສອງຫຼືທັງສອງ. ສໍາລັບຕົວຢ່າງ, ໄດ້
ຕໍ່ໄປນີ້ຈະວິເຄາະທັງສອງ:
--analyze=ds
ເບິ່ງhttp://dev.mysql.com/doc/en/analyze-table.html> ສໍາລັບລາຍລະອຽດກ່ຽວກັບຕາຕະລາງການວິເຄາະ.
--ascend-first
ຂຶ້ນພຽງແຕ່ຖັນທຳອິດຂອງດັດຊະນີ.
ຖ້າທ່ານຕ້ອງການໃຊ້ການເພີ່ມປະສິດທິພາບດັດສະນີ ascending (ເບິ່ງ "--no-ascend"), ແຕ່ບໍ່ເຮັດ.
ຕ້ອງການ incur overhead ຂອງ ascending ດັດຊະນີຫຼາຍຖັນຂະຫນາດໃຫຍ່, ທ່ານສາມາດນໍາໃຊ້ນີ້
ທາງເລືອກທີ່ຈະບອກ pt-archiver ໃຫ້ຂຶ້ນພຽງແຕ່ຖັນຊ້າຍສຸດຂອງດັດຊະນີ. ນີ້ສາມາດ
ສະຫນອງການເພີ່ມປະສິດທິພາບທີ່ສໍາຄັນຕໍ່ການບໍ່ຂຶ້ນດັດຊະນີທັງຫມົດ, ໃນຂະນະທີ່
ຫຼີກເວັ້ນການຄ່າໃຊ້ຈ່າຍຂອງ ascending ດັດຊະນີທັງຫມົດ.
ເບິ່ງ "ການຂະຫຍາຍ" ສໍາລັບການສົນທະນາຂອງວິທີການນີ້ພົວພັນກັບ plugins.
--ຖາມຜ່ານ
ເຕືອນລະຫັດຜ່ານເມື່ອເຊື່ອມຕໍ່ກັບ MySQL.
--buffer
Buffer output ກັບ "--file" ແລະ flush ໃນ commit.
ປິດໃຊ້ງານການຟອກອັດຕະໂນມັດໃສ່ "--file" ແລະ flushs "--file" ໃສ່ແຜ່ນສະເພາະເມື່ອມີທຸລະກຳ
ຄໍາຫມັ້ນສັນຍາ. ນີ້ໂດຍທົ່ວໄປຫມາຍຄວາມວ່າໄຟລ໌ຖືກສະກັດໂດຍລະບົບປະຕິບັດການ, ດັ່ງນັ້ນ
ອາດຈະມີການກະຕຸ້ນບາງຢ່າງໃຫ້ກັບແຜ່ນລະຫວ່າງ commits ເຊັ່ນກັນ. ຄ່າເລີ່ມຕົ້ນແມ່ນເພື່ອ
ລ້າງ "--file" ໃສ່ແຜ່ນຫຼັງຈາກທຸກໆແຖວ.
ອັນຕະລາຍແມ່ນວ່າອຸປະຕິເຫດອາດຈະເຮັດໃຫ້ຂໍ້ມູນສູນເສຍ.
ການເພີ່ມຂຶ້ນຂອງການປະຕິບັດທີ່ຂ້ອຍໄດ້ເຫັນຈາກການໃຊ້ "--buffer" ແມ່ນປະມານ 5 ຫາ 15 ສ່ວນຮ້ອຍ.
ໄລຍະເວລາຂອງທ່ານອາດຈະແຕກຕ່າງກັນ.
--ລຶບຫຼາຍ
ລົບແຕ່ລະ chunk ດ້ວຍຄໍາຖະແຫຼງດຽວ (ຫມາຍຄວາມວ່າ "--commit-ແຕ່ລະ").
ລຶບແຕ່ລະແຖວເປັນຊຸດດ້ວຍຄຳສັ່ງ "DELETE" ດຽວ. ຖະແຫຼງການ
ລຶບທຸກແຖວລະຫວ່າງແຖວທຳອິດ ແລະແຖວສຸດທ້າຍຂອງແຖວ, ລວມທັງ. ມັນຫມາຍຄວາມວ່າ
"--commit-ແຕ່ລະ", ເພາະວ່າມັນຈະເປັນຄວາມຄິດທີ່ບໍ່ດີທີ່ຈະ "INSERT" ແຖວຫນຶ່ງຕໍ່ເວລາແລະ.
ຄໍາຫມັ້ນສັນຍາໃຫ້ເຂົາເຈົ້າກ່ອນທີ່ຈະເປັນຈໍານວນຫຼາຍ "DELETE".
ວິທີປົກກະຕິແມ່ນການລຶບທຸກແຖວດ້ວຍລະຫັດຫຼັກຂອງມັນ. ການລົບຈໍານວນຫຼາຍອາດຈະເປັນ
ໄວຂຶ້ນຫຼາຍ. ພວກເຂົາເຈົ້າ ຍັງ ອາດຈະ ບໍ່ be ໄວກວ່າ ຖ້າເຈົ້າມີຂໍ້ “WHERE” ທີ່ຊັບຊ້ອນ.
ທາງເລືອກນີ້ defers ທັງຫມົດ "ລຶບ" ການປະມວນຜົນຈົນກ່ວາ chunk ຂອງແຖວ
ສໍາເລັດ. ຖ້າທ່ານມີ plugin ໃນແຫຼ່ງ, ວິທີການ "before_delete" ຂອງມັນຈະບໍ່ເປັນ
ເອີ້ນວ່າ. ແທນທີ່ຈະ, ວິທີການ "before_bulk_delete" ຂອງມັນຖືກເອີ້ນວ່າຕໍ່ມາ.
ຄໍາເຕືອນ: ຖ້າທ່ານມີ plugin ຢູ່ໃນແຫຼ່ງທີ່ບາງຄັ້ງບໍ່ໄດ້ກັບຄືນຄວາມຈິງຈາກ
"is_archivable()", ທ່ານຄວນໃຊ້ຕົວເລືອກນີ້ພຽງແຕ່ຖ້າທ່ານເຂົ້າໃຈສິ່ງທີ່ມັນເຮັດ. ຖ້າ
plugin ແນະນໍາ "pt-archiver" ບໍ່ໃຫ້ເກັບແຖວ, ມັນຈະຍັງຄົງຖືກລຶບໂດຍ
ລົບຫຼາຍ!
--[ບໍ່]ລຶບ-ຈຳກັດ
ຄ່າເລີ່ມຕົ້ນ: ແມ່ນແລ້ວ
ເພີ່ມ "--limit" ໃສ່ "--bulk-delete".
ນີ້ແມ່ນທາງເລືອກຂັ້ນສູງແລະທ່ານບໍ່ຄວນປິດການໃຊ້ງານມັນເວັ້ນເສຍແຕ່ວ່າທ່ານຮູ້ວ່າທ່ານແມ່ນຫຍັງ
ເຮັດແລະເປັນຫຍັງ! ໂດຍຄ່າເລີ່ມຕົ້ນ, "--bulk-delete" ຈະຕໍ່ທ້າຍປະໂຫຍກ "--limit" ໃສ່ເປັນຊຸດ.
ລຶບຄຳຖະແຫຼງ SQL. ໃນບາງກໍລະນີ, ຂໍ້ນີ້ສາມາດຖືກຍົກເລີກໂດຍການລະບຸ
"--no-bulk-delete-limit". "--limit" ຍັງຈະຕ້ອງຖືກລະບຸ.
--bulk-insert
ໃສ່ແຕ່ລະອັນດ້ວຍ LOAD DATA INFILE (ໝາຍເຖິງ "--bulk-delete" "--commit-each").
ໃສ່ແຕ່ລະແຖວດ້ວຍ "LOAD DATA LOCAL INFILE". ນີ້ອາດຈະໄວກວ່າຫຼາຍ
ໃສ່ແຖວຕໍ່ໆກັນດ້ວຍຄຳຖະແຫຼງ "INSERT". ມັນໄດ້ຖືກປະຕິບັດໂດຍການສ້າງ a
ໄຟລ໌ຊົ່ວຄາວສໍາລັບແຕ່ລະ chunk ຂອງແຖວ, ແລະຂຽນແຖວໃສ່ໄຟລ໌ນີ້ແທນທີ່ຈະເປັນ
ໃສ່ພວກມັນ. ເມື່ອ chunk ສໍາເລັດ, ມັນອັບໂຫລດແຖວ.
ເພື່ອປົກປ້ອງຄວາມປອດໄພຂອງຂໍ້ມູນຂອງທ່ານ, ທາງເລືອກນີ້ບັງຄັບໃຫ້ລຶບເປັນຈໍານວນຫຼາຍເພື່ອນໍາໃຊ້. ມັນ
ຈະບໍ່ປອດໄພທີ່ຈະລຶບແຕ່ລະແຖວຕາມທີ່ພົບເຫັນ, ກ່ອນທີ່ຈະໃສ່ແຖວໃສ່ໃນ
ຈຸດຫມາຍປາຍທາງທໍາອິດ. ການບັງຄັບໃຫ້ລຶບເປັນຈໍານວນຫຼາຍຮັບປະກັນວ່າການລຶບລໍຖ້າຈົນກ່ວາການລຶບ
ການແຊກແມ່ນສຳເລັດແລ້ວ.
ຕົວເລືອກ "--low-priority-insert", "--replace", ແລະ "--ignore" ເຮັດວຽກກັບສິ່ງນີ້.
ທາງເລືອກ, ແຕ່ "--delayed-insert" ບໍ່ແມ່ນ.
ຖ້າ "LOAD DATA LOCAL INFILE" ຖິ້ມຄວາມຜິດພາດໃນແຖວຂອງ "ຄໍາສັ່ງທີ່ໃຊ້ແລ້ວບໍ່ແມ່ນ.
ອະນຸຍາດໃຫ້ກັບສະບັບ 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.
ໃຫ້ສັງເກດວ່າພຽງແຕ່ charsets ທີ່ຮູ້ຈັກໂດຍ MySQL ໄດ້ຖືກຮັບຮູ້; ດັ່ງນັ້ນ, ສໍາລັບການຍົກຕົວຢ່າງ, "UTF8" ຈະ
ເຮັດວຽກ, ແຕ່ "UTF-8" ຈະບໍ່.
ເບິ່ງ "--[no]check-charset".
--[ບໍ່] check-charset
ຄ່າເລີ່ມຕົ້ນ: ແມ່ນແລ້ວ
ໃຫ້ແນ່ໃຈວ່າການເຊື່ອມຕໍ່ ແລະຊຸດຕົວອັກສອນຂອງຕາຕະລາງແມ່ນຄືກັນ. ການປິດການກວດສອບນີ້ອາດຈະ
ເຮັດໃຫ້ຂໍ້ຄວາມທີ່ຈະໄດ້ຮັບການປ່ຽນແປງຜິດພາດຈາກຕົວອັກສອນທີ່ກໍານົດໄວ້ກັບຕົວອັກສອນອື່ນ (ໂດຍປົກກະຕິແມ່ນຈາກ
utf8 ກັບ latin1) ເຊິ່ງອາດຈະເຮັດໃຫ້ການສູນເສຍຂໍ້ມູນຫຼື mojibake. ການປິດການກວດສອບນີ້ອາດຈະເປັນ
ເປັນປະໂຫຍດຫຼືມີຄວາມຈໍາເປັນໃນເວລາທີ່ການແປງຊຸດຕົວອັກສອນມີຈຸດປະສົງ.
--[ບໍ່]ກວດເບິ່ງຖັນ
ຄ່າເລີ່ມຕົ້ນ: ແມ່ນແລ້ວ
ໃຫ້ແນ່ໃຈວ່າ "--source" ແລະ "--dest" ມີຖັນດຽວກັນ.
ເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ; ເຮັດໃຫ້ pt-archiver ກວດເບິ່ງວ່າຕາຕະລາງແຫຼ່ງແລະປາຍທາງ
ມີຖັນດຽວກັນ. ມັນບໍ່ໄດ້ກວດສອບຄໍາສັ່ງຖັນ, ປະເພດຂໍ້ມູນ, ແລະອື່ນໆ. ມັນພຽງແຕ່
ກວດເບິ່ງວ່າຄໍລໍາທັງຫມົດໃນແຫຼ່ງມີຢູ່ໃນປາຍທາງແລະໃນທາງກັບກັນ. ຖ້າ
ມີຄວາມແຕກຕ່າງໃດໆ, pt-archiver ຈະອອກດ້ວຍຄວາມຜິດພາດ.
ເພື່ອປິດການກວດສອບນີ້, ໃຫ້ລະບຸ --no-check-columns.
--check-interval
ປະເພດ: ເວລາ; ຄ່າເລີ່ມຕົ້ນ: 1s
ຖ້າ "--check-slave-lag" ຖືກມອບໃຫ້, ນີ້ກໍານົດໄລຍະເວລາທີ່ເຄື່ອງມືຢຸດແຕ່ລະອັນ
ທີ່ໃຊ້ເວລາມັນຄົ້ນພົບວ່າຂ້າໃຊ້ແມ່ນຊັກຊ້າ.
ການກວດສອບນີ້ຖືກປະຕິບັດທຸກໆ 100 ແຖວ.
--check-slave-lag
ປະເພດ: ຊ່ອຍແນ່; ເຮັດຊ້ຳໄດ້: ແມ່ນແລ້ວ
ຢຸດການຈັດເກັບໄວ້ຊົ່ວຄາວຈົນກວ່າວ່າ Slave lag ຂອງ DSN ທີ່ລະບຸແມ່ນໜ້ອຍກວ່າ "--max-lag". ນີ້
ທາງເລືອກສາມາດຖືກກໍານົດຫຼາຍຄັ້ງສໍາລັບການກວດສອບຫຼາຍກວ່າຫນຶ່ງສໍາລອງ.
--ຖັນ
ຮູບແບບສັ້ນ: -c; ປະເພດ: array
ລາຍຊື່ຖັນທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດເພື່ອຈັດເກັບເຂົ້າແຟ້ມ.
ລະບຸລາຍຊື່ຖັນທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດເພື່ອດຶງຂໍ້ມູນ, ຂຽນໃສ່ໄຟລ໌ ແລະແຊກໃສ່
ຕາຕະລາງປາຍທາງ. ຖ້າລະບຸ, pt-archiver ຈະບໍ່ສົນໃຈຖັນອື່ນໆເວັ້ນເສຍແຕ່ວ່າມັນ
ຕ້ອງການເພີ່ມພວກມັນໃສ່ຄໍາຖະແຫຼງການ "SELECT" ສໍາລັບການຕັ້ງຊັນຂຶ້ນດັດສະນີຫຼືລຶບແຖວ.
ມັນດຶງເອົາແລະໃຊ້ຖັນພິເສດເຫຼົ່ານີ້ພາຍໃນ, ແຕ່ບໍ່ໄດ້ຂຽນພວກມັນໃສ່
ໄຟລ໌ຫຼືໄປຫາຕາຕະລາງປາຍທາງ. ມັນ ບໍ່ ຜ່ານພວກມັນໄປຫາ plugins.
ເບິ່ງ "--primary-key-only".
--ຄໍາຫມັ້ນສັນຍາ-ແຕ່ລະຄົນ
ມອບແຕ່ລະຊຸດຂອງແຖວທີ່ດຶງມາ ແລະເກັບໄວ້ (ປິດການໃຊ້ງານ "--txn-size").
ສັນຍາການເຮັດທຸລະກໍາແລະ flushes "--file" ຫຼັງຈາກແຕ່ລະຊຸດຂອງແຖວໄດ້ຖືກເກັບໄວ້,
ກ່ອນທີ່ຈະດຶງຊຸດແຖວຕໍ່ໄປ, ແລະກ່ອນທີ່ຈະນອນຖ້າ "--sleep" ຖືກລະບຸ.
ປິດການໃຊ້ງານ "--txn-size"; ໃຊ້ "--limit" ເພື່ອຄວບຄຸມຂະຫນາດການເຮັດທຸລະກໍາດ້ວຍ
"-- ຄໍາຫມັ້ນສັນຍາແຕ່ລະຄົນ".
ຕົວເລືອກນີ້ມີປະໂຫຍດເປັນທາງລັດເພື່ອເຮັດໃຫ້ "--limit" ແລະ "--txn-size" ມູນຄ່າດຽວກັນ,
ແຕ່ສິ່ງທີ່ ສຳ ຄັນກວ່ານັ້ນມັນຫລີກລ້ຽງການເຮັດທຸລະ ກຳ ທີ່ເປີດໃນຂະນະທີ່ຊອກຫາເພີ່ມເຕີມ
ແຖວ. ຕົວຢ່າງ, ຈິນຕະນາການວ່າທ່ານກໍາລັງເກັບແຖວເກົ່າຈາກຈຸດເລີ່ມຕົ້ນຂອງຫຼາຍ
ຕາຕະລາງຂະຫນາດໃຫຍ່, ດ້ວຍ "--limit" 1000 ແລະ "--txn-size" 1000. ຫຼັງຈາກໄລຍະເວລາຂອງການຊອກຫາບາງ.
ແລະການຈັດເກັບ 1000 ແຖວຕໍ່ຄັ້ງ, pt-archiver ຊອກຫາ 999 ແຖວສຸດທ້າຍ ແລະບ່ອນເກັບມ້ຽນ
ພວກມັນ, ຈາກນັ້ນດຳເນີນການ SELECT ຕໍ່ໄປເພື່ອຊອກຫາແຖວເພີ່ມເຕີມ. ນີ້ສະແກນສ່ວນທີ່ເຫຼືອຂອງ
ຕາຕະລາງ, ແຕ່ບໍ່ເຄີຍຊອກຫາແຖວອີກຕໍ່ໄປ. ມັນໄດ້ເປີດການເຮັດທຸລະກໍາສໍາລັບເວລາດົນນານ
ທີ່ໃຊ້ເວລາ, ພຽງແຕ່ເພື່ອກໍານົດວ່າມັນແມ່ນສໍາເລັດແລ້ວ. ທ່ານສາມາດນໍາໃຊ້ "--commit-in" ເພື່ອຫຼີກເວັ້ນການ
ນີ້.
--config
ປະເພດ: Array
ອ່ານລາຍຊື່ໄຟລ໌ config ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດນີ້; ຖ້າລະບຸ, ນີ້ຈະຕ້ອງເປັນອັນທໍາອິດ
ທາງເລືອກໃນແຖວຄໍາສັ່ງ.
--ຖານຂໍ້ມູນ
ຮູບແບບສັ້ນ: -D; ປະເພດ: string
ເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນນີ້.
--ຊັກຊ້າ-ແຊກ
ເພີ່ມຕົວແກ້ໄຂ DELAYED ໃສ່ INSERT ຖະແຫຼງການ.
ເພີ່ມຕົວແກ້ໄຂ DELAYED ໃສ່ INSERT ຫຼື REPLACE ຖະແຫຼງການ. ເບິ່ງ
<http://dev.mysql.com/doc/en/insert.html> ສໍາລັບລາຍລະອຽດ.
--dest
ປະເພດ: DSN
DSN ລະບຸຕາຕະລາງທີ່ຈະເກັບໄວ້.
ລາຍການນີ້ລະບຸຕາຕະລາງທີ່ pt-archiver ຈະແຊກແຖວທີ່ເກັບໄວ້ຈາກ
"--ແຫຼ່ງ". ມັນໃຊ້ຮູບແບບການໂຕ້ຖຽງ key=val ດຽວກັນເປັນ "--source". ຫາຍສາບສູນຫຼາຍທີ່ສຸດ
ຄ່າເລີ່ມຕົ້ນເປັນຄ່າດຽວກັນກັບ "--source", ດັ່ງນັ້ນທ່ານບໍ່ຈໍາເປັນຕ້ອງເຮັດຊ້ໍາທາງເລືອກ
ທີ່ຄືກັນໃນ "--source" ແລະ "--dest". ໃຊ້ຕົວເລືອກ "--help" ເພື່ອເບິ່ງວ່າອັນໃດ
ຄ່າຖືກຄັດລອກຈາກ "--source".
ຄໍາເຕືອນ: ການນໍາໃຊ້ໄຟລ໌ທາງເລືອກໃນຕອນຕົ້ນ (F) ທາງເລືອກ DSN ທີ່ກໍານົດ socket ສໍາລັບ
"--source" ເຮັດໃຫ້ pt-archiver ເຊື່ອມຕໍ່ກັບ "--dest" ໂດຍໃຊ້ຊັອກເກັດນັ້ນເວັ້ນເສຍແຕ່ວ່າອັນອື່ນ.
socket ສໍາລັບ "--dest" ຖືກລະບຸ. ນີ້ຫມາຍຄວາມວ່າ pt-archiver ອາດຈະເຊື່ອມຕໍ່ບໍ່ຖືກຕ້ອງ
ກັບ "--source" ເມື່ອມັນເຊື່ອມຕໍ່ກັບ "--dest". ຍົກຕົວຢ່າງ:
--source F=host1.cnf,D=db,t=tbl --dest h=host2
ເມື່ອ pt-archiver ເຊື່ອມຕໍ່ກັບ "--dest", host2, ມັນຈະເຊື່ອມຕໍ່ຜ່ານ "--source",
host1, socket ກໍານົດໃນ host1.cnf.
-- ແລ່ນແຫ້ງ
ພິມແບບສອບຖາມແລະອອກໂດຍບໍ່ຕ້ອງເຮັດຫຍັງ.
ເຮັດໃຫ້ pt-archiver ອອກໄປຫຼັງຈາກການພິມຊື່ໄຟລ໌ແລະຄໍາສັ່ງ SQL ທີ່ມັນຈະໃຊ້.
--file
ປະເພດ: string
ໄຟລ໌ທີ່ຈະເກັບໄວ້, ກັບ DATE_FORMAT()- ຄ້າຍຄືຮູບແບບ.
ຊື່ໄຟລ໌ທີ່ຈະຂຽນແຖວທີ່ເກັບໄວ້ໃນ. ຊຸດຍ່ອຍຂອງ MySQL DATE_FORMAT() ການຈັດຮູບແບບ
ລະຫັດແມ່ນອະນຸຍາດໃຫ້ໃນຊື່ໄຟລ໌, ດັ່ງຕໍ່ໄປນີ້:
%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.
ຖ້າທ່ານຕ້ອງການ header ຖັນຢູ່ເທິງສຸດຂອງໄຟລ໌, ເບິ່ງ "--header". ໄຟລ໌ແມ່ນອັດຕະໂນມັດ -
flushed ໂດຍຄ່າເລີ່ມຕົ້ນ; ເບິ່ງ "--buffer".
--ສໍາລັບການປັບປຸງ
ເພີ່ມຕົວປັບປ່ຽນ FOR UPDATE ໃສ່ SELECT statements.
ສໍາລັບລາຍລະອຽດ, ເບິ່ງhttp://dev.mysql.com/doc/en/innodb-locking-reads.html>.
--ຫົວ
ພິມຫົວຖັນຢູ່ເທິງສຸດຂອງ "--file".
ຂຽນຊື່ຖັນເປັນແຖວທຳອິດໃນໄຟລ໌ທີ່ໃຫ້ໂດຍ "--file". ຖ້າໄຟລ໌
ມີຢູ່, ບໍ່ໄດ້ຂຽນສ່ວນຫົວ; ອັນນີ້ເຮັດໃຫ້ໄຟລ໌ສາມາດໂຫຼດໄດ້ດ້ວຍ LOAD DATA INFILE ໃນ
ກໍລະນີທີ່ທ່ານເພີ່ມຜົນຜະລິດເພີ່ມເຕີມໃສ່ມັນ.
- ຊ່ວຍ
ສະແດງການຊ່ວຍເຫຼືອ ແລະອອກ.
--high-priority-ເລືອກ
ເພີ່ມຕົວແກ້ໄຂ HIGH_PRIORITY ໃສ່ໃບລາຍງານ SELECT.
ເບິ່ງhttp://dev.mysql.com/doc/en/select.html> ສໍາລັບລາຍລະອຽດ.
-ເຈົ້າພາບ
ຮູບແບບສັ້ນ: -h; ປະເພດ: string
ເຊື່ອມຕໍ່ຫາເຈົ້າພາບ.
--ບໍ່ສົນໃຈ
ໃຊ້ IGNORE ສໍາລັບ INSERT ຖະແຫຼງການ.
ເຮັດໃຫ້ INSERTs ເຂົ້າໄປໃນ "--dest" ເປັນ INSERT IGNORE.
-- ຈຳກັດ
ປະເພດ: int; ຄ່າເລີ່ມຕົ້ນ: 1
ຈໍານວນຂອງແຖວທີ່ຈະດຶງຂໍ້ມູນແລະເກັບຕໍ່ຄໍາຖະແຫຼງການ.
ຈໍາກັດຈໍານວນຂອງແຖວທີ່ໄດ້ຮັບໂດຍຄໍາສັ່ງ SELECT ທີ່ດຶງເອົາແຖວມາຫາ
ຮວບຮວມ. ຄ່າເລີ່ມຕົ້ນແມ່ນໜຶ່ງແຖວ. ມັນອາດຈະມີປະສິດທິພາບຫຼາຍຂຶ້ນເພື່ອເພີ່ມຂີດຈໍາກັດ, ແຕ່ເປັນ
ລະມັດລະວັງຖ້າຫາກວ່າທ່ານກໍາລັງເກັບ sparsely, skipping ຫຼາຍແຖວເກັດທີ່ຢູ່; ນີ້ອາດຈະເປັນໄປໄດ້
ເຮັດໃຫ້ເກີດຄວາມຂັດແຍ້ງຫຼາຍຂຶ້ນກັບການສອບຖາມອື່ນໆ, ຂຶ້ນກັບເຄື່ອງຈັກການເກັບຮັກສາ, ການເຮັດທຸລະກໍາ
ລະດັບການໂດດດ່ຽວ, ແລະທາງເລືອກເຊັ່ນ "--for-update".
--ທ້ອງຖິ່ນ
ຢ່າຂຽນ OPTIMIZE ຫຼືວິເຄາະຄໍາຖາມໃສ່ binlog.
ເພີ່ມຕົວແກ້ໄຂ NO_WRITE_TO_BINLOG ໃສ່ ANALYZE ແລະ OPTIMIZE queries. ເບິ່ງ "-- ວິເຄາະ"
ສໍາລັບລາຍລະອຽດ.
--low-priority-ລຶບ
ເພີ່ມຕົວແກ້ໄຂ LOW_PRIORITY ໃສ່ DELETE ຖະແຫຼງການ.
ເບິ່ງhttp://dev.mysql.com/doc/en/delete.html> ສໍາລັບລາຍລະອຽດ.
--low-priority-insert
ເພີ່ມຕົວແກ້ໄຂ LOW_PRIORITY ໃສ່ INSERT ຫຼື REPLACE ຖະແຫຼງການ.
ເບິ່ງhttp://dev.mysql.com/doc/en/insert.html> ສໍາລັບລາຍລະອຽດ.
--max-flow-ctl
ປະເພດ: ລອຍ
ຄ້າຍຄືກັນກັບ --max-lag ແຕ່ສໍາລັບກຸ່ມ PXC. ກວດເບິ່ງກຸ່ມເວລາສະເລ່ຍທີ່ໃຊ້
ຢຸດຊົ່ວຄາວສໍາລັບ Flow Control ແລະເຮັດໃຫ້ເຄື່ອງມືຢຸດຊົ່ວຄາວຖ້າມັນເກີນອັດຕາສ່ວນທີ່ລະບຸ
ໃນທາງເລືອກ. ຄ່າເລີ່ມຕົ້ນແມ່ນບໍ່ມີການກວດສອບການຄວບຄຸມການໄຫຼ. ຕົວເລືອກນີ້ມີໃຫ້ສໍາລັບ PXC
ຮຸ່ນ 5.6 ຫຼືສູງກວ່າ.
--max-lag
ປະເພດ: ເວລາ; ຄ່າເລີ່ມຕົ້ນ: 1s
ຢຸດການຈັດເກັບໄວ້ຊົ່ວຄາວຖ້າຂ້າໃຊ້ທີ່ໃຫ້ໂດຍ "--check-slave-lag" ຊັກຊ້າ.
ຕົວເລືອກນີ້ເຮັດໃຫ້ pt-archiver ເບິ່ງສໍາລອງທຸກຄັ້ງທີ່ມັນກໍາລັງຈະດຶງຂໍ້ມູນ
ແຖວອື່ນ. ຖ້າຄວາມລ້າຊ້າຂອງທາດແມ່ນຫຼາຍກ່ວາມູນຄ່າທາງເລືອກ, ຫຼືຖ້າທາດ
ບໍ່ໄດ້ເຮັດວຽກ (ສະນັ້ນການຊັກຊ້າຂອງມັນແມ່ນ NULL), pt-table-checksum ນອນສໍາລັບ "--check-interval"
ວິນາທີແລະຫຼັງຈາກນັ້ນເບິ່ງ lag ອີກເທື່ອຫນຶ່ງ. ມັນຊ້ຳອີກຈົນຂ້າໃຊ້ຖືກຈັບໄດ້,
ຈາກນັ້ນສືບຕໍ່ດຶງຂໍ້ມູນ ແລະຈັດເກັບແຖວ.
ທາງເລືອກນີ້ອາດຈະລົບລ້າງຄວາມຕ້ອງການສໍາລັບ "--sleep" ຫຼື "--sleep-coef".
--ບໍ່ຂຶ້ນ
ຢ່າໃຊ້ການເພີ່ມປະສິດທິພາບດັດສະນີຕັ້ງຊັນຂຶ້ນ.
ການເພີ່ມປະສິດທິພາບດັດສະນີ ascending ເລີ່ມຕົ້ນເຮັດໃຫ້ "pt-archiver" ເພີ່ມປະສິດທິພາບຊ້ໍາກັນ
ຄໍາຖາມ "SELECT" ດັ່ງນັ້ນພວກເຂົາຊອກຫາຢູ່ໃນດັດຊະນີທີ່ຄໍາຖາມທີ່ຜ່ານມາສິ້ນສຸດລົງ, ຫຼັງຈາກນັ້ນສະແກນ
ຕາມມັນ, ແທນທີ່ຈະສະແກນຈາກຈຸດເລີ່ມຕົ້ນຂອງຕາຕະລາງທຸກໆຄັ້ງ. ນີ້ແມ່ນ
ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນເພາະວ່າໂດຍທົ່ວໄປແລ້ວມັນເປັນຍຸດທະສາດທີ່ດີສໍາລັບການເຂົ້າເຖິງຊ້ໍາຊ້ອນ.
ດັດຊະນີຫຼາຍຖັນຂະໜາດໃຫຍ່ອາດເຮັດໃຫ້ຂໍ້ WHERE ມີຄວາມຊັບຊ້ອນພໍສົມຄວນ
ອັນນີ້ອາດມີປະສິດທິພາບໜ້ອຍລົງ. ພິຈາລະນາຕົວຢ່າງສີ່ຄໍລໍາ PRIMARY KEY
on (a, b, c, d). ຂໍ້ WHERE ເພື່ອເລີ່ມຕົ້ນບ່ອນທີ່ການສອບຖາມສຸດທ້າຍໄດ້ສິ້ນສຸດລົງດັ່ງນີ້:
ຢູ່ໃສ (a > ?)
ຫຼື (a = ? ແລະ b > ?)
ຫຼື (a = ? ແລະ b = ? AND c > ?)
ຫຼື (a = ? AND b = ? AND c = ? AND d >= ?)
ການຕື່ມຂໍ້ມູນໃສ່ຕົວຍຶດດ້ວຍຄ່າຈະໃຊ້ໜ່ວຍຄວາມຈຳ ແລະ CPU, ເພີ່ມການສັນຈອນໃນເຄືອຂ່າຍ ແລະ
parsing overhead, ແລະອາດຈະເຮັດໃຫ້ການສອບຖາມ harder ສໍາລັບ MySQL ທີ່ຈະເພີ່ມປະສິດທິພາບ. A ສີ່ຖັນ
ຄີບໍ່ແມ່ນເລື່ອງໃຫຍ່, ແຕ່ລະຫັດສິບຄໍລໍາທີ່ທຸກໆຄໍລໍາອະນຸຍາດໃຫ້ "NULL" ອາດ
be
ການຂຶ້ນດັດຊະນີອາດຈະບໍ່ຈໍາເປັນຖ້າຫາກວ່າທ່ານຮູ້ວ່າທ່ານກໍາລັງພຽງແຕ່ຖອນແຖວ
ຈາກຈຸດເລີ່ມຕົ້ນຂອງຕາຕະລາງໃນ chunks, ແຕ່ບໍ່ປ່ອຍໃຫ້ຂຸມໃດ, ສະນັ້ນເລີ່ມຕົ້ນທີ່
ການເລີ່ມຕົ້ນຂອງຕາຕະລາງແມ່ນຕົວຈິງແລ້ວເປັນສິ່ງທີ່ມີປະສິດທິພາບທີ່ສຸດທີ່ຈະເຮັດ.
ເບິ່ງ "--ascend-first". ເບິ່ງ "ການຂະຫຍາຍ" ສໍາລັບການສົນທະນາວ່າອັນນີ້ພົວພັນກັນແນວໃດ
ກັບ plugins.
-- ບໍ່ມີການລຶບ
ຢ່າລຶບແຖວທີ່ເກັບໄວ້ໃນແຟ້ມ.
ເຮັດໃຫ້ "pt-archiver" ບໍ່ລຶບແຖວຫຼັງຈາກປະມວນຜົນພວກມັນ. ອັນນີ້ບໍ່ອະນຸຍາດ
"--no-ascend", ເພາະວ່າການເຮັດໃຫ້ພວກເຂົາທັງສອງຈະເຮັດໃຫ້ເກີດການ loop ທີ່ບໍ່ມີຂອບເຂດ.
ຖ້າມີ plugin ຢູ່ໃນແຫຼ່ງ DSN, ວິທີການ "before_delete" ຂອງມັນຖືກເອີ້ນວ່າຢ່າງໃດກໍ່ຕາມ,
ເຖິງແມ່ນວ່າ "pt-archiver" ຈະບໍ່ດໍາເນີນການລຶບ. ເບິ່ງ "EXTENDING" ສໍາລັບການເພີ່ມເຕີມ
plugins
-- optimize
ປະເພດ: string
ດໍາເນີນການ OPTIMIZE TABLE ຫຼັງຈາກນັ້ນໃນ "--source" ແລະ/ຫຼື "--dest".
ດໍາເນີນການ OPTIMIZE TABLE ຫຼັງຈາກສໍາເລັດ. ເບິ່ງ "--analyze" ສໍາລັບ syntax ທາງເລືອກແລະ
<http://dev.mysql.com/doc/en/optimize-table.html> ສໍາລັບລາຍລະອຽດກ່ຽວກັບ OPTIMIZE TABLE.
-ລະຫັດຜ່ານ
ຮູບແບບສັ້ນ: -p; ປະເພດ: string
ລະຫັດຜ່ານທີ່ຈະໃຊ້ໃນເວລາເຊື່ອມຕໍ່. ຖ້າລະຫັດຜ່ານມີເຄື່ອງໝາຍຈຸດ, ພວກມັນຈະຕ້ອງຖືກຫລົບໜີ
ກັບ backslash: "ການສອບເສັງ, ple"
--pid
ປະເພດ: string
ສ້າງໄຟລ໌ PID ທີ່ໃຫ້. ເຄື່ອງມືຈະບໍ່ເລີ່ມຕົ້ນຖ້າໄຟລ໌ PID ມີຢູ່ແລ້ວແລະ
PID ທີ່ມັນມີຢູ່ແຕກຕ່າງຈາກ PID ໃນປັດຈຸບັນ. ຢ່າງໃດກໍຕາມ, ຖ້າໄຟລ໌ PID
ມີຢູ່ ແລະ PID ທີ່ມັນບັນຈຸບໍ່ໄດ້ເຮັດວຽກອີກຕໍ່ໄປ, ເຄື່ອງມືຈະຂຽນທັບ PID
ໄຟລ໌ທີ່ມີ PID ໃນປັດຈຸບັນ. ໄຟລ໌ PID ຈະຖືກລຶບອອກໂດຍອັດຕະໂນມັດເມື່ອເຄື່ອງມືອອກ.
--ປລັກອິນ
ປະເພດ: string
ຊື່ໂມດູນ Perl ເພື່ອໃຊ້ເປັນ plugin ທົ່ວໄປ.
ລະບຸຊື່ໂມດູນ Perl ຂອງ plugin ທີ່ມີຈຸດປະສົງທົ່ວໄປ. ມັນຖືກນໍາໃຊ້ໃນປັດຈຸບັນເທົ່ານັ້ນ
ສໍາລັບສະຖິຕິ (ເບິ່ງ "--statistics") ແລະຕ້ອງມີ "new()" ແລະ "ສະຖິຕິ()" ວິທີການ.
ວິທີການ "new( src = " $src, dst => $dst, opts => $o )> ວິທີການໄດ້ຮັບແຫຼ່ງແລະ
DSNs ຈຸດຫມາຍປາຍທາງ, ແລະການເຊື່ອມຕໍ່ຖານຂໍ້ມູນຂອງເຂົາເຈົ້າ, ຄືກັນກັບການເຊື່ອມຕໍ່ສະເພາະ
plugins ເຮັດ. ມັນຍັງໄດ້ຮັບວັດຖຸ OptionParser ($o) ສໍາລັບການເຂົ້າເຖິງເສັ້ນຄໍາສັ່ງ
ທາງເລືອກ (ຕົວຢ່າງ: "$o-"get('purge');>).
ວິທີການ "ສະຖິຕິ(\%stats, $time)" ໄດ້ຮັບ hashref ຂອງສະຖິຕິທີ່ເກັບກໍາໂດຍ
ວຽກເກັບມ້ຽນ, ແລະເວລາທີ່ວຽກທັງຫມົດເລີ່ມຕົ້ນ.
--ພອດ
ຮູບແບບສັ້ນ: -P; ປະເພດ: int
ໝາຍເລກພອດເພື່ອໃຊ້ສຳລັບການເຊື່ອມຕໍ່.
--primary-key-ເທົ່ານັ້ນ
ຖັນຫຼັກເທົ່ານັ້ນ.
ທາງລັດສຳລັບການລະບຸ "--columns" ກັບຖັນຫຼັກຫຼັກ. ນີ້ແມ່ນ
ປະສິດທິພາບຖ້າຫາກວ່າທ່ານພຽງແຕ່ຕ້ອງການທີ່ຈະລ້າງແຖວ; ມັນຫຼີກເວັ້ນການດຶງແຖວທັງຫມົດ, ເມື່ອ
ຕ້ອງການພຽງແຕ່ຖັນຫຼັກຕົ້ນຕໍສໍາລັບຄໍາຖະແຫຼງ "DELETE". ເບິ່ງ "--purge".
- ແມ່ຍິງ
ປະເພດ: int
ພິມຂໍ້ມູນຄວາມຄືບໜ້າທຸກແຖວ X.
ພິມເວລາປະຈຸບັນ, ເວລາຜ່ານໄປ, ແລະແຖວທີ່ເກັບໄວ້ທຸກ X ແຖວ.
-- ລ້າງ
ລ້າງແທນການເກັບ; ອະນຸຍາດໃຫ້ຍົກເວັ້ນ "--file" ແລະ "--dest".
ອະນຸຍາດໃຫ້ເກັບມ້ຽນໂດຍບໍ່ມີການໂຕ້ຖຽງ "--file" ຫຼື "--dest", ເຊິ່ງເປັນການລຶບລ້າງຢ່າງມີປະສິດທິພາບ.
ເນື່ອງຈາກແຖວຖືກລຶບພຽງແຕ່.
ຖ້າທ່ານຕ້ອງການລຶບແຖວ, ໃຫ້ພິຈາລະນາກໍານົດຖັນຫຼັກຂອງຕາຕະລາງ
ດ້ວຍ "--primary-key-only". ນີ້ຈະປ້ອງກັນບໍ່ໃຫ້ດຶງຄໍລໍາທັງຫມົດຈາກເຄື່ອງແມ່ຂ່າຍສໍາລັບການ
ບໍ່ມີເຫດຜົນ.
--ລຶບດ່ວນ
ເພີ່ມຕົວແກ້ໄຂດ່ວນເພື່ອລຶບຖະແຫຼງການ.
ເບິ່ງhttp://dev.mysql.com/doc/en/delete.html> ສໍາລັບລາຍລະອຽດ. ດັ່ງທີ່ໄດ້ກ່າວໄວ້ໃນ
ເອກະສານ, ໃນບາງກໍລະນີມັນອາດຈະໄວກວ່າທີ່ຈະໃຊ້ DELETE QUICK ຕາມດ້ວຍ OPTIMIZE
ຕາຕະລາງ. ທ່ານສາມາດໃຊ້ "--optimize" ສໍາລັບການນີ້.
--ງຽບ
ຮູບແບບສັ້ນ: -q
ຢ່າພິມຜົນຜະລິດໃດໆ, ເຊັ່ນ: ສໍາລັບ "--statistics".
ສະກັດກັ້ນຜົນຜະລິດປົກກະຕິ, ລວມທັງຜົນຜະລິດຂອງ "--ສະຖິຕິ", ແຕ່ບໍ່ໄດ້ສະກັດກັ້ນ
ຜົນຜະລິດຈາກ "--why-quit".
--ປ່ຽນແທນ
ເຮັດໃຫ້ INSERTs ເຂົ້າໄປໃນ "--dest" ເພື່ອຂຽນເປັນ REPLACE.
-- ພະຍາຍາມໃໝ່
ປະເພດ: int; ຄ່າເລີ່ມຕົ້ນ: 1
ຈໍານວນຂອງການທົດລອງຕໍ່ການຫມົດເວລາຫຼືການຢຸດເຊົາການ.
ລະບຸຈໍານວນເວລາທີ່ pt-archiver ຄວນພະຍາຍາມອີກຄັ້ງເມື່ອມີການລັອກ InnoDB
ລໍຖ້າໝົດເວລາ ຫຼື deadlock. ເມື່ອການລອງຄືນໝົດແລ້ວ, pt-archiver ຈະອອກດ້ວຍ an
ຜິດພາດ.
ພິຈາລະນາຢ່າງລະອຽດສິ່ງທີ່ທ່ານຕ້ອງການທີ່ຈະເກີດຂຶ້ນໃນເວລາທີ່ທ່ານກໍາລັງເກັບລະຫວ່າງການປະສົມຂອງ
ເຄື່ອງຈັກເກັບຮັກສາທຸລະກໍາແລະບໍ່ທຸລະກໍາ. INSERT ກັບ "--dest" ແລະ
DELETE ຈາກ "--source" ຢູ່ໃນການເຊື່ອມຕໍ່ແຍກຕ່າງຫາກ, ດັ່ງນັ້ນພວກມັນບໍ່ໄດ້ຢູ່ໃນຕົວຈິງ
ເຂົ້າຮ່ວມໃນທຸລະກໍາດຽວກັນເຖິງແມ່ນວ່າພວກເຂົາຢູ່ໃນເຄື່ອງແມ່ຂ່າຍດຽວກັນ. ຢ່າງໃດກໍຕາມ, pt-
Archiver ປະຕິບັດການເຮັດທຸລະກໍາທີ່ແຈກຢາຍແບບງ່າຍດາຍໃນລະຫັດ, ດັ່ງນັ້ນ commits ແລະ rollbacks
ຄວນຈະເກີດຂຶ້ນຕາມທີ່ຕ້ອງການໃນທົ່ວທັງສອງເຊື່ອມຕໍ່.
ໃນເວລານີ້ຂ້າພະເຈົ້າບໍ່ໄດ້ຂຽນລະຫັດໃດໆເພື່ອຈັດການກັບຄວາມຜິດພາດທີ່ມີການເກັບຮັກສາການເຮັດທຸລະກໍາ
ເຄື່ອງຈັກນອກ ເໜືອ ຈາກ 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 ຢ່າງສະຫງ່າງາມຖ້າຈໍາເປັນ. ເບິ່ງ "--stop".
--set-vars
ປະເພດ: Array
ກໍານົດຕົວແປ MySQL ໃນບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຄູ່ "variable=value".
ໂດຍຄ່າເລີ່ມຕົ້ນ, ເຄື່ອງມືກໍານົດ:
wait_timeout=10000
ຕົວແປທີ່ລະບຸໄວ້ໃນເສັ້ນຄໍາສັ່ງ override ຄ່າເລີ່ມຕົ້ນເຫຼົ່ານີ້. ຍົກຕົວຢ່າງ,
ການລະບຸ "--set-vars wait_timeout=500" ລົບລ້າງຄ່າເລີ່ມຕົ້ນຂອງ 10000.
ເຄື່ອງມືພິມຄໍາເຕືອນແລະສືບຕໍ່ຖ້າຫາກວ່າຕົວປ່ຽນແປງບໍ່ສາມາດໄດ້ຮັບການຕັ້ງຄ່າ.
--share-lock
ເພີ່ມຕົວແກ້ໄຂ LOCK IN SHARE MODE ໃສ່ SELECT statements.
ເບິ່ງhttp://dev.mysql.com/doc/en/innodb-locking-reads.html>.
--skip-foreign-key-checks
ປິດການກວດສອບກະແຈຕ່າງປະເທດດ້ວຍ SET FOREIGN_KEY_CHECKS=0.
-- ນອນ
ປະເພດ: int
ເວລານອນລະຫວ່າງການດຶງຂໍ້ມູນ.
ລະບຸໄລຍະເວລາທີ່ຈະນອນລະຫວ່າງຂໍ້ຄວາມ SELECT. ຄ່າເລີ່ມຕົ້ນແມ່ນບໍ່ໃຫ້ນອນຢູ່
ທັງໝົດ. ການເຮັດທຸລະກໍາບໍ່ໄດ້ສັນຍາໄວ້, ແລະໄຟລ໌ "--file" ຈະບໍ່ຖືກລ້າງ, ກ່ອນ
ນອນ. ເບິ່ງ "--txn-size" ເພື່ອຄວບຄຸມມັນ.
ຖ້າ "--commit-in" ຖືກລະບຸ, committing ແລະ flushing ເກີດຂຶ້ນກ່ອນທີ່ຈະນອນ.
--sleep-coef
ປະເພດ: ລອຍ
ຄິດໄລ່ "--sleep" ເປັນຄູນຂອງເວລາ SELECT ສຸດທ້າຍ.
ຖ້າຕົວເລືອກນີ້ຖືກລະບຸ, pt-archiver ຈະນອນສໍາລັບເວລາສອບຖາມຂອງສຸດທ້າຍ
SELECT ຄູນດ້ວຍຄ່າສໍາປະສິດທີ່ລະບຸ.
ນີ້ແມ່ນວິທີການທີ່ຊັບຊ້ອນກວ່າເລັກນ້ອຍໃນການຄວບຄຸມ SELECTs: ນອນແຕກຕ່າງກັນ
ໄລຍະເວລາລະຫວ່າງແຕ່ລະ SELECT, ຂຶ້ນກັບໄລຍະເວລາທີ່ SELECTs ໃຊ້ເວລາ.
--ຊັອກເກັດ
ຮູບແບບສັ້ນ: -S; ປະເພດ: string
ໄຟລ໌ socket ໃຊ້ສໍາລັບການເຊື່ອມຕໍ່.
--ແຫຼ່ງ
ປະເພດ: DSN
DSN ລະບຸຕາຕະລາງທີ່ຈະເກັບຈາກ (ຕ້ອງການ). ການໂຕ້ຖຽງນີ້ແມ່ນ DSN. ເບິ່ງ
"ຕົວເລືອກ DSN" ສໍາລັບ syntax. ທາງເລືອກສ່ວນໃຫຍ່ຄວບຄຸມວິທີການ pt-archiver ເຊື່ອມຕໍ່ກັບ MySQL,
ແຕ່ມີບາງທາງເລືອກ DSN ຂະຫຍາຍຢູ່ໃນ syntax ຂອງເຄື່ອງມືນີ້. The D, t, ແລະ i
ຕົວເລືອກເລືອກຕາຕະລາງເພື່ອເກັບໄວ້:
--source h=my_server,D=my_database,t=my_tbl
ທາງເລືອກທີ່ລະບຸຖານຂໍ້ມູນເພື່ອຕັ້ງເປັນຄ່າເລີ່ມຕົ້ນຂອງການເຊື່ອມຕໍ່ກັບ USE. ຖ້າ
ທາງເລືອກ b ແມ່ນຄວາມຈິງ, ມັນປິດການເຂົ້າສູ່ລະບົບສອງດ້ວຍ SQL_LOG_BIN. ທາງເລືອກ m
ກໍານົດການປະຕິບັດທີ່ສາມາດສຽບໄດ້, ເຊິ່ງໂມດູນ Perl ພາຍນອກສາມາດສະຫນອງໄດ້. ເທົ່ານັ້ນ
ສ່ວນທີ່ຕ້ອງການແມ່ນຕາຕະລາງ; ພາກສ່ວນອື່ນໆອາດຈະຖືກອ່ານຈາກສະຖານທີ່ຕ່າງໆໃນ
ສະພາບແວດລ້ອມ (ເຊັ່ນ: ໄຟລ໌ທາງເລືອກ).
ສ່ວນ 'i' ສົມຄວນໄດ້ຮັບການກ່າວເຖິງພິເສດ. ນີ້ບອກ pt-archiver ທີ່ດັດສະນີມັນຄວນຈະ
ສະແກນເພື່ອເກັບໄວ້. ອັນນີ້ປາກົດຢູ່ໃນ FORCE INDEX ຫຼືໃຊ້ INDEX hint ໃນ SELECT
ຂໍ້ຄວາມທີ່ໃຊ້ເພື່ອດຶງເອົາແຖວທີ່ສາມາດເກັບໄວ້ໄດ້. ຖ້າທ່ານບໍ່ລະບຸຫຍັງ, pt-archiver
ຈະຄົ້ນພົບດັດຊະນີທີ່ດີໂດຍອັດຕະໂນມັດ, ຕ້ອງການ "ກຸນແຈຫຼັກ" ຖ້າມີອັນໃດອັນໜຶ່ງ. ໃນຂອງຂ້ອຍ
ປະສົບການນີ້ປົກກະຕິແລ້ວເຮັດວຽກໄດ້ດີ, ສະນັ້ນຫຼາຍທີ່ສຸດຂອງທີ່ໃຊ້ເວລາທ່ານອາດຈະພຽງແຕ່ omit ໄດ້
ສ່ວນ 'i'.
ດັດຊະນີຖືກນໍາໃຊ້ເພື່ອເພີ່ມປະສິດທິພາບການເຂົ້າຫາຕາຕະລາງຊ້ໍາ; pt-archiver ຈື່
ແຖວສຸດທ້າຍມັນດຶງມາຈາກແຕ່ລະຄໍາຖະແຫຼງທີ່ SELECT, ແລະໃຊ້ມັນເພື່ອສ້າງ WHERE
clause, ການນໍາໃຊ້ຄໍລໍາໃນດັດຊະນີທີ່ກໍານົດໄວ້, ທີ່ຄວນຈະອະນຸຍາດໃຫ້ MySQL ເລີ່ມຕົ້ນການ
SELECT ຕໍ່ໄປບ່ອນທີ່ອັນສຸດທ້າຍສິ້ນສຸດລົງ, ແທນທີ່ຈະມີທ່າແຮງທີ່ຈະສະແກນຈາກ
ການເລີ່ມຕົ້ນຂອງຕາຕະລາງດ້ວຍແຕ່ລະ SELECT ຕິດຕໍ່ກັນ. ຖ້າທ່ານກໍາລັງໃຊ້ພາຍນອກ
plugins, ກະລຸນາເບິ່ງ "EXTENDING" ສໍາລັບການສົນທະນາຂອງວິທີການທີ່ເຂົາເຈົ້າພົວພັນກັບ ascending
ດັດສະນີ.
ຕົວເລືອກ 'a' ແລະ 'b' ຊ່ວຍໃຫ້ທ່ານສາມາດຄວບຄຸມວິທີການຖະແຫຼງການໄຫຼຜ່ານທາງຖານສອງ
ບັນທຶກ. ຖ້າເຈົ້າລະບຸຕົວເລືອກ 'b', ການບັນທຶກຖານສອງຈະຖືກປິດການນຳໃຊ້ຕາມທີ່ລະບຸ
ການເຊື່ອມຕໍ່. ຖ້າທ່ານລະບຸທາງເລືອກ 'a', ການເຊື່ອມຕໍ່ຈະ "ໃຊ້" ທີ່ລະບຸ
ຖານຂໍ້ມູນ, ທີ່ທ່ານສາມາດນໍາໃຊ້ເພື່ອປ້ອງກັນບໍ່ໃຫ້ສໍາລອງປະຕິບັດເຫດການບັນທຶກຄູ່
ດ້ວຍຕົວເລືອກ "--replicate-ignore-db". ທັງສອງທາງເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ເປັນທີ່ແຕກຕ່າງກັນ
ວິທີການເພື່ອບັນລຸເປົ້າຫມາຍດຽວກັນ: ຈັດເກັບຂໍ້ມູນອອກຈາກຕົ້ນສະບັບ, ແຕ່ປ່ອຍໃຫ້ມັນຢູ່ໃນ
ທາດ. ຕົວຢ່າງເຊັ່ນ, ທ່ານສາມາດດໍາເນີນວຽກການລ້າງຢູ່ໃນແມ່ບົດແລະປ້ອງກັນມັນຈາກ
ການເກີດຂຶ້ນກັບສໍາລັບການນໍາໃຊ້ວິທີການຂອງທ່ານເລືອກ.
ຄໍາເຕືອນ: ການນໍາໃຊ້ໄຟລ໌ທາງເລືອກໃນຕອນຕົ້ນ (F) ທາງເລືອກ DSN ທີ່ກໍານົດ socket ສໍາລັບ
"--source" ເຮັດໃຫ້ pt-archiver ເຊື່ອມຕໍ່ກັບ "--dest" ໂດຍໃຊ້ຊັອກເກັດນັ້ນເວັ້ນເສຍແຕ່ວ່າອັນອື່ນ.
socket ສໍາລັບ "--dest" ຖືກລະບຸ. ນີ້ຫມາຍຄວາມວ່າ pt-archiver ອາດຈະເຊື່ອມຕໍ່ບໍ່ຖືກຕ້ອງ
ກັບ "--source" ເມື່ອມັນຫມາຍເຖິງການເຊື່ອມຕໍ່ກັບ "--dest". ຍົກຕົວຢ່າງ:
--source F=host1.cnf,D=db,t=tbl --dest h=host2
ເມື່ອ pt-archiver ເຊື່ອມຕໍ່ກັບ "--dest", host2, ມັນຈະເຊື່ອມຕໍ່ຜ່ານ "--source",
host1, socket ກໍານົດໃນ host1.cnf.
--ສະຖິຕິ
ເກັບກໍາແລະພິມສະຖິຕິເວລາ.
ເຮັດໃຫ້ pt-archiver ເກັບກໍາສະຖິຕິເວລາກ່ຽວກັບສິ່ງທີ່ມັນເຮັດ. ສະຖິຕິເຫຼົ່ານີ້
ສາມາດໃຊ້ໄດ້ກັບ plugin ທີ່ລະບຸໄວ້ໂດຍ "--plugin"
ເວັ້ນເສຍແຕ່ວ່າທ່ານລະບຸ "--quiet", "pt-archiver" ພິມສະຖິຕິເມື່ອມັນອອກ. ໄດ້
ສະຖິຕິເບິ່ງຄືນີ້:
Started at 2008-07-18T07:18:53, ended at 2008-07-18T07:18:53
ທີ່ມາ: D=db,t=table
ເລືອກ 4
ແຊກ 4
ລົບ 4
ການນັບເວລາການປະຕິບັດ Pct
commit 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
ສອງ (ຫຼືສາມ) ເສັ້ນທໍາອິດສະແດງໃຫ້ເຫັນເວລາແລະຕາຕະລາງແຫຼ່ງແລະປາຍທາງ. ໄດ້
ສາມແຖວຕໍ່ໄປສະແດງໃຫ້ເຫັນວ່າມີຈໍານວນແຖວທີ່ຖືກດຶງ, ໃສ່, ແລະລຶບ.
ເສັ້ນທີ່ຍັງເຫຼືອສະແດງໃຫ້ເຫັນການນັບ ແລະເວລາ. ຖັນແມ່ນການປະຕິບັດ, ຈໍານວນທັງຫມົດ
ຈໍານວນຂອງເວລາທີ່ການປະຕິບັດແມ່ນກໍານົດເວລາ, ທີ່ໃຊ້ເວລາທັງຫມົດທີ່ໃຊ້ເວລາ, ແລະສ່ວນຮ້ອຍຂອງ
ເວລາແລ່ນທັງໝົດຂອງໂຄງການ. ແຖວຖືກຈັດຮຽງຕາມລຳດັບເວລາທັງໝົດຈາກໃຫຍ່ຫານ້ອຍ. ໄດ້
ແຖວສຸດທ້າຍແມ່ນເວລາທີ່ເຫຼືອບໍ່ໄດ້ລະບຸຢ່າງຈະແຈ້ງກ່ຽວກັບສິ່ງໃດ. ການກະທໍາຈະ
ແຕກຕ່າງກັນໄປຕາມຕົວເລືອກແຖວຄໍາສັ່ງ.
ຖ້າ "--why-quit" ຖືກມອບໃຫ້, ພຶດຕິກໍາຂອງມັນຖືກປ່ຽນແປງເລັກນ້ອຍ. ທາງເລືອກນີ້ເຮັດໃຫ້ມັນ
ພິມເຫດຜົນສໍາລັບການອອກເຖິງແມ່ນວ່າໃນເວລາທີ່ມັນເປັນພຽງແຕ່ເນື່ອງຈາກວ່າບໍ່ມີແຖວຕໍ່ໄປ.
ຕົວເລືອກນີ້ຕ້ອງການເວລາມາດຕະຖານ:: ໂມດູນ HiRes, ເຊິ່ງເປັນສ່ວນຫນຶ່ງຂອງ Perl ຫຼັກ
ການປ່ອຍ Perl ໃຫມ່ຢ່າງສົມເຫດສົມຜົນ.
--ຢຸດ
ຢຸດການແລ່ນຕົວຢ່າງໂດຍການສ້າງໄຟລ໌ sentinel.
ເຮັດໃຫ້ pt-archiver ສ້າງໄຟລ໌ sentinel ທີ່ລະບຸໂດຍ "--sentinel" ແລະອອກ.
ນີ້ຄວນຈະມີຜົນກະທົບຂອງການຢຸດເຊົາການແລ່ນຕົວຢ່າງທັງຫມົດທີ່ກໍາລັງເບິ່ງ
ໄຟລ໌ sentinel ດຽວກັນ.
--txn-size
ປະເພດ: int; ຄ່າເລີ່ມຕົ້ນ: 1
ຈຳນວນແຖວຕໍ່ທຸລະກຳ.
ລະບຸຂະຫນາດ, ໃນຈໍານວນແຖວ, ຂອງແຕ່ລະທຸລະກໍາ. ສູນປິດການເຮັດທຸລະກໍາ
ທັງໝົດ. ຫຼັງຈາກ pt-archiver ປະມວນຜົນຫຼາຍແຖວນີ້, ມັນເຮັດທັງສອງ
"--source" ແລະ "--dest" ຖ້າໃຫ້, ແລະ flushes ໄຟລ໌ທີ່ໃຫ້ໂດຍ "--file".
ພາລາມິເຕີນີ້ແມ່ນສໍາຄັນຕໍ່ການປະຕິບັດ. ຖ້າທ່ານກໍາລັງເກັບຈາກເຄື່ອງແມ່ຂ່າຍສົດ,
ຕົວຢ່າງທີ່ເຮັດວຽກ OLTP ຫນັກ, ທ່ານຈໍາເປັນຕ້ອງເລືອກຄວາມສົມດຸນທີ່ດີລະຫວ່າງ
ຂະຫນາດການເຮັດທຸລະກໍາແລະຄໍາຫມັ້ນສັນຍາ overhead. ການເຮັດທຸລະກໍາຂະຫນາດໃຫຍ່ສ້າງຄວາມເປັນໄປໄດ້ຂອງ
ການຂັດແຍ້ງແລະການຢຸດຊະງັກຫຼາຍຂື້ນ, ແຕ່ການເຮັດທຸລະກໍາທີ່ນ້ອຍກວ່າເຮັດໃຫ້ເກີດເລື້ອຍໆ
ຄໍາຫມັ້ນສັນຍາ overhead, ຊຶ່ງສາມາດມີຄວາມສໍາຄັນ. ເພື່ອໃຫ້ຄວາມຄິດ, ໃນຊຸດທົດສອບຂະຫນາດນ້ອຍ I
ເຮັດວຽກກັບໃນຂະນະທີ່ຂຽນ pt-archiver, ມູນຄ່າ 500 ເຮັດໃຫ້ເກີດການເກັບມ້ຽນໃຊ້ເວລາປະມານ 2.
ວິນາທີຕໍ່ 1000 ແຖວຢູ່ໃນຕົວຢ່າງ MySQL ທີ່ງຽບໆຢູ່ໃນເຄື່ອງ desktop ຂອງຂ້ອຍ,
ເກັບໄວ້ໃນ disk ແລະຕາຕະລາງອື່ນ. ການປິດການເຮັດທຸລະກໍາທີ່ມີຄ່າສູນ,
ເຊິ່ງເປີດໃຊ້ອັດຕະໂນມັດ, ຫຼຸດລົງປະສິດທິພາບເປັນ 38 ວິນາທີຕໍ່ພັນແຖວ.
ຖ້າທ່ານບໍ່ໄດ້ເກັບຈາກຫຼືໄປຫາເຄື່ອງຈັກເກັບຮັກສາການເຮັດທຸລະກໍາ, ທ່ານອາດຈະຕ້ອງການ
ປິດການເຮັດທຸລະກໍາເພື່ອໃຫ້ pt-archiver ບໍ່ພະຍາຍາມເຮັດ.
-ຜູ້ໃຊ້
ຮູບແບບສັ້ນ: -u; ປະເພດ: string
ຜູ້ໃຊ້ສໍາລັບການເຂົ້າສູ່ລະບົບຖ້າບໍ່ແມ່ນຜູ້ໃຊ້ປະຈຸບັນ.
- ການປ່ຽນແປງ
ສະແດງສະບັບແລະອອກ.
--[ບໍ່ມີການກວດສອບສະບັບ
ຄ່າເລີ່ມຕົ້ນ: ແມ່ນແລ້ວ
ກວດເບິ່ງເວີຊັນຫຼ້າສຸດຂອງ Percona Toolkit, MySQL, ແລະໂຄງການອື່ນໆ.
ນີ້ແມ່ນມາດຕະຖານ "ກວດສອບການປັບປຸງອັດຕະໂນມັດ" ຄຸນນະສົມບັດ, ມີສອງເພີ່ມເຕີມ
ຄຸນລັກສະນະ. ຫນ້າທໍາອິດ, ເຄື່ອງມືກວດສອບສະບັບຂອງບັນດາໂຄງການອື່ນໆໃນລະບົບທ້ອງຖິ່ນໃນ
ນອກຈາກສະບັບຂອງຕົນເອງ. ຕົວຢ່າງ, ມັນກວດເບິ່ງເວີຊັນຂອງທຸກເຄື່ອງແມ່ຂ່າຍ MySQL
ມັນເຊື່ອມຕໍ່ກັບ, Perl, ແລະໂມດູນ Perl DBD::mysql. ອັນທີສອງ, ມັນກວດເບິ່ງແລະເຕືອນ
ກ່ຽວກັບສະບັບທີ່ມີບັນຫາທີ່ຮູ້ຈັກ. ຕົວຢ່າງ, MySQL 5.5.25 ມີ bug ທີ່ສໍາຄັນແລະ
ໄດ້ຖືກປ່ອຍອອກມາເມື່ອ 5.5.25a.
ການອັບເດດ ຫຼືບັນຫາທີ່ຮູ້ຈັກຈະຖືກພິມໃສ່ STDOUT ກ່ອນທີ່ເຄື່ອງມືຈະອອກມາປົກກະຕິ.
ຄຸນສົມບັດນີ້ບໍ່ຄວນລົບກວນການເຮັດວຽກປົກກະຕິຂອງເຄື່ອງມື.
ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ໄປຢ້ຽມຢາມ .
-- ບ່ອນໃດ
ປະເພດ: string
WHERE clause ເພື່ອຈຳກັດແຖວໃດທີ່ຈະເກັບໄວ້ (ຕ້ອງການ).
ລະບຸຂໍ້ຄວາມ WHERE ເພື່ອຈຳກັດວ່າແຖວໃດຖືກເກັບໄວ້. ບໍ່ລວມຄໍາສັບ
ຢູ່ໃສ. ທ່ານອາດຈະຈໍາເປັນຕ້ອງອ້າງເຖິງການໂຕ້ຖຽງເພື່ອປ້ອງກັນບໍ່ໃຫ້ແກະຂອງທ່ານຕີຄວາມມັນ.
ຍົກຕົວຢ່າງ:
-- where 'ts < current_date - interval 90 day'
ເພື່ອຄວາມປອດໄພ, "-- where" ແມ່ນຕ້ອງການ. ຖ້າທ່ານບໍ່ຕ້ອງການປະໂຫຍກ WHERE, ໃຫ້ໃຊ້
"-- where" 1=1.
--ເປັນຫຍັງ-ເຊົາ
ພິມເຫດຜົນສໍາລັບການອອກເວັ້ນເສຍແຕ່ວ່າແຖວໝົດ.
ເຮັດໃຫ້ pt-archiver ພິມຂໍ້ຄວາມຖ້າມັນອອກດ້ວຍເຫດຜົນອື່ນນອກເຫນືອຈາກການແລ່ນ
ອອກຈາກແຖວເພື່ອເກັບໄວ້. ນີ້ສາມາດເປັນປະໂຫຍດຖ້າທ່ານມີວຽກ cron ກັບ "--run-time"
ສໍາລັບການຍົກຕົວຢ່າງ, ແລະທ່ານຕ້ອງການໃຫ້ແນ່ໃຈວ່າ pt-archiver ແມ່ນສໍາເລັດກ່ອນ
ໝົດເວລາ.
ຖ້າ "-- ສະຖິຕິ" ຖືກມອບໃຫ້, ພຶດຕິກໍາຈະປ່ຽນແປງເລັກນ້ອຍ. ມັນຈະພິມ
ເຫດຜົນສໍາລັບການອອກເຖິງແມ່ນວ່າໃນເວລາທີ່ມັນເປັນພຽງແຕ່ເນື່ອງຈາກວ່າບໍ່ມີແຖວຕໍ່ໄປ.
ຜົນຜະລິດນີ້ຈະພິມອອກເຖິງແມ່ນວ່າ "--ງຽບ" ຈະຖືກມອບໃຫ້. ນັ້ນແມ່ນ, ທ່ານສາມາດໃສ່ "pt-archiver" ໃນ
ວຽກເຮັດງານທໍາ "cron" ແລະໄດ້ຮັບອີເມລ໌ຖ້າຫາກວ່າມີການອອກຜິດປົກກະຕິ.
DSN OPTIONS
ຕົວເລືອກ DSN ເຫຼົ່ານີ້ຖືກໃຊ້ເພື່ອສ້າງ DSN. ແຕ່ລະທາງເລືອກແມ່ນໃຫ້ຄື "option=value".
ຕົວເລືອກແມ່ນຕົວພິມນ້ອຍ, ດັ່ງນັ້ນ P ແລະ p ບໍ່ແມ່ນທາງເລືອກດຽວກັນ. ບໍ່ສາມາດມີ
ຊ່ອງຫວ່າງກ່ອນ ຫຼືຫຼັງ "=" ແລະຖ້າຄ່າມີຊ່ອງຫວ່າງມັນຈະຕ້ອງຖືກອ້າງອີງ.
ຕົວເລືອກ DSN ແມ່ນຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ. ເບິ່ງ manpage percona-toolkit ສໍາລັບລາຍລະອຽດເຕັມ.
ກ
ສຳເນົາ: ບໍ່
ຖານຂໍ້ມູນທີ່ຈະໃຊ້ໃນເວລາດໍາເນີນການສອບຖາມ.
ກ
dsn: charset; ສຳເນົາ: ແມ່ນແລ້ວ
ຕັ້ງຕົວອັກສອນເລີ່ມຕົ້ນ.
·ຂ
ສຳເນົາ: ບໍ່
ຖ້າຖືກຕ້ອງ, ປິດການໃຊ້ງານ binlog ດ້ວຍ SQL_LOG_BIN.
·ດ
dsn: ຖານຂໍ້ມູນ; ສຳເນົາ: ແມ່ນແລ້ວ
ຖານຂໍ້ມູນທີ່ປະກອບດ້ວຍຕາຕະລາງ.
· F
dsn: mysql_read_default_file; ສຳເນົາ: ແມ່ນແລ້ວ
ອ່ານພຽງແຕ່ຕົວເລືອກເລີ່ມຕົ້ນຈາກໄຟລ໌ທີ່ໃຫ້
h
dsn: ເຈົ້າພາບ; ສຳເນົາ: ແມ່ນແລ້ວ
ເຊື່ອມຕໍ່ຫາເຈົ້າພາບ.
· i
ສຳເນົາ: ແມ່ນແລ້ວ
ດັດຊະນີການນໍາໃຊ້.
·ລ
ສຳເນົາ: ແມ່ນແລ້ວ
ເປີດໃຊ້ LOAD DATA LOCAL INFILE.
ດ້ວຍເຫດຜົນບາງຢ່າງ, ຜູ້ຂາຍບາງຄົນລວບລວມ libmysql ໂດຍບໍ່ມີການ --enable-local-infile
ທາງເລືອກ, ເຊິ່ງປິດການຖະແຫຼງການ. ນີ້ສາມາດນໍາໄປສູ່ສະຖານະການ strange, ເຊັ່ນ:
ເຊີບເວີອະນຸຍາດໃຫ້ INFILE ທ້ອງຖິ່ນ, ແຕ່ລູກຄ້າຖິ້ມຂໍ້ຍົກເວັ້ນຖ້າມັນຖືກໃຊ້.
ຢ່າງໃດກໍຕາມ, ຕາບໃດທີ່ເຄື່ອງແມ່ຂ່າຍອະນຸຍາດໃຫ້ LOAD DATA, ລູກຄ້າສາມາດເປີດໃຊ້ມັນຄືນໃຫມ່; ເບິ່ງ
ແລະ
<http://search.cpan.org/~capttofu/DBD-mysql/lib/DBD/mysql.pm>. ທາງເລືອກນີ້ເຮັດ
ແທ້.
ເຖິງແມ່ນວ່າພວກເຮົາບໍ່ພົບກໍລະນີທີ່ການຫັນທາງເລືອກນີ້ນໍາໄປສູ່ຄວາມຜິດພາດຫຼືແຕກຕ່າງກັນ
ພຶດຕິກໍາ, ເພື່ອຢູ່ໃນດ້ານທີ່ປອດໄພ, ທາງເລືອກນີ້ບໍ່ໄດ້ຢູ່ໃນຄ່າເລີ່ມຕົ້ນ.
·ມ
ສຳເນົາ: ບໍ່
ຊື່ໂມດູນປລັກອິນ.
· ປ
dsn: ລະຫັດຜ່ານ; ສຳເນົາ: ແມ່ນແລ້ວ
ລະຫັດຜ່ານທີ່ຈະໃຊ້ໃນເວລາເຊື່ອມຕໍ່. ຖ້າລະຫັດຜ່ານມີເຄື່ອງໝາຍຈຸດ, ພວກມັນຈະຕ້ອງຖືກຫລົບໜີ
ກັບ backslash: "ການສອບເສັງ, ple"
·ປ
dsn: ພອດ; ສຳເນົາ: ແມ່ນແລ້ວ
ໝາຍເລກພອດເພື່ອໃຊ້ສຳລັບການເຊື່ອມຕໍ່.
·ສ
dsn: mysql_socket; ສຳເນົາ: ແມ່ນແລ້ວ
ໄຟລ໌ socket ໃຊ້ສໍາລັບການເຊື່ອມຕໍ່.
· ທ
ສຳເນົາ: ແມ່ນແລ້ວ
ຕາຕະລາງທີ່ຈະເກັບຈາກ / ໄປ.
· ເຈົ້າ
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 ທີ່ມີ "--plugin".
ໂມດູນຕ້ອງໃຫ້ການໂຕ້ຕອບນີ້:
new(dbh => $dbh, db => $db_name, tbl => $tbl_name)
ຕົວສ້າງຂອງ plugin ແມ່ນຜ່ານການອ້າງອີງເຖິງຕົວຈັດການຖານຂໍ້ມູນ, ຖານຂໍ້ມູນ
ຊື່, ແລະຊື່ຕາຕະລາງ. plugin ຖືກສ້າງຂຶ້ນພຽງແຕ່ຫຼັງຈາກ pt-archiver ເປີດ
ການເຊື່ອມຕໍ່, ແລະກ່ອນທີ່ມັນຈະກວດເບິ່ງຕາຕະລາງທີ່ໃຫ້ຢູ່ໃນການໂຕ້ຖຽງ. ນີ້ເຮັດໃຫ້
plugin ໂອກາດທີ່ຈະສ້າງແລະເພີ່ມຕາຕະລາງຊົ່ວຄາວ, ຫຼືເຮັດວຽກການຕິດຕັ້ງອື່ນໆ.
before_begin(cols => \@cols, allcols => \@allcols)
ວິທີການນີ້ເອີ້ນວ່າພຽງແຕ່ກ່ອນທີ່ pt-archiver ເລີ່ມຕົ້ນ iterating ຜ່ານແຖວແລະ
ເກັບຮັກສາພວກມັນໄວ້, ແຕ່ຫຼັງຈາກມັນເຮັດວຽກການຕິດຕັ້ງອື່ນໆທັງຫມົດ (ກວດເບິ່ງໂຄງສ້າງຕາຕະລາງ,
ການອອກແບບຄໍາຖາມ SQL, ແລະອື່ນໆ). ນີ້ແມ່ນເວລາດຽວທີ່ pt-archiver ບອກ plugin
ຊື່ຖັນສໍາລັບແຖວທີ່ມັນຈະຜ່ານ plugin ໃນຂະນະທີ່ເກັບໄວ້.
ການໂຕ້ຖຽງ "cols" ແມ່ນຖັນຊື່ຜູ້ໃຊ້ຮ້ອງຂໍໃຫ້ຖືກເກັບໄວ້, ບໍ່ວ່າຈະໂດຍ
ຄ່າເລີ່ມຕົ້ນຫຼືໂດຍຕົວເລືອກ "--columns". ການໂຕ້ຖຽງ "allcols" ແມ່ນບັນຊີລາຍຊື່ຂອງຖັນ
ຊື່ສໍາລັບທຸກໆແຖວ pt-archiver ຈະເອົາມາຈາກຕາຕະລາງແຫຼ່ງ. ມັນອາດຈະໄດ້ຮັບຫຼາຍກວ່າ
ຖັນຫຼາຍກວ່າທີ່ຜູ້ໃຊ້ຮ້ອງຂໍ, ເພາະວ່າມັນຕ້ອງການບາງຄໍລໍາສໍາລັບການນໍາໃຊ້ຂອງຕົນເອງ. ເມື່ອໃດ
ຟັງຊັນ plugin ຕໍ່ມາໄດ້ຮັບແຖວ, ມັນແມ່ນແຖວເຕັມທີ່ປະກອບດ້ວຍສິ່ງພິເສດທັງຫມົດ
ຖັນ, ຖ້າມີ, ເພີ່ມໃສ່ທ້າຍ.
is_archivable(ແຖວ => \@row)
ວິທີການນີ້ຖືກເອີ້ນສໍາລັບແຕ່ລະແຖວເພື່ອກໍານົດວ່າມັນເປັນບ່ອນເກັບມ້ຽນ. ນີ້
ໃຊ້ກັບ "--source". ການໂຕ້ຖຽງແມ່ນແຖວຕົວມັນເອງ, ເປັນ arrayref. ຖ້າ
ວິທີການກັບຄືນຄວາມຈິງ, ແຖວຈະຖືກເກັບໄວ້; ຖ້າບໍ່ດັ່ງນັ້ນມັນຈະຖືກຂ້າມ.
ການຂ້າມແຖວເພີ່ມຄວາມສັບສົນສໍາລັບດັດສະນີທີ່ບໍ່ຊ້ໍາກັນ. ປົກກະຕິ pt-archiver ໃຊ້ a
WHERE clause ອອກແບບມາເພື່ອແນເປົ້າໃສ່ແຖວທີ່ປະມວນຜົນສຸດທ້າຍເປັນບ່ອນເລີ່ມການສະແກນ
ສໍາລັບຄໍາຖະແຫຼງການ SELECT ຕໍ່ໄປ. ຖ້າທ່ານໄດ້ຂ້າມແຖວໂດຍການສົ່ງຄືນ false ຈາກ
is_archivable(), pt-archiver ສາມາດເຂົ້າໄປໃນ loop infinite ເພາະວ່າແຖວຍັງຄົງຢູ່
ມີຢູ່. ດັ່ງນັ້ນ, ເມື່ອທ່ານລະບຸ plugin ສໍາລັບການໂຕ້ຖຽງ "--source", pt-archiver
ຈະປ່ຽນຂໍ້ WHERE ຂອງມັນເລັກນ້ອຍ. ແທນທີ່ຈະເລີ່ມຕົ້ນທີ່ "ໃຫຍ່ກວ່າຫຼືເທົ່າທຽມກັນ
ກັບ" ແຖວທີ່ປຸງແຕ່ງສຸດທ້າຍ, ມັນຈະເລີ່ມຕົ້ນ "ໃຫຍ່ກວ່າຢ່າງເຂັ້ມງວດ." ນີ້ຈະເຮັດວຽກ
ປັບຄ່າໃນດັດຊະນີທີ່ເປັນເອກະລັກເຊັ່ນ: ລະຫັດຫຼັກ, ແຕ່ມັນອາດຈະຂ້າມແຖວ (ປ່ອຍໃຫ້ຂຸມ) ເປີດ
ດັດຊະນີທີ່ບໍ່ເປັນເອກະລັກ ຫຼືເມື່ອຕັ້ງຊັນຂຶ້ນພຽງແຕ່ຖັນທໍາອິດຂອງດັດຊະນີ.
"pt-archiver" ຈະປ່ຽນປະໂຫຍກໃນລັກສະນະດຽວກັນຖ້າທ່ານລະບຸ "--no-delete",
ເນື່ອງຈາກວ່າອີກເທື່ອຫນຶ່ງ loop infinite ເປັນໄປໄດ້.
ຖ້າທ່ານລະບຸຕົວເລືອກ "--bulk-delete" ແລະສົ່ງຄືນ false ຈາກວິທີການນີ້,
"pt-archiver" ອາດຈະບໍ່ເຮັດສິ່ງທີ່ທ່ານຕ້ອງການ. ແຖວຈະບໍ່ຖືກເກັບໄວ້, ແຕ່ມັນຈະເປັນ
ຖືກລຶບແລ້ວ, ເນື່ອງຈາກການລຶບເປັນຊຸດເຮັດວຽກຢູ່ໃນຂອບເຂດຂອງແຖວ ແລະບໍ່ຮູ້ວ່າແຖວໃດ
ປລັກອິນຖືກເລືອກເພື່ອຮັກສາ.
ຖ້າທ່ານລະບຸຕົວເລືອກ "--bulk-insert", ມູນຄ່າກັບຄືນຂອງວິທີການນີ້ຈະມີອິດທິພົນ
ບໍ່ວ່າແຖວຈະຖືກຂຽນໃສ່ໄຟລ໌ຊົ່ວຄາວສໍາລັບການແຊກຫຼາຍ, ດັ່ງນັ້ນການແຊກຫຼາຍ
ຈະເຮັດວຽກຕາມທີ່ຄາດໄວ້. ແນວໃດກໍ່ຕາມ, ການໃສ່ຫຼາຍອັນຮຽກຮ້ອງໃຫ້ມີການລຶບຫຼາຍ.
before_delete(ແຖວ => \@row)
ວິທີການນີ້ຖືກເອີ້ນສໍາລັບແຕ່ລະແຖວກ່ອນທີ່ມັນຈະຖືກລຶບອອກ. ນີ້ໃຊ້ພຽງແຕ່ກັບ
"--ແຫຼ່ງ". ນີ້ແມ່ນສະຖານທີ່ທີ່ດີສໍາລັບທ່ານທີ່ຈະຈັດການກັບການເພິ່ງພາອາໄສ, ເຊັ່ນການລຶບ
ສິ່ງທີ່ຕ່າງປະເທດກົດໃສ່ແຖວທີ່ເຈົ້າກຳລັງຈະລຶບ. ທ່ານຍັງສາມາດໃຊ້
ນີ້ເພື່ອເກັບຄືນຕາຕະລາງທີ່ຂຶ້ນກັບທັງໝົດ.
ວິທີການ plugin ນີ້ຖືກເອີ້ນວ່າເຖິງແມ່ນວ່າ "--no-delete" ຈະຖືກມອບໃຫ້, ແຕ່ບໍ່ແມ່ນຖ້າ
"--bulk-delete" ແມ່ນໃຫ້.
before_bulk_delete(first_row => \@row, last_row => \@row)
ວິທີນີ້ເອີ້ນວ່າກ່ອນການລຶບເປັນຈຳນວນຫຼາຍຈະຖືກປະຕິບັດ. ມັນຄ້າຍຄືກັນກັບ
ວິທີການ "before_delete", ຍົກເວັ້ນການໂຕ້ຖຽງຂອງມັນແມ່ນແຖວທໍາອິດແລະສຸດທ້າຍຂອງໄລຍະ
ຈະຖືກລຶບ. ມັນຖືກເອີ້ນວ່າເຖິງແມ່ນວ່າ "--no-delete" ຈະຖືກມອບໃຫ້.
before_insert(row => \@row)
ວິທີການນີ້ຖືກເອີ້ນສໍາລັບແຕ່ລະແຖວກ່ອນທີ່ຈະໃສ່ມັນ. ນີ້ໃຊ້ພຽງແຕ່ກັບ
"--dest". ທ່ານສາມາດນໍາໃຊ້ນີ້ເພື່ອແຊກແຖວເຂົ້າໄປໃນຕາຕະລາງຫຼາຍ, ບາງທີອາດມີ
ຢູ່ໃນຂໍ້ທີ່ຊໍ້າກັນ ອັບເດດປຸ່ມເພື່ອສ້າງຕາຕະລາງສະຫຼຸບໃນຄັງຂໍ້ມູນ.
ວິທີການນີ້ບໍ່ໄດ້ຖືກເອີ້ນຖ້າ "--bulk-insert" ຖືກມອບໃຫ້.
before_bulk_insert(first_row => \@row, last_row => \@row, filename =>
bulk_insert_filename)
ວິທີການນີ້ເອີ້ນວ່າພຽງແຕ່ກ່ອນທີ່ຈະໃສ່ຫຼາຍຈະຖືກປະຕິບັດ. ມັນຄ້າຍຄືກັນກັບ
ວິທີການ "before_insert", ຍົກເວັ້ນການໂຕ້ຖຽງຂອງມັນແມ່ນແຖວທໍາອິດແລະສຸດທ້າຍຂອງໄລຍະ
ທີ່ຈະຖືກລຶບອອກ.
custom_sth(ແຖວ => \@row, sql => $sql)
ວິທີການນີ້ເອີ້ນວ່າພຽງແຕ່ກ່ອນທີ່ຈະໃສ່ແຖວ, ແຕ່ຫຼັງຈາກ ".before_insert()". ມັນ
ອະນຸຍາດໃຫ້ປລັກອິນເພື່ອລະບຸຄໍາຖະແຫຼງ "INSERT" ທີ່ແຕກຕ່າງກັນຖ້າຕ້ອງການ. ກັບຄືນ
ຄ່າ (ຖ້າມີ) ຄວນເປັນຕົວຈັດການຄຳຖະແຫຼງ DBI. ພາລາມິເຕີ "sql" ແມ່ນຂໍ້ຄວາມ SQL
ໃຊ້ເພື່ອກະກຽມຄໍາສັ່ງ "INSERT" ເລີ່ມຕົ້ນ. ວິທີການນີ້ບໍ່ໄດ້ເອີ້ນວ່າຖ້າຫາກວ່າທ່ານ
ລະບຸ "--bulk-insert".
ຖ້າບໍ່ມີຄ່າຖືກສົ່ງຄືນ, ຕົວຈັດການຖະແຫຼງການ "INSERT" ເລີ່ມຕົ້ນຖືກໃຊ້.
ວິທີການນີ້ໃຊ້ກັບ plugin ທີ່ລະບຸໄວ້ສໍາລັບ "--dest", ດັ່ງນັ້ນຖ້າ plugin ຂອງເຈົ້າບໍ່ແມ່ນ
ເຮັດສິ່ງທີ່ທ່ານຄາດຫວັງ, ກວດເບິ່ງວ່າທ່ານໄດ້ກໍານົດມັນສໍາລັບຈຸດຫມາຍປາຍທາງແລະບໍ່ແມ່ນ
ແຫຼ່ງ.
custom_sth_bulk(first_row => \@row, last_row => \@row, sql => $sql, filename =>
$bulk_insert_filename)
ຖ້າທ່ານໄດ້ລະບຸ "--bulk-insert", ວິທີການນີ້ເອີ້ນວ່າກ່ອນ bulk
ໃສ່, ແຕ່ຫຼັງຈາກ "before_bulk_insert()", ແລະການໂຕ້ຖຽງແມ່ນແຕກຕ່າງກັນ.
ຄ່າຕອບແທນຂອງວິທີການນີ້ແມ່ນຄ້າຍຄືກັນກັບ "custom_sth()"ວິທີການ.
after_finish()
ວິທີການນີ້ເອີ້ນວ່າຫຼັງຈາກ pt-archiver ອອກຈາກ loop archiving, commits ຖານຂໍ້ມູນທັງຫມົດ
handles, ປິດ "--file", ແລະພິມສະຖິຕິສຸດທ້າຍ, ແຕ່ກ່ອນທີ່ຈະດໍາເນີນການ pt-archiver
ວິເຄາະ ຫຼື ປັບແຕ່ງ (ເບິ່ງ "--analyze" ແລະ "--optimize").
ຖ້າທ່ານລະບຸ plugin ສໍາລັບທັງ "--source" ແລະ "--dest", pt-archiver constructs, ໂທຫາ.
before_begin(), ແລະໂທ after_finish() ໃນສອງ plugins ໃນຄໍາສັ່ງ "--source",
"--dest".
pt-archiver ສົມມຸດວ່າມັນຄວບຄຸມການເຮັດທຸລະກໍາ, ແລະ plugin ຈະບໍ່ເຮັດຫຼືມ້ວນ.
ກັບຄືນຕົວຈັດການຖານຂໍ້ມູນ. ການຈັດການຖານຂໍ້ມູນທີ່ສົ່ງກັບຕົວສ້າງ plugin ຂອງແມ່ນ
ການຈັດການດຽວກັນ pt-archiver ໃຊ້ຕົວມັນເອງ. ຈົ່ງຈື່ໄວ້ວ່າ "--source" ແລະ "--dest" ແມ່ນແຍກຕ່າງຫາກ
ມືຈັບ.
ໂມດູນຕົວຢ່າງອາດຈະເບິ່ງຄືວ່ານີ້:
ຊຸດຂອງຂ້ອຍ::ໂມດູນ;
ຍ່ອຍໃຫມ່ {
ຂອງຂ້ອຍ ( $class, %args ) = @_;
ສົ່ງຄືນພອນ(\%args, $class);
}
sub before_begin {
ຂອງຂ້ອຍ ($self, %args ) = @_;
# ບັນທຶກຊື່ຖັນໄວ້ພາຍຫຼັງ
$self->{cols} = $args{cols};
}
sub is_archivable {
ຂອງຂ້ອຍ ($self, %args ) = @_;
# ເຮັດບາງເຫດຜົນຂັ້ນສູງດ້ວຍ $args{row}
return 1
}
sub before_delete {} # ບໍ່ເຮັດຫຍັງ
sub before_insert {} # ບໍ່ເຮັດຫຍັງ
sub custom_sth {} # ບໍ່ປະຕິບັດ
sub after_finish {} # ບໍ່ເຮັດຫຍັງເລີຍ
1;
ENVIRONMENT
ຕົວແປສະພາບແວດລ້ອມ "PTDEBUG" ເປີດໃຊ້ຜົນການແກ້ບັນຫາ verbose ໄປຫາ STDERR. ເພື່ອເປີດໃຊ້ງານ
debugging ແລະເກັບກໍາຜົນຜະລິດທັງຫມົດໄປຍັງໄຟລ໌, ດໍາເນີນການເຄື່ອງມືເຊັ່ນ:
PTDEBUG=1 pt-archiver ... > FILE 2 >&1
ຈົ່ງລະວັງ: ການດີບັ໊ກຜົນອອກແມ່ນ voluminous ແລະສາມາດສ້າງຜົນຜະລິດຫຼາຍ megabytes.
SYSTEM ສິ່ງທີ່ຕ້ອງມີ
ທ່ານຕ້ອງການ Perl, DBI, DBD::mysql, ແລະບາງແພັກເກັດຫຼັກທີ່ຄວນຈະຖືກຕິດຕັ້ງຢູ່ໃນໃດກໍ່ຕາມ.
ສະບັບໃຫມ່ທີ່ສົມເຫດສົມຜົນຂອງ Perl.
ໃຊ້ pt-archiverp ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net