ນີ້ແມ່ນຄໍາສັ່ງ mysqlbinlog ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
mysqlbinlog - ປະໂຫຍດສໍາລັບການປຸງແຕ່ງໄຟລ໌ບັນທຶກສອງ
ສະຫຼຸບສັງລວມ
mysqlbinlog [ທາງເລືອກ] log_file ...
ລາຍລະອຽດ
ບັນທຶກຖານສອງຂອງເຊີບເວີປະກອບດ້ວຍໄຟລ໌ທີ່ມີ “ເຫດການ” ທີ່ອະທິບາຍການດັດແປງ
ກັບເນື້ອໃນຖານຂໍ້ມູນ. ເຊີບເວີຂຽນໄຟລ໌ເຫຼົ່ານີ້ໃນຮູບແບບຖານສອງ. ເພື່ອສະແດງຂອງພວກເຂົາ
ເນື້ອໃນໃນຮູບແບບຂໍ້ຄວາມ, ການນໍາໃຊ້ mysqlbinlog ປະໂຫຍດ. ນອກນັ້ນທ່ານຍັງສາມາດນໍາໃຊ້ mysqlbinlog to
ສະແດງເນື້ອໃນຂອງໄຟລ໌ບັນທຶກ relay ລາຍລັກອັກສອນໂດຍເຄື່ອງແມ່ຂ່າຍສໍາລອງໃນການຕັ້ງຄ່າ replication
ເນື່ອງຈາກວ່າບັນທຶກການຖ່າຍທອດມີຮູບແບບດຽວກັນກັບບັນທຶກຖານສອງ. ບັນທຶກຖານສອງແລະບັນທຶກ relay ແມ່ນ
ໄດ້ສົນທະນາຕື່ມອີກໃນພາກທີ 5.2.4, "ບັນທຶກຖານສອງ", ແລະພາກທີ 17.2.2, "ການຈໍາລອງແບບຈໍາລອງ"
Relay ແລະບັນທຶກສະຖານະພາບ”.
ຂໍ mysqlbinlog ເຊັ່ນນີ້:
ຫອຍ> mysqlbinlog [ທາງເລືອກໃນການ] log_file ...
ຕົວຢ່າງ, ເພື່ອສະແດງເນື້ອໃນຂອງໄຟລ໌ບັນທຶກຄູ່ທີ່ມີຊື່ວ່າ binlog.000003, ໃຫ້ໃຊ້ອັນນີ້.
ຄໍາສັ່ງ:
ຫອຍ> mysqlbinlog binlog.0000003
ຜົນໄດ້ຮັບປະກອບມີເຫດການທີ່ມີຢູ່ໃນ binlog.000003. ສໍາລັບການບັນທຶກທີ່ອີງໃສ່ຄໍາຖະແຫຼງການ, ເຫດການ
ຂໍ້ມູນປະກອບມີຄໍາສັ່ງ SQL, ID ຂອງເຄື່ອງແມ່ຂ່າຍທີ່ມັນໄດ້ຖືກປະຕິບັດ, ໄດ້
timestamp ໃນເວລາທີ່ຄໍາຖະແຫຼງການໄດ້ຖືກປະຕິບັດ, ມັນໃຊ້ເວລາຫຼາຍປານໃດ, ແລະອື່ນໆ. ສໍາລັບ
ການບັນທຶກໂດຍອີງໃສ່ແຖວ, ເຫດການຊີ້ໃຫ້ເຫັນການປ່ຽນແປງແຖວແທນທີ່ຈະເປັນຄໍາຖະແຫຼງ SQL. ເບິ່ງ
ພາກທີ 17.1.2, “ຮູບແບບການຈໍາລອງ”, ສໍາລັບຂໍ້ມູນກ່ຽວກັບຮູບແບບການບັນທຶກ.
ເຫດການແມ່ນນຳໜ້າໂດຍຄຳເຫັນສ່ວນຫົວທີ່ໃຫ້ຂໍ້ມູນເພີ່ມເຕີມ. ຍົກຕົວຢ່າງ:
#ຢູ່ທີ່141
#100309 9:28:36 server id 123 end_log_pos 245
thread_id=3350 exec_time=11 error_code=0
ໃນແຖວທໍາອິດ, ຕົວເລກຕໍ່ໄປນີ້ຊີ້ໃຫ້ເຫັນເຖິງການຊົດເຊີຍໄຟລ໌, ຫຼືເລີ່ມຕົ້ນ
ຕຳແໜ່ງ, ຂອງເຫດການໃນແຟ້ມບັນທຶກຖານສອງ.
ແຖວທີສອງເລີ່ມຕົ້ນດ້ວຍວັນທີແລະເວລາທີ່ຊີ້ບອກເວລາທີ່ຄໍາຖະແຫຼງການເລີ່ມຕົ້ນຢູ່ໃນ
ເຊີບເວີບ່ອນທີ່ເຫດການເກີດຂຶ້ນ. ສໍາລັບການຈໍາລອງ, ເວລານີ້ແມ່ນຂະຫຍາຍພັນໄປສໍາລັບສໍາລັບການ
ເຊີບເວີ. server id ແມ່ນຄ່າ server_id ຂອງເຊີບເວີທີ່ເຫດການເກີດ.
end_log_pos ຊີ້ບອກບ່ອນທີ່ເຫດການຕໍ່ໄປເລີ່ມຕົ້ນ (ນັ້ນແມ່ນ, ມັນແມ່ນຕໍາແຫນ່ງສິ້ນສຸດຂອງ
ເຫດການປະຈຸບັນ + 1). thread_id ຊີ້ບອກວ່າກະທູ້ໃດປະຕິບັດເຫດການ. exec_time ແມ່ນ
ເວລາທີ່ໃຊ້ໃນການປະຕິບັດເຫດການ, ຢູ່ໃນເຄື່ອງແມ່ຂ່າຍຕົ້ນສະບັບ. ກ່ຽວກັບທາດ, ມັນແມ່ນຄວາມແຕກຕ່າງ
ຂອງເວລາການປະຫານຊີວິດສຸດທ້າຍຂອງສໍາລອງລົບກັບເວລາເລີ່ມຕົ້ນຂອງການປະຕິບັດຂອງແມ່ບົດ.
ຄວາມແຕກຕ່າງທີ່ເຮັດໜ້າທີ່ເປັນຕົວຊີ້ບອກເຖິງການຈຳລອງການຈຳລອງຢູ່ເບື້ອງຫຼັງແມ່ບົດຫຼາຍເທົ່າໃດ.
error_code ຊີ້ບອກຜົນໄດ້ຮັບຈາກການປະຕິບັດເຫດການ. ສູນຫມາຍຄວາມວ່າບໍ່ມີຂໍ້ຜິດພາດ
ເກີດຂື້ນ.
ຫມາຍເຫດ
ໃນເວລາທີ່ການນໍາໃຊ້ກຸ່ມເຫດການ, ໄຟລ໌ offsets ຂອງເຫດການອາດຈະໄດ້ຮັບການຈັດກຸ່ມຮ່ວມກັນແລະ
ຄວາມຄິດເຫັນຂອງເຫດການອາດຈະຖືກຈັດກຸ່ມເຂົ້າກັນ. ຢ່າຜິດພາດເຫດການກຸ່ມເຫຼົ່ານີ້ສໍາລັບ
ການຊົດເຊີຍໄຟລ໌ເປົ່າ.
ຜົນໄດ້ຮັບຈາກ mysqlbinlog ສາມາດຖືກປະຕິບັດຄືນໃຫມ່ (ຕົວຢ່າງ, ໂດຍໃຊ້ມັນເປັນການປ້ອນຂໍ້ມູນ
mysql) ເພື່ອເຮັດຄືນຄໍາຖະແຫຼງທີ່ຢູ່ໃນບັນທຶກ. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການດໍາເນີນງານການຟື້ນຟູຫຼັງຈາກ a
ເຊີບເວີ crash. ສໍາລັບຕົວຢ່າງການນໍາໃຊ້ອື່ນໆ, ເບິ່ງການສົນທະນາຕໍ່ມາໃນພາກນີ້ແລະໃນ
ພາກທີ 7.5, “ຈຸດໃນເວລາ (ເພີ່ມເຕີມ) ການຟື້ນຕົວໂດຍການນໍາໃຊ້ບັນທຶກຖານສອງ”.
ໂດຍປົກກະຕິ, ເຈົ້າໃຊ້ mysqlbinlog ເພື່ອອ່ານໄຟລ໌ບັນທຶກຖານສອງໂດຍກົງແລະນໍາໃຊ້ພວກມັນກັບ
ເຊີບເວີ MySQL ທ້ອງຖິ່ນ. ມັນຍັງສາມາດອ່ານບັນທຶກຖານສອງຈາກເຄື່ອງແມ່ຂ່າຍຫ່າງໄກສອກຫຼີກໂດຍໃຊ້
ໄດ້ --read-from-remote-server ທາງເລືອກ. ເພື່ອອ່ານບັນທຶກຖານສອງໄລຍະໄກ, ຕົວກໍານົດການການເຊື່ອມຕໍ່
ທາງເລືອກສາມາດຖືກມອບໃຫ້ເພື່ອຊີ້ບອກວິທີການເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍ. ທາງເລືອກເຫຼົ່ານີ້ແມ່ນ -ເຈົ້າພາບ,
-ລະຫັດຜ່ານ, --ພອດ, -- ພິທີການ, --ຊັອກເກັດ, ແລະ -ຜູ້ໃຊ້; ພວກເຂົາເຈົ້າໄດ້ຖືກລະເລີຍຍົກເວັ້ນເວລາທີ່ທ່ານ
ຍັງໃຊ້ --read-from-remote-server ທາງເລືອກ.
mysqlbinlog ສະຫນັບສະຫນູນທາງເລືອກດັ່ງຕໍ່ໄປນີ້, ທີ່ສາມາດໄດ້ຮັບການລະບຸໄວ້ໃນບັນຊີຄໍາສັ່ງຫຼື
ໃນກຸ່ມ [mysqlbinlog] ແລະ [ລູກຄ້າ] ຂອງໄຟລ໌ທາງເລືອກ. ສໍາລັບຂໍ້ມູນກ່ຽວກັບທາງເລືອກ
ໄຟລ໌ທີ່ໃຊ້ໂດຍໂຄງການ MySQL, ເບິ່ງພາກ 4.2.6, "ການນໍາໃຊ້ໄຟລ໌ທາງເລືອກ".
· - ຊ່ວຍ, -?
ສະແດງຂໍ້ຄວາມຊ່ວຍເຫຼືອ ແລະອອກ.
· --base64-output=ມູນຄ່າ
ຕົວເລືອກນີ້ກໍານົດເວລາທີ່ເຫດການຄວນຈະຖືກສະແດງເຂົ້າລະຫັດເປັນ base-64 strings
ໃຊ້ BINLOG ຄໍາຖະແຫຼງການ. ຕົວເລືອກມີຄ່າທີ່ອະນຸຍາດເຫຼົ່ານີ້ (ບໍ່ແມ່ນຕົວພິມນ້ອຍໃຫຍ່):
· AUTO ("ອັດຕະໂນມັດ") ຫຼື UNSPEC ("ບໍ່ໄດ້ລະບຸ") ສະແດງຄໍາຖະແຫຼງ BINLOG
ອັດຕະໂນມັດເມື່ອມີຄວາມຈໍາເປັນ (ນັ້ນແມ່ນ, ສໍາລັບເຫດການຄໍາອະທິບາຍຮູບແບບແລະແຖວ
ເຫດການ). ຖ້າບໍ່ມີ --base64-ຜົນຜະລິດ ທາງເລືອກແມ່ນໄດ້ຮັບ, ຜົນກະທົບແມ່ນຄືກັນກັບ
--base64-output=ອັດຕະໂນມັດ.
ຫມາຍເຫດ
ການສະແດງ BINLOG ອັດຕະໂນມັດແມ່ນພຶດຕິກໍາທີ່ປອດໄພເທົ່ານັ້ນຖ້າທ່ານຕັ້ງໃຈໃຊ້
ຜົນຜະລິດຂອງ mysqlbinlog ເພື່ອປະຕິບັດເນື້ອໃນໄຟລ໌ບັນທຶກຖານສອງຄືນໃໝ່. ທາງເລືອກອື່ນ
ຄ່າແມ່ນມີຈຸດປະສົງພຽງແຕ່ສໍາລັບການ debugging ຫຼືການທົດສອບຈຸດປະສົງເນື່ອງຈາກວ່າພວກເຂົາເຈົ້າອາດຈະ
ຜະລິດຜົນຜະລິດທີ່ບໍ່ລວມທຸກເຫດການໃນຮູບແບບທີ່ສາມາດປະຕິບັດໄດ້.
· ບໍ່ເຄີຍເຮັດໃຫ້ຄໍາຖະແຫຼງ BINLOG ບໍ່ສະແດງ. mysqlbinlog ອອກດ້ວຍ
ຂໍ້ຜິດພາດຖ້າພົບເຫດການແຖວທີ່ຕ້ອງຖືກສະແດງໂດຍໃຊ້ BINLOG.
· DECODE-ROWS ກໍານົດເປັນ mysqlbinlog ທີ່ເຈົ້າຕັ້ງໃຈໃຫ້ເຫດການແຖວຖືກຖອດລະຫັດ
ແລະສະແດງເປັນຄໍາຖະແຫຼງ SQL ທີ່ໄດ້ສະແດງຄວາມຄິດເຫັນໂດຍການລະບຸ -- verbose ທາງເລືອກ.
ເຊັ່ນດຽວກັນກັບ ບໍ່ເຄີຍ, DECODE-ROWS ສະກັດກັ້ນການສະແດງຄໍາຖະແຫຼງ BINLOG, ແຕ່ບໍ່ຄືກັບ NEVER,
ມັນບໍ່ໄດ້ອອກໂດຍມີຄວາມຜິດພາດຖ້າຫາກວ່າເຫດການແຖວຖືກພົບເຫັນ.
ຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນຜົນກະທົບຂອງ --base64-ຜົນຜະລິດ ແລະ -- verbose ຢູ່ໃນເຫດການແຖວ
ຜົນຜະລິດ, ເບິ່ງພາກສ່ວນທີ່ເອີ້ນວ່າ "MYSQLBINLOG ROW EVENT DISPLAY".
· --bind-address=ip_address
ໃນຄອມພິວເຕີທີ່ມີການໂຕ້ຕອບເຄືອຂ່າຍຫຼາຍ, ໃຊ້ຕົວເລືອກນີ້ເພື່ອເລືອກອັນໃດ
ການໂຕ້ຕອບເພື່ອໃຊ້ສໍາລັບການເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍ MySQL.
ທາງເລືອກນີ້ໄດ້ຮັບການສະຫນັບສະຫນູນເລີ່ມຕົ້ນດ້ວຍ MySQL 5.6.1.
· --binlog-row-event-max-size=N
┌──────────────────────── ┬─────────────────── ────────────────┐
│ເສັ້ນ ຄຳ ສັ່ງ ຮູບແບບ │ --binlog-row-event-max-size=# │
├──────────────────────────────────────────────── ────────────────┤
││ ອະນຸຍາດ ມູນຄ່າ │
│ ├──────────────────── ┬────────────────────
││ ເວທີ ບິດ ເລືອກຂະຫນາດ │ 64 │
│ ├─────────────────── ┼─────────────────────
││ ປະເພດ │ ຕົວເລກ │
│ ├─────────────────── ┼─────────────────────
││ ມາດຕະຖານ │ 4294967040 │
│ ├─────────────────── ┼─────────────────────
││ min ມູນຄ່າ │ 256 │
│ ├─────────────────── ┼─────────────────────
││ ສູງສຸດທີ່ເຄຍ ມູນຄ່າ │ 18446744073709547520 │
└─────────────────────── ┴─────────────────── ────────────────┘
ລະບຸຂະໜາດສູງສຸດຂອງເຫດການບັນທຶກຖານສອງທີ່ອີງໃສ່ແຖວ, ເປັນໄບຕ໌. ແຖວຖືກຈັດເປັນກຸ່ມ
ເຂົ້າໄປໃນເຫດການທີ່ນ້ອຍກວ່າຂະຫນາດນີ້ຖ້າເປັນໄປໄດ້. ຄ່າຄວນເປັນຄູນຂອງ 256.
ຄ່າເລີ່ມຕົ້ນແມ່ນ 4GB.
· --character-sets-dir=ເສັ້ນທາງ
ໄດເລກະທໍລີທີ່ຊຸດຕົວອັກສອນຖືກຕິດຕັ້ງ. ເບິ່ງພາກທີ 10.5, “ຊຸດຕົວອັກສອນ
ການຕັ້ງຄ່າ”.
· --connection-server-id=server_id
ຕົວເລືອກນີ້ຖືກໃຊ້ເພື່ອທົດສອບເຊີບເວີ MySQL ເພື່ອຮອງຮັບ BINLOG_DUMP_NON_BLOCK
ທຸງການເຊື່ອມຕໍ່, ເຊິ່ງຖືກລົບອອກໂດຍບໍ່ໄດ້ຕັ້ງໃຈໃນ MySQL 5.6.5, ແລະຟື້ນຟູໃນ MySQL
5.6.20 (ບັກ #18000079, ບັກ #71178). ມັນບໍ່ຈໍາເປັນສໍາລັບການດໍາເນີນງານປົກກະຕິ.
ຄ່າເລີ່ມຕົ້ນທີ່ມີປະສິດທິພາບ ແລະຄ່າຕໍ່າສຸດສໍາລັບຕົວເລືອກນີ້ຂຶ້ນກັບວ່າ mysqlbinlog
ແລ່ນຢູ່ໃນໂໝດປິດກັ້ນ ຫຼືໂໝດບໍ່ບລັອກ. ເມື່ອໃດ mysqlbinlog ແມ່ນດໍາເນີນການໃນການສະກັດ
ຮູບແບບ, ຄ່າເລີ່ມຕົ້ນ (ແລະຕໍາ່ສຸດທີ່) ແມ່ນ 1; ໃນເວລາທີ່ດໍາເນີນການໃນຮູບແບບທີ່ບໍ່ແມ່ນການບລັອກ, ຄ່າເລີ່ມຕົ້ນ
(ແລະຕໍາ່ສຸດທີ່) ຄ່າແມ່ນ 0.
ຕົວເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.20.
· --ຖານຂໍ້ມູນ=db_name, -d db_name
ທາງເລືອກນີ້ເຮັດໃຫ້ເກີດ mysqlbinlog ເພື່ອສົ່ງອອກຂໍ້ມູນຈາກບັນທຶກຖານສອງ (ບັນທຶກທ້ອງຖິ່ນເທົ່ານັ້ນ)
ທີ່ເກີດຂື້ນໃນຂະນະທີ່ db_name ຖືກເລືອກເປັນຖານຂໍ້ມູນເລີ່ມຕົ້ນໂດຍ USE.
ໄດ້ --ຖານຂໍ້ມູນ ທາງເລືອກສໍາລັບການ mysqlbinlog ແມ່ນຄ້າຍຄືກັນກັບ --binlog-do-db ທາງເລືອກສໍາລັບການ
mysqld, ແຕ່ສາມາດຖືກນໍາໃຊ້ເພື່ອກໍານົດພຽງແຕ່ຫນຶ່ງຖານຂໍ້ມູນ. ຖ້າ --ຖານຂໍ້ມູນ ແມ່ນໃຫ້ຫຼາຍ
ເວລາ, ພຽງແຕ່ຕົວຢ່າງສຸດທ້າຍຖືກນໍາໃຊ້.
ຜົນກະທົບຂອງທາງເລືອກນີ້ແມ່ນຂຶ້ນກັບວ່າບັນທຶກທີ່ອີງໃສ່ຄໍາຖະແຫຼງການຫຼືແຖວ
ຮູບແບບແມ່ນຖືກນໍາໃຊ້, ໃນລັກສະນະດຽວກັນກັບຜົນກະທົບຂອງ --binlog-do-db ຂຶ້ນກັບວ່າ
ນຳໃຊ້ການບັນທຶກຕາມຄຳຖະແຫຼງ ຫຼື ແຖວຕາມລຳດັບ.
ອີງຕາມການຖະແຫຼງການ ການຕັດໄມ້. ໄດ້ --ຖານຂໍ້ມູນ ທາງເລືອກເຮັດວຽກດັ່ງຕໍ່ໄປນີ້:
·ໃນຂະນະທີ່ db_name ເປັນຖານຂໍ້ມູນໃນຕອນຕົ້ນ, ຖະແຫຼງການແມ່ນຜົນຜະລິດບໍ່ວ່າຈະເປັນການແກ້ໄຂ
ຕາຕະລາງໃນ db_name ຫຼືຖານຂໍ້ມູນອື່ນ.
· ເວັ້ນ ເສຍ ແຕ່ db_name ຖືກເລືອກເປັນຖານຂໍ້ມູນເລີ່ມຕົ້ນ, ຖະແຫຼງການບໍ່ແມ່ນຜົນໄດ້ຮັບ,
ເຖິງແມ່ນວ່າພວກເຂົາດັດແປງຕາຕະລາງໃນ db_name.
· ມີຂໍ້ຍົກເວັ້ນສຳລັບການສ້າງຖານຂໍ້ມູນ, ແກ້ໄຂຖານຂໍ້ມູນ ແລະ ວາງຖານຂໍ້ມູນ. ໄດ້
ຖານຂໍ້ມູນ ສ້າງ, ປ່ຽນແປງ, or ຫຼຸດລົງ ຖືວ່າເປັນຄ່າເລີ່ມຕົ້ນ
ຖານຂໍ້ມູນໃນເວລາທີ່ກໍານົດວ່າຈະອອກຄໍາຖະແຫຼງການ.
ສົມມຸດວ່າບັນທຶກຖານສອງຖືກສ້າງຂື້ນໂດຍການປະຕິບັດຄໍາຖະແຫຼງການເຫຼົ່ານີ້ໂດຍໃຊ້
ການບັນທຶກທີ່ອີງໃສ່ຄໍາສັ່ງ:
ແຊກເຂົ້າໃນ test.t1 (i) VALUES(100)
ແຊກເຂົ້າໃນ db2.t2 (j) VALUES(200)
ການທົດສອບການນໍາໃຊ້;
ແຊກເຂົ້າໃນ test.t1 (i) VALUES(101)
ແຊກໃສ່ t1 (i) VALUES(102)
ແຊກເຂົ້າໃນ db2.t2 (j) VALUES(201)
ໃຊ້ db2;
ແຊກເຂົ້າໃນ test.t1 (i) VALUES(103)
ແຊກເຂົ້າໃນ db2.t2 (j) VALUES(202)
ແຊກໃສ່ t2 (j) VALUES(203)
mysqlbinlog --database=test ບໍ່ໄດ້ອອກຄໍາຖະແຫຼງການ INSERT ສອງອັນທໍາອິດເພາະວ່າ
ບໍ່ມີຖານຂໍ້ມູນເລີ່ມຕົ້ນ. ມັນອອກຄໍາຖະແຫຼງການ INSERT ສາມຢ່າງດັ່ງຕໍ່ໄປນີ້ USE
ການທົດສອບ, ແຕ່ບໍ່ແມ່ນສາມຄໍາຖະແຫຼງ INSERT ດັ່ງຕໍ່ໄປນີ້ USE db2.
mysqlbinlog --database=db2 ບໍ່ໄດ້ອອກຄໍາຖະແຫຼງການ INSERT ສອງອັນທໍາອິດເພາະວ່າ
ບໍ່ມີຖານຂໍ້ມູນເລີ່ມຕົ້ນ. ມັນບໍ່ໄດ້ອອກຄໍາຖະແຫຼງ INSERT ສາມຕໍ່ໄປນີ້
USE ການທົດສອບ, ແຕ່ອອກຄໍາຖະແຫຼງການ INSERT ສາມດັ່ງຕໍ່ໄປນີ້ USE db2.
ຕາມແຖວ ການຕັດໄມ້. mysqlbinlog ຜົນໄດ້ຮັບພຽງແຕ່ລາຍການທີ່ປ່ຽນຕາຕະລາງທີ່ເປັນຂອງ
db_name. ຖານຂໍ້ມູນເລີ່ມຕົ້ນບໍ່ມີຜົນຕໍ່ເລື່ອງນີ້. ສົມມຸດວ່າບັນທຶກຖານສອງພຽງແຕ່
ອະທິບາຍຖືກສ້າງຂື້ນໂດຍໃຊ້ການບັນທຶກຕາມແຖວແທນທີ່ຈະເປັນການບັນທຶກຕາມຄຳຖະແຫຼງ.
mysqlbinlog --database=test ຜົນໄດ້ຮັບພຽງແຕ່ລາຍການທີ່ດັດແປງ t1 ໃນການທົດສອບ
ຖານຂໍ້ມູນ, ໂດຍບໍ່ຄໍານຶງເຖິງວ່າ USE ຖືກອອກຫຼືຖານຂໍ້ມູນມາດຕະຖານແມ່ນຫຍັງ. ຖ້າ ກ
ເຊີບເວີກໍາລັງແລ່ນດ້ວຍ binlog_format ທີ່ຕັ້ງເປັນ MIXED ແລະທ່ານຕ້ອງການໃຫ້ມັນເປັນໄປໄດ້
ການນໍາໃຊ້ mysqlbinlog ກັບ --ຖານຂໍ້ມູນ ທາງເລືອກ, ທ່ານຕ້ອງຮັບປະກັນວ່າຕາຕະລາງທີ່ມີ
ດັດແກ້ຢູ່ໃນຖານຂໍ້ມູນທີ່ເລືອກໂດຍ USE. (ໂດຍສະເພາະ, ບໍ່ມີຖານຂໍ້ມູນຂ້າມ
ການປັບປຸງຄວນຈະຖືກນໍາໃຊ້.)
ກ່ອນທີ່ຈະ MySQL 5.6.10, the --ຖານຂໍ້ມູນ ທາງເລືອກບໍ່ໄດ້ເຮັດວຽກຢ່າງຖືກຕ້ອງກັບບັນທຶກທີ່ຂຽນ
ໂດຍເຊີບເວີ MySQL ທີ່ເປີດໃຊ້ GTID. (ບັກ #15912728)
· --debug[=debug_options], -# [debug_options]
ຂຽນບັນທຶກການດີບັກ. ປົກກະຕິ debug_options string ແມ່ນ d:t:o,ຊື່ເອກະສານ. ຄ່າເລີ່ມຕົ້ນ
ແມ່ນ d:t:o,/tmp/mysqlbinlog.trace.
· --debug-ກວດ
ພິມຂໍ້ມູນການດີບັ໊ກບາງອັນເມື່ອໂປຣແກຣມອອກ.
· --debug-ຂໍ້ມູນ
ພິມຂໍ້ມູນ debugging ແລະຄວາມຈໍາແລະສະຖິຕິການນໍາໃຊ້ CPU ໃນເວລາທີ່ໂຄງການ
ອອກ.
· --default-auth=plugin
ປລັກອິນການພິສູດຢືນຢັນຝ່າຍລູກຄ້າທີ່ຈະໃຊ້. ເບິ່ງພາກ 6.3.7, “ສຽບໄດ້
ການຢືນຢັນ”.
ຕົວເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.2.
· --defaults-extra-file=ຊື່ເອກະສານ
ອ່ານໄຟລ໌ທາງເລືອກນີ້ຫຼັງຈາກໄຟລ໌ທາງເລືອກທົ່ວໂລກແຕ່ (ຢູ່ໃນ Unix) ກ່ອນຜູ້ໃຊ້
ໄຟລ໌ທາງເລືອກ. ຖ້າໄຟລ໌ບໍ່ມີຢູ່ຫຼືບໍ່ສາມາດເຂົ້າໄດ້, ຂໍ້ຜິດພາດເກີດຂື້ນ.
ຊື່ເອກະສານ ຖືກຕີຄວາມ ໝາຍ ທຽບກັບໄດເລກະທໍລີປະຈຸບັນຖ້າຖືກມອບໃຫ້ເປັນເສັ້ນທາງທີ່ກ່ຽວຂ້ອງ
ຊື່ແທນທີ່ຈະເປັນຊື່ເຕັມ.
· --defaults-file=ຊື່ເອກະສານ
ໃຊ້ພຽງແຕ່ໄຟລ໌ທາງເລືອກທີ່ໃຫ້. ຖ້າໄຟລ໌ບໍ່ມີຫຼືບໍ່ມີ
ບໍ່ສາມາດເຂົ້າເຖິງໄດ້, ຄວາມຜິດພາດເກີດຂຶ້ນ. ຊື່ເອກະສານ ຖືກຕີຄວາມ ໝາຍ ທຽບກັບປະຈຸບັນ
ໄດເລກະທໍລີຖ້າຖືກມອບໃຫ້ເປັນຊື່ເສັ້ນທາງທີ່ກ່ຽວຂ້ອງແທນທີ່ຈະເປັນຊື່ເສັ້ນທາງເຕັມ.
· --defaults-group-suffix=str
ອ່ານບໍ່ພຽງແຕ່ກຸ່ມທາງເລືອກປົກກະຕິ, ແຕ່ຍັງກຸ່ມທີ່ມີຊື່ປົກກະຕິແລະ a
ຕໍ່ທ້າຍຂອງ strທີ່ຢູ່ ຍົກຕົວຢ່າງ, mysqlbinlog ປົກກະຕິອ່ານ [ລູກຄ້າ] ແລະ [mysqlbinlog]
ກຸ່ມ. ຖ້າ --defaults-group-suffix=_other ທາງເລືອກແມ່ນໄດ້ຮັບ, mysqlbinlog ຍັງອ່ານ
ກຸ່ມ [client_other] ແລະ [mysqlbinlog_other].
· --disable-log-bin, -D
ປິດການທໍາງານການບັນທຶກຖານສອງ. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການຫຼີກເວັ້ນການ loop ທີ່ບໍ່ມີທີ່ສິ້ນສຸດຖ້າຫາກວ່າທ່ານນໍາໃຊ້
--to-last-log ທາງເລືອກແລະກໍາລັງສົ່ງຜົນໄດ້ຮັບໄປຫາເຄື່ອງແມ່ຂ່າຍ MySQL ດຽວກັນ. ທາງເລືອກນີ້
ຍັງເປັນປະໂຫຍດໃນເວລາທີ່ການຟື້ນຟູຫຼັງຈາກອຸປະຕິເຫດເພື່ອຫຼີກເວັ້ນການຊ້ໍາກັນຂອງຄໍາຖະແຫຼງທີ່ທ່ານ
ໄດ້ບັນທຶກ.
ທາງເລືອກນີ້ຮຽກຮ້ອງໃຫ້ທ່ານມີສິດທິພິເສດ SUPER. ມັນເຮັດໃຫ້ເກີດ mysqlbinlog to
ລວມເອົາຄໍາຖະແຫຼງການ SET sql_log_bin = 0 ຢູ່ໃນຜົນຜະລິດຂອງມັນເພື່ອປິດການທໍາງານຂອງການບັນທຶກຖານສອງ.
ຜົນຜະລິດທີ່ຍັງເຫຼືອ. ຖະແຫຼງການ SET ແມ່ນບໍ່ມີປະສິດທິພາບເວັ້ນເສຍແຕ່ວ່າທ່ານມີ SUPER
ສິດທິພິເສດ.
· --exclude-gtids=gtid_set
ຫ້າມສະແດງກຸ່ມໃດນຶ່ງທີ່ຢູ່ໃນລາຍການ gtid_set. ເພີ່ມໃນ MySQL 5.6.5.
· --force-if-open, -F
ອ່ານໄຟລ໌ບັນທຶກຖານສອງເຖິງວ່າມັນຈະເປີດຫຼືບໍ່ປິດຢ່າງຖືກຕ້ອງ.
· --force-read, -f
ດ້ວຍທາງເລືອກນີ້, ຖ້າ mysqlbinlog ອ່ານເຫດການບັນທຶກຖານສອງທີ່ມັນບໍ່ຮັບຮູ້,
ມັນພິມຄໍາເຕືອນ, ບໍ່ສົນໃຈເຫດການ, ແລະສືບຕໍ່. ຖ້າບໍ່ມີທາງເລືອກນີ້,
mysqlbinlog ຢຸດຖ້າມັນອ່ານເຫດການດັ່ງກ່າວ.
· --hexdump, -H
ສະແດງການ dump hex ຂອງບັນທຶກໃນຄໍາເຫັນ, ດັ່ງທີ່ອະທິບາຍໃນພາກສ່ວນທີ່ເອີ້ນວ່າ
“MYSQLBINLOG HEX ຮູບແບບການຖິ້ມຂີ້ເຫຍື້ອ”. ຜົນຜະລິດ hex ສາມາດເປັນປະໂຫຍດສໍາລັບການຈໍາລອງ
ການດີບັກ.
· --host=host_name, -h host_name
ເອົາບັນທຶກຖານສອງຈາກເຊີບເວີ MySQL ຢູ່ໃນໂຮດທີ່ໃຫ້.
· --include-gtids=gtid_set
ສະແດງສະເພາະກຸ່ມທີ່ມີລາຍຊື່ຢູ່ໃນ gtid_set. ເພີ່ມໃນ MySQL 5.6.5.
· --local-load=ເສັ້ນທາງ, -l ເສັ້ນທາງ
ກະກຽມໄຟລ໌ຊົ່ວຄາວໃນທ້ອງຖິ່ນສໍາລັບ LOAD DATA INFILE ໃນໄດເລກະທໍລີທີ່ລະບຸ.
ທີ່ສໍາຄັນ
ໄຟລ໌ຊົ່ວຄາວເຫຼົ່ານີ້ບໍ່ໄດ້ຖືກເອົາອອກໂດຍອັດຕະໂນມັດໂດຍ mysqlbinlog ຫຼືອື່ນໆ
ໂຄງການ MySQL.
· --login-path=ຊື່
ອ່ານຕົວເລືອກຈາກເສັ້ນທາງເຂົ້າສູ່ລະບົບທີ່ມີຊື່ໃນໄຟລ໌ເຂົ້າສູ່ລະບົບ .mylogin.cnf. "ເສັ້ນທາງເຂົ້າສູ່ລະບົບ"
ເປັນກຸ່ມທາງເລືອກທີ່ອະນຸຍາດໃຫ້ພຽງແຕ່ຊຸດທາງເລືອກທີ່ຈໍາກັດ: ເຈົ້າພາບ, ຜູ້ໃຊ້, ແລະ
ລະຫັດຜ່ານ. ຄິດວ່າເສັ້ນທາງເຂົ້າສູ່ລະບົບເປັນຊຸດຂອງຄ່າທີ່ຊີ້ໃຫ້ເຫັນເຖິງເຄື່ອງແມ່ຂ່າຍຂອງເຈົ້າພາບແລະ
ຂໍ້ມູນປະຈໍາຕົວສໍາລັບການພິສູດຢືນຢັນກັບເຄື່ອງແມ່ຂ່າຍ. ເພື່ອສ້າງໄຟລ໌ເສັ້ນທາງເຂົ້າສູ່ລະບົບ, ໃຫ້ໃຊ້
ໄດ້ mysql_config_editor ປະໂຫຍດ. ເບິ່ງ mysql_config_editor(1). ທາງເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ
MySQL 5.6.6.
· --ບໍ່ມີຄ່າເລີ່ມຕົ້ນ
ຢ່າອ່ານໄຟລ໌ທາງເລືອກໃດໆ. ຖ້າການເລີ່ມຕົ້ນໂຄງການລົ້ມເຫລວເນື່ອງຈາກການອ່ານທາງເລືອກທີ່ບໍ່ຮູ້ຈັກ
ຈາກໄຟລ໌ທາງເລືອກ, --ບໍ່ມີຄ່າເລີ່ມຕົ້ນ ສາມາດຖືກນໍາໃຊ້ເພື່ອປ້ອງກັນບໍ່ໃຫ້ພວກເຂົາອ່ານ.
ຂໍ້ຍົກເວັ້ນແມ່ນວ່າໄຟລ໌ .mylogin.cnf, ຖ້າມັນມີຢູ່, ຈະຖືກອ່ານໃນທຸກກໍລະນີ. ນີ້
ອະນຸຍາດໃຫ້ລະຫັດຜ່ານທີ່ຈະລະບຸໄວ້ໃນວິທີທີ່ປອດໄພກ່ວາໃນບັນຊີຄໍາສັ່ງເຖິງແມ່ນວ່າໃນເວລາທີ່
--ບໍ່ມີຄ່າເລີ່ມຕົ້ນ ຖືກນໍາໃຊ້. (.mylogin.cnf ຖືກສ້າງຂື້ນໂດຍ mysql_config_editor utility
ເບິ່ງ mysql_config_editor(1).
· --offset=N, -o N
ຂ້າມອັນທໍາອິດ N ລາຍການຢູ່ໃນບັນທຶກ.
· --password[=ລະຫັດຜ່ານ], -p[ລະຫັດຜ່ານ]
ລະຫັດຜ່ານທີ່ຈະໃຊ້ເມື່ອເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍ. ຖ້າທ່ານໃຊ້ແບບຟອມທາງເລືອກສັ້ນ
(-p), ທ່ານ ບໍ່ສາມາດເຮັດໄດ້ ມີຊ່ອງຫວ່າງລະຫວ່າງທາງເລືອກແລະລະຫັດຜ່ານ. ຖ້າຫາກວ່າທ່ານຍົກເວັ້ນ
ລະຫັດຜ່ານ ມູນຄ່າປະຕິບັດຕາມ -ລະຫັດຜ່ານ or -p ທາງເລືອກໃນບັນຊີຄໍາສັ່ງ, mysqlbinlog
ເຕືອນສໍາລັບຫນຶ່ງ.
ການລະບຸລະຫັດຜ່ານໃນແຖວຄຳສັ່ງຄວນຖືວ່າບໍ່ປອດໄພ. ເບິ່ງ
ພາກທີ 6.1.2.1, “ຂໍ້ແນະນຳຜູ້ໃຊ້ສຸດທ້າຍສຳລັບຄວາມປອດໄພລະຫັດຜ່ານ”. ທ່ານສາມາດນໍາໃຊ້ທາງເລືອກ
ໄຟລ໌ເພື່ອຫຼີກເວັ້ນການໃຫ້ລະຫັດຜ່ານຢູ່ໃນເສັ້ນຄໍາສັ່ງ.
· --plugin-dir=ເສັ້ນທາງ
ໄດເລກະທໍລີທີ່ຈະຊອກຫາ plugins. ມັນອາດຈະມີຄວາມຈໍາເປັນທີ່ຈະລະບຸທາງເລືອກນີ້
ຖ້າຫາກວ່າ --default-auth ທາງເລືອກແມ່ນໃຊ້ເພື່ອລະບຸ plugin ການກວດສອບຄວາມຖືກຕ້ອງແຕ່
mysqlbinlog ບໍ່ພົບມັນ. ເບິ່ງພາກ 6.3.7, “ການພິສູດຢືນຢັນແບບສຽບໄດ້”.
ຕົວເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.2.
· --port=port_num, -P port_num
ໝາຍເລກຜອດ TCP/IP ທີ່ຈະໃຊ້ເພື່ອເຊື່ອມຕໍ່ກັບເຊີບເວີທາງໄກ.
· --print-defaults
ພິມຊື່ໂຄງການແລະທາງເລືອກທັງຫມົດທີ່ມັນໄດ້ຮັບຈາກໄຟລ໌ທາງເລືອກ.
· --protocol={TCP|SOCKET|PIPE|MEMORY}
ໂປໂຕຄອນການເຊື່ອມຕໍ່ທີ່ຈະໃຊ້ສໍາລັບການເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍ. ມັນເປັນປະໂຫຍດໃນເວລາທີ່
ຕົວກໍານົດການການເຊື່ອມຕໍ່ອື່ນໆປົກກະຕິຈະເຮັດໃຫ້ protocol ຖືກນໍາໃຊ້ນອກເຫນືອການ
ຫນຶ່ງທີ່ທ່ານຕ້ອງການ. ສໍາລັບລາຍລະອຽດກ່ຽວກັບຄ່າທີ່ອະນຸຍາດ, ເບິ່ງພາກ 4.2.2, “ການເຊື່ອມຕໍ່ກັບ
MySQL Server”.
· -- ດິບ
ໂດຍຕົວຢ່າງ, mysqlbinlog ອ່ານໄຟລ໌ບັນທຶກຖານສອງ ແລະຂຽນເຫດການໃນຮູບແບບຂໍ້ຄວາມ. ໄດ້
-- ດິບ ທາງເລືອກບອກ mysqlbinlog ເພື່ອຂຽນພວກມັນໃນຮູບແບບຖານສອງຂອງພວກມັນ. ການນໍາໃຊ້ຂອງມັນ
ຮຽກຮ້ອງໃຫ້ມີວ່າ --read-from-remote-server ຍັງຖືກໃຊ້ເພາະວ່າໄຟລ໌ຖືກຮ້ອງຂໍ
ຈາກເຊີບເວີ. mysqlbinlog ຂຽນຫນຶ່ງໄຟລ໌ຜົນຜະລິດສໍາລັບແຕ່ລະໄຟລ໌ທີ່ອ່ານຈາກເຄື່ອງແມ່ຂ່າຍ.
ໄດ້ -- ດິບ ທາງເລືອກສາມາດຖືກນໍາໃຊ້ເພື່ອເຮັດໃຫ້ສໍາຮອງຂໍ້ມູນຂອງບັນທຶກຄູ່ຂອງເຄື່ອງແມ່ຂ່າຍໄດ້. ກັບ
--ຢຸດ-ບໍ່ເຄີຍ ທາງເລືອກ, ການສໍາຮອງຂໍ້ມູນແມ່ນ "ດໍາລົງຊີວິດ" ເນື່ອງຈາກວ່າ mysqlbinlog ຍັງຄົງເຊື່ອມຕໍ່ກັບ
ເຊີບເວີ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ໄຟລ໌ຜົນຜະລິດຖືກຂຽນໄວ້ໃນໄດເລກະທໍລີປະຈຸບັນດ້ວຍອັນດຽວກັນ
ຊື່ເປັນໄຟລ໌ບັນທຶກຕົ້ນສະບັບ. ຊື່ໄຟລ໌ຜົນຜະລິດສາມາດຖືກດັດແກ້ໂດຍໃຊ້
--ຜົນໄດ້ຮັບ-ໄຟລ໌ ທາງເລືອກ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງພາກເອີ້ນວ່າ "ການນໍາໃຊ້ MYSQLBINLOG
ເພື່ອສຳຮອງຂໍ້ມູນໄຟລ໌ບັນທຶກຖານສອງ”.
ຕົວເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.0.
· --read-from-remote-master=ປະເພດ
ອ່ານບັນທຶກຖານສອງຈາກເຊີບເວີ MySQL ດ້ວຍ COM_BINLOG_DUMP ຫຼື COM_BINLOG_DUMP_GTID
ຄໍາສັ່ງໂດຍການກໍານົດຄ່າທາງເລືອກເປັນ BINLOG-DUMP-NON-GTIDS ຫຼື
BINLOG-DUMP-GTIDS, ຕາມລໍາດັບ. ຖ້າ --read-from-remote-master=BINLOG-DUMP-GTIDS is
ລວມມີ --exclude-gtids, ການເຮັດທຸລະກໍາສາມາດຖືກກັ່ນຕອງອອກໃນຕົ້ນສະບັບ,
ຫຼີກເວັ້ນການຈະລາຈອນເຄືອຂ່າຍທີ່ບໍ່ຈໍາເປັນ.
ເບິ່ງຄໍາອະທິບາຍສໍາລັບ --read-from-remote-server.
ຕົວເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.5.
· --read-from-remote-server, -R
ອ່ານບັນທຶກຖານສອງຈາກເຊີບເວີ MySQL ແທນທີ່ຈະອ່ານໄຟລ໌ບັນທຶກທ້ອງຖິ່ນ. ໃດ
ທາງເລືອກພາລາມິເຕີການເຊື່ອມຕໍ່ຖືກລະເລີຍເວັ້ນເສຍແຕ່ວ່າທາງເລືອກນີ້ຈະຖືກມອບໃຫ້ເຊັ່ນກັນ. ເຫຼົ່ານີ້
ທາງເລືອກແມ່ນ -ເຈົ້າພາບ, -ລະຫັດຜ່ານ, --ພອດ, -- ພິທີການ, --ຊັອກເກັດ, ແລະ -ຜູ້ໃຊ້.
ຕົວເລືອກນີ້ຮຽກຮ້ອງໃຫ້ເຊີບເວີທາງໄກແລ່ນ. ມັນເຮັດວຽກພຽງແຕ່ສໍາລັບບັນທຶກຖານສອງ
ໄຟລ໌ຢູ່ໃນເຄື່ອງແມ່ຂ່າຍຫ່າງໄກສອກຫຼີກ, ບໍ່ແມ່ນໄຟລ໌ບັນທຶກການຖ່າຍທອດ.
ໃນຖານະເປັນຂອງ MySQL 5.6.5, ທາງເລືອກນີ້ແມ່ນຄ້າຍຄື
--read-from-remote-master=BINLOG-DUMP-NON-GTIDS.
· --result-file=ຊື່, -r ຊື່
ໂດຍບໍ່ມີການ -- ດິບ ທາງເລືອກ, ທາງເລືອກນີ້ຊີ້ໃຫ້ເຫັນໄຟລ໌ທີ່ mysqlbinlog ຂຽນວ່າ
ຜົນຜະລິດຂໍ້ຄວາມ. ກັບ -- ດິບ, mysqlbinlog ຂຽນນຶ່ງໄຟລ໌ຜົນຜະລິດຖານສອງສໍາລັບແຕ່ລະໄຟລ໌ບັນທຶກ
ໂອນຈາກເຄື່ອງແມ່ຂ່າຍ, ຂຽນພວກມັນໂດຍຄ່າເລີ່ມຕົ້ນໃນໄດເລກະທໍລີປະຈຸບັນໂດຍໃຊ້
ຊື່ດຽວກັນກັບໄຟລ໌ບັນທຶກຕົ້ນສະບັບ. ໃນກໍລະນີດັ່ງກ່າວນີ້, ໄດ້ --ຜົນໄດ້ຮັບ-ໄຟລ໌ ຄ່າທາງເລືອກ
ຖືກປະຕິບັດເປັນຄໍານໍາຫນ້າທີ່ດັດແປງຊື່ໄຟລ໌ຜົນຜະລິດ.
· --secure-auth
ຢ່າສົ່ງລະຫັດຜ່ານໄປຫາເຄື່ອງແມ່ຂ່າຍໃນຮູບແບບເກົ່າ (ກ່ອນ 4.1). ນີ້ປ້ອງກັນການເຊື່ອມຕໍ່
ຍົກເວັ້ນເຊີບເວີທີ່ໃຊ້ຮູບແບບລະຫັດຜ່ານໃໝ່ກວ່າ. ຕົວເລືອກນີ້ຖືກເປີດໃຊ້ໂດຍ
ຄ່າເລີ່ມຕົ້ນ; ໃຊ້ --skip-secure-auth ເພື່ອປິດການໃຊ້ງານມັນ. ທາງເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.17.
ຫມາຍເຫດ
ລະຫັດຜ່ານທີ່ໃຊ້ວິທີການ hashing ລ່ວງໜ້າ 4.1 ແມ່ນມີຄວາມປອດໄພໜ້ອຍກວ່າລະຫັດຜ່ານທີ່
ໃຊ້ວິທີການ hashing ລະຫັດຜ່ານພື້ນເມືອງ ແລະຄວນຈະຫຼີກເວັ້ນ. ລະຫັດຜ່ານກ່ອນ 4.1
ໄດ້ຖືກຍົກເລີກ ແລະການສະຫນັບສະຫນູນພວກມັນຈະຖືກລຶບອອກໃນການປ່ອຍ MySQL ໃນອະນາຄົດ. ສໍາລັບ
ຄໍາແນະນໍາການຍົກລະດັບບັນຊີ, ເບິ່ງພາກທີ 6.3.8.3, “ການຍົກຍ້າຍອອກຈາກທາງຫນ້າ 4.1
ລະຫັດຜ່ານ Hashing ແລະ mysql_old_password Plugin”.
· --server-id=id
ສະແດງສະເພາະເຫດການເຫຼົ່ານັ້ນທີ່ສ້າງຂຶ້ນໂດຍເຊີບເວີທີ່ມີ ID ເຊີບເວີໃຫ້.
· --server-id-bits=N
ໃຊ້ພຽງແຕ່ທໍາອິດ N bits ຂອງ server_id ເພື່ອລະບຸເຄື່ອງແມ່ຂ່າຍ. ຖ້າບັນທຶກຖານສອງ
ໄດ້ຖືກຂຽນໂດຍ a mysqld ກັບ server-id-bits ທີ່ຕັ້ງໄວ້ໜ້ອຍກວ່າ 32 ແລະຂໍ້ມູນຜູ້ໃຊ້ຖືກເກັບໄວ້
ໃນນ້ອຍທີ່ສໍາຄັນ, ແລ່ນ mysqlbinlog ກັບ --server-id-bits ຕັ້ງເປັນ 32
ເຮັດໃຫ້ຂໍ້ມູນນີ້ເຫັນໄດ້.
ທາງເລືອກນີ້ແມ່ນສະຫນັບສະຫນູນພຽງແຕ່ສະບັບຂອງ mysqlbinlog ສະຫນອງໃຫ້ກັບ MySQL
ການແຈກຢາຍກຸ່ມ, ຫຼືສ້າງຂຶ້ນຈາກແຫຼ່ງ MySQL Cluster.
· --set-charset=charset_name
ເພີ່ມ SET ຊື່ charset_name ຄໍາຖະແຫຼງທີ່ຜົນໄດ້ຮັບເພື່ອກໍານົດຕົວອັກສອນທີ່ກໍານົດໄວ້
ຖືກນໍາໃຊ້ສໍາລັບການປຸງແຕ່ງໄຟລ໌ບັນທຶກ.
· --shared-memory-base-name=ຊື່
ໃນ Windows, ຊື່ຄວາມຊົງຈໍາທີ່ໃຊ້ຮ່ວມກັນເພື່ອໃຊ້, ສໍາລັບການເຊື່ອມຕໍ່ທີ່ສ້າງຂຶ້ນໂດຍໃຊ້ຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນ
ເຄື່ອງແມ່ຂ່າຍທ້ອງຖິ່ນ. ຄ່າເລີ່ມຕົ້ນແມ່ນ MYSQL. ຊື່ໜ່ວຍຄວາມຈຳທີ່ໃຊ້ຮ່ວມກັນເປັນຕົວພິມນ້ອຍໃຫຍ່.
ເຄື່ອງແມ່ຂ່າຍຕ້ອງໄດ້ຮັບການເລີ່ມຕົ້ນດ້ວຍ --shared-memory ທາງເລືອກທີ່ຈະເປີດໃຊ້ງານຄວາມຈໍາທີ່ແບ່ງປັນ
ການເຊື່ອມຕໍ່.
· -- ຮູບແບບສັ້ນ, -s
ສະແດງພຽງແຕ່ຄໍາຖະແຫຼງທີ່ມີຢູ່ໃນບັນທຶກ, ໂດຍບໍ່ມີການຂໍ້ມູນເພີ່ມເຕີມຫຼື
ເຫດການຕາມແຖວ. ນີ້ແມ່ນສໍາລັບການທົດສອບເທົ່ານັ້ນ, ແລະບໍ່ຄວນໃຊ້ໃນການຜະລິດ
ລະບົບ.
· --skip-gtids[=(true|false)]
ຢ່າສະແດງ GTIDs ໃດໆໃນຜົນຜະລິດ. ນີ້ແມ່ນຈໍາເປັນໃນເວລາທີ່ຂຽນໃສ່ໄຟລ໌ dump
ຈາກໜຶ່ງ ຫຼືຫຼາຍກວ່າໜຶ່ງບັນທຶກຄູ່ທີ່ມີ GTIDs, ດັ່ງທີ່ສະແດງຢູ່ໃນຕົວຢ່າງນີ້:
ຫອຍ> mysqlbinlog --skip-gtids binlog.000001 > /tmp/dump.sql
ຫອຍ> mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sql
ຫອຍ> mysql -u ຮາກ -p -e "ແຫຼ່ງ /tmp/dump.sql"
ການນໍາໃຊ້ທາງເລືອກນີ້ແມ່ນຖ້າບໍ່ດັ່ງນັ້ນປົກກະຕິແລ້ວບໍ່ໄດ້ແນະນໍາໃນການຜະລິດ.
ຕົວເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.5.
· --socket=ເສັ້ນທາງ, -S ເສັ້ນທາງ
ສໍາລັບການເຊື່ອມຕໍ່ກັບ localhost, ໄຟລ໌ Unix socket ທີ່ຈະໃຊ້, ຫຼື, ໃນ Windows, ຊື່ຂອງ
ທໍ່ທີ່ມີຊື່ທີ່ຈະໃຊ້.
· --start-datetime=ໄລຍະເວລາ
ເລີ່ມການອ່ານບັນທຶກຖານສອງໃນເຫດການທໍາອິດທີ່ມີເວລາເທົ່າກັບ ຫຼືຫຼັງຈາກນັ້ນ
ກ່ວາ ໄລຍະເວລາ ການໂຕ້ຖຽງ. ໄດ້ ໄລຍະເວລາ ຄ່າແມ່ນທຽບກັບເຂດເວລາທ້ອງຖິ່ນທີ່ເປີດ
ເຄື່ອງທີ່ເຈົ້າແລ່ນ mysqlbinlog. ຄ່າຄວນຢູ່ໃນຮູບແບບທີ່ຍອມຮັບ
ປະເພດຂໍ້ມູນ DATETIME ຫຼື TIMESTAMP. ຍົກຕົວຢ່າງ:
ຫອຍ> mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
ທາງເລືອກນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການຟື້ນຕົວຈຸດໃນເວລາ. ເບິ່ງພາກ 7.3, “ຕົວຢ່າງການສໍາຮອງ ແລະ
ຍຸດທະສາດການຟື້ນຟູ.”
· --start-position=N, -j N
ເລີ່ມການອ່ານບັນທຶກຄູ່ຢູ່ທີ່ເຫດການທໍາອິດທີ່ມີຕໍາແຫນ່ງເທົ່າກັບຫຼືຫຼາຍກວ່ານັ້ນ
ກ່ວາ N. ຕົວເລືອກນີ້ໃຊ້ກັບໄຟລ໌ບັນທຶກທໍາອິດທີ່ມີຊື່ຢູ່ໃນເສັ້ນຄໍາສັ່ງ.
ທາງເລືອກນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການຟື້ນຕົວຈຸດໃນເວລາ. ເບິ່ງພາກ 7.3, “ຕົວຢ່າງການສໍາຮອງ ແລະ
ຍຸດທະສາດການຟື້ນຟູ.”
· --stop-datetime=ໄລຍະເວລາ
ຢຸດການອ່ານບັນທຶກຄູ່ຢູ່ທີ່ເຫດການທໍາອິດທີ່ມີເວລາເທົ່າກັບຫຼືຫຼັງຈາກນັ້ນ
ກ່ວາ ໄລຍະເວລາ ການໂຕ້ຖຽງ. ທາງເລືອກນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການຟື້ນຕົວຈຸດໃນເວລາ. ເບິ່ງ
ລາຍລະອຽດຂອງ --ເວລາເລີ່ມຕົ້ນ-ວັນທີ ທາງເລືອກສໍາລັບຂໍ້ມູນກ່ຽວກັບການ ໄລຍະເວລາ ມູນຄ່າ.
ທາງເລືອກນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການຟື້ນຕົວຈຸດໃນເວລາ. ເບິ່ງພາກ 7.3, “ຕົວຢ່າງການສໍາຮອງ ແລະ
ຍຸດທະສາດການຟື້ນຟູ.”
· --ຢຸດ-ບໍ່ເຄີຍ
ທາງເລືອກນີ້ຖືກນໍາໃຊ້ກັບ --read-from-remote-server. ມັນບອກ mysqlbinlog ຍັງຄົງຢູ່
ເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍ. ຖ້າບໍ່ດັ່ງນັ້ນ mysqlbinlog ອອກຈາກເມື່ອໄຟລ໌ບັນທຶກຫຼ້າສຸດໄດ້
ໂອນຈາກເຄື່ອງແມ່ຂ່າຍ. --ຢຸດ-ບໍ່ເຄີຍ implies --to-last-log, ດັ່ງນັ້ນພຽງແຕ່ຄັ້ງທໍາອິດ
ໄຟລ໌ບັນທຶກການໂອນຈໍາເປັນຕ້ອງມີຊື່ໃນບັນຊີຄໍາສັ່ງ.
--ຢຸດ-ບໍ່ເຄີຍ ຖືກນໍາໃຊ້ທົ່ວໄປກັບ -- ດິບ ເພື່ອເຮັດການສໍາຮອງບັນທຶກຖານສອງສົດ, ແຕ່ຍັງ
ສາມາດຖືກນໍາໃຊ້ໂດຍບໍ່ມີການ -- ດິບ ເພື່ອຮັກສາການສະແດງຂໍ້ຄວາມຢ່າງຕໍ່ເນື່ອງຂອງເຫດການບັນທຶກເປັນ
ເຊີບເວີສ້າງພວກມັນ.
ຕົວເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.0.
· --stop-never-slave-server-id=id
ກັບ --ຢຸດ-ບໍ່ເຄີຍ, mysqlbinlog ລາຍງານ ID ເຊີບເວີຂອງ 65535 ເມື່ອມັນເຊື່ອມຕໍ່ກັບ
server --stop-never-slave-server-id ລະບຸລະຫັດເຊີບເວີຢ່າງຈະແຈ້ງເພື່ອລາຍງານ. ມັນ
ສາມາດຖືກນໍາໃຊ້ເພື່ອຫຼີກເວັ້ນການຂັດແຍ້ງກັບ ID ຂອງເຄື່ອງແມ່ຂ່າຍຂອງ slave ຫຼືອື່ນ mysqlbinlog
ຂະບວນການ. ເບິ່ງພາກສ່ວນທີ່ເອີ້ນວ່າ “ການລະບຸລະຫັດເຊີບເວີ MYSQLBINLOG”.
ຕົວເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.0.
· --stop-position=N
ຢຸດເຊົາການອ່ານບັນທຶກຄູ່ຢູ່ທີ່ເຫດການທໍາອິດທີ່ມີຕໍາແຫນ່ງເທົ່າກັບຫຼືຫຼາຍກວ່ານັ້ນ
ກ່ວາ N. ຕົວເລືອກນີ້ໃຊ້ກັບໄຟລ໌ບັນທຶກສຸດທ້າຍທີ່ມີຊື່ຢູ່ໃນເສັ້ນຄໍາສັ່ງ.
ທາງເລືອກນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການຟື້ນຕົວຈຸດໃນເວລາ. ເບິ່ງພາກ 7.3, “ຕົວຢ່າງການສໍາຮອງ ແລະ
ຍຸດທະສາດການຟື້ນຟູ.”
· --to-last-log, -t
ຢ່າຢຸດໃນຕອນທ້າຍຂອງບັນທຶກຄູ່ທີ່ຮ້ອງຂໍຈາກເຄື່ອງແມ່ຂ່າຍ MySQL, ແຕ່ແທນທີ່ຈະ
ສືບຕໍ່ພິມຈົນກ່ວາໃນຕອນທ້າຍຂອງບັນທຶກຄູ່ສຸດທ້າຍ. ຖ້າຫາກວ່າທ່ານສົ່ງຜົນຜະລິດໄດ້
ເຊີບເວີ MySQL ດຽວກັນ, ນີ້ອາດຈະນໍາໄປສູ່ການ loop ທີ່ບໍ່ມີທີ່ສິ້ນສຸດ. ທາງເລືອກນີ້ຕ້ອງການ
--read-from-remote-server.
· --user=ຊື່ຜູ້ໃຊ້, -u ຊື່ຜູ້ໃຊ້
ຊື່ຜູ້ໃຊ້ MySQL ທີ່ຈະໃຊ້ໃນເວລາທີ່ເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍຫ່າງໄກສອກຫຼີກ.
· -- verbose, -v
ສ້າງເຫດການແຖວຄືນໃໝ່ ແລະສະແດງພວກມັນເປັນຄຳຖະແຫຼງ SQL ທີ່ສະແດງຄຳເຫັນ. ຖ້າທາງເລືອກນີ້ແມ່ນ
ໃຫ້ສອງຄັ້ງ, ຜົນໄດ້ຮັບປະກອບມີຄໍາເຫັນເພື່ອຊີ້ບອກປະເພດຂໍ້ມູນຖັນແລະບາງອັນ
ເມຕາເດຕາ.
ຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນຜົນກະທົບຂອງ --base64-ຜົນຜະລິດ ແລະ -- verbose ຢູ່ໃນເຫດການແຖວ
ຜົນຜະລິດ, ເບິ່ງພາກສ່ວນທີ່ເອີ້ນວ່າ "MYSQLBINLOG ROW EVENT DISPLAY".
· --verify-binlog-checksum, -c
ຢືນຢັນ checksums ໃນໄຟລ໌ບັນທຶກສອງ. ທາງເລືອກນີ້ໄດ້ຖືກເພີ່ມເຂົ້າໃນ MySQL 5.6.1.
· - ການປ່ຽນແປງ, -V
ສະແດງຂໍ້ມູນສະບັບແລະອອກ.
ກ່ອນທີ່ຈະ MySQL 5.6.11, the mysqlbinlog ຕົວເລກສະບັບທີ່ສະແດງແມ່ນ 3.3. ໃນ MySQL 5.6.11
ແລະຕໍ່ມາ, ນີ້ແມ່ນ 3.4. (ບັກ #15894381, ບັກ #67643)
ນອກນັ້ນທ່ານຍັງສາມາດກໍານົດຕົວແປຕໍ່ໄປນີ້ໂດຍໃຊ້ --var_name=ມູນຄ່າ ໄວຍະກອນ:
· open_files_limit
ລະບຸຈໍານວນຕົວອະທິບາຍໄຟລ໌ເປີດເພື່ອຈອງ.
ທ່ານສາມາດທໍ່ຜົນຜະລິດຂອງ mysqlbinlog ເຂົ້າໄປໃນ mysql ລູກຄ້າເພື່ອປະຕິບັດເຫດການ
ບັນຈຸຢູ່ໃນບັນທຶກຖານສອງ. ເຕັກນິກນີ້ຖືກນໍາໃຊ້ເພື່ອຟື້ນຕົວຈາກອຸປະຕິເຫດໃນເວລາທີ່ທ່ານມີ
ການສໍາຮອງຂໍ້ມູນເກົ່າ (ເບິ່ງພາກທີ 7.5, “ຈຸດໃນເວລາ (ເພີ່ມ) ການຟື້ນຕົວໂດຍການນໍາໃຊ້ຖານສອງ
ບັນທຶກ”). ຍົກຕົວຢ່າງ:
ຫອຍ> mysqlbinlog binlog.000001 | mysql -u ຮາກ -p
ຫລື:
ຫອຍ> mysqlbinlog binlog.[0-9]* | mysql -u ຮາກ -p
ຖ້າຄໍາຖະແຫຼງທີ່ຜະລິດໂດຍ mysqlbinlog ອາດຈະມີຄ່າ BLOB, ເຫຼົ່ານີ້ອາດຈະເຮັດໃຫ້ເກີດ
ບັນຫາເມື່ອ mysql ປະມວນຜົນພວກມັນ. ໃນກໍລະນີນີ້, ຮຽກຮ້ອງ mysql ກັບ -- ໂໝດ binary
ທາງເລືອກ.
ນອກນັ້ນທ່ານຍັງສາມາດປ່ຽນເສັ້ນທາງຜົນຜະລິດຂອງ mysqlbinlog ໄປຫາໄຟລ໌ຂໍ້ຄວາມແທນ, ຖ້າທ່ານຕ້ອງການ
ແກ້ໄຂບັນທຶກຄຳຖະແຫຼງກ່ອນ (ຕົວຢ່າງ: ເພື່ອເອົາຄຳຖະແຫຼງທີ່ເຈົ້າບໍ່ຕ້ອງການອອກ
ປະຕິບັດດ້ວຍເຫດຜົນບາງຢ່າງ). ຫຼັງຈາກການແກ້ໄຂໄຟລ໌, ປະຕິບັດຄໍາຖະແຫຼງການທີ່ມັນປະກອບດ້ວຍ
ໂດຍການນໍາໃຊ້ມັນເປັນການປ້ອນຂໍ້ມູນກັບ mysql ໂຄງການ:
ຫອຍ> mysqlbinlog binlog.000001 > tmpfile
ຫອຍ> ... ດັດແກ້ tmpfile ...
ຫອຍ> mysql -u ຮາກ -p < tmpfile
ເມື່ອໃດ mysqlbinlog ແມ່ນ invoked ກັບ -- ຕໍາແຫນ່ງເລີ່ມຕົ້ນ ທາງເລືອກ, ມັນສະແດງພຽງແຕ່ເຫຼົ່ານັ້ນ
ເຫດການທີ່ມີການຊົດເຊີຍໃນບັນທຶກຖານສອງໃຫຍ່ກວ່າ ຫຼືເທົ່າກັບຕຳແໜ່ງທີ່ໃຫ້ໄວ້ (the
ຕໍາແໜ່ງທີ່ມອບໃຫ້ຕ້ອງກົງກັບຈຸດເລີ່ມຕົ້ນຂອງເຫດການໜຶ່ງ). ມັນຍັງມີທາງເລືອກທີ່ຈະຢຸດແລະເລີ່ມຕົ້ນ
ໃນເວລາທີ່ມັນເຫັນເຫດການທີ່ມີວັນທີແລະເວລາທີ່ກໍານົດໄວ້. ນີ້ຊ່ວຍໃຫ້ທ່ານສາມາດປະຕິບັດໄດ້
ການຟື້ນຟູຈຸດໃນເວລາໂດຍໃຊ້ --stop-datetime ທາງເລືອກ (ເພື່ອສາມາດເວົ້າ, ຕົວຢ່າງ,
"ເລື່ອນຖານຂໍ້ມູນຂອງຂ້ອຍໄປຫາວິທີການທີ່ເຂົາເຈົ້າເປັນໃນມື້ນີ້ຢູ່ທີ່ 10:30 am").
ຖ້າທ່ານມີຫຼາຍກວ່າຫນຶ່ງບັນທຶກຄູ່ເພື່ອປະຕິບັດໃນເຄື່ອງແມ່ຂ່າຍ MySQL, ວິທີການທີ່ປອດໄພແມ່ນເພື່ອ
ປຸງແຕ່ງພວກມັນທັງຫມົດໂດຍໃຊ້ການເຊື່ອມຕໍ່ດຽວກັບເຄື່ອງແມ່ຂ່າຍ. ນີ້ແມ່ນຕົວຢ່າງທີ່
ສະແດງໃຫ້ເຫັນສິ່ງທີ່ອາດຈະເປັນ ບໍ່ປອດໄພ:
ຫອຍ> mysqlbinlog binlog.000001 | mysql -u ຮາກ -p # ອັນຕະລາຍ !!
ຫອຍ> mysqlbinlog binlog.000002 | mysql -u ຮາກ -p # ອັນຕະລາຍ !!
ການປະມວນຜົນບັນທຶກຖານສອງດ້ວຍວິທີນີ້ໂດຍໃຊ້ການເຊື່ອມຕໍ່ຫຼາຍອັນກັບເຄື່ອງແມ່ຂ່າຍເຮັດໃຫ້ເກີດບັນຫາ
ຖ້າໄຟລ໌ບັນທຶກທໍາອິດມີຄໍາຖະແຫຼງທີ່ສ້າງຕາຕະລາງຊົ່ວຄາວແລະບັນທຶກທີສອງ
ປະກອບມີຄໍາຖະແຫຼງທີ່ໃຊ້ຕາຕະລາງຊົ່ວຄາວ. ເມື່ອທໍາອິດ mysql ຂະບວນການ
ສິ້ນສຸດ, ເຄື່ອງແມ່ຂ່າຍຫຼຸດລົງຕາຕະລາງຊົ່ວຄາວ. ເມື່ອທີສອງ mysql ຄວາມພະຍາຍາມຂະບວນການ
ເພື່ອໃຊ້ຕາຕະລາງ, ເຄື່ອງແມ່ຂ່າຍລາຍງານ "ຕາຕະລາງທີ່ບໍ່ຮູ້ຈັກ."
ເພື່ອຫຼີກເວັ້ນບັນຫາເຊັ່ນນີ້, ໃຊ້ a ດຽວ mysql ຂະບວນການປະຕິບັດເນື້ອໃນຂອງທັງຫມົດ
ບັນທຶກຖານສອງທີ່ທ່ານຕ້ອງການປະມວນຜົນ. ນີ້ແມ່ນວິທີຫນຶ່ງທີ່ຈະເຮັດແນວນັ້ນ:
ຫອຍ> mysqlbinlog binlog.000001 binlog.000002 | mysql -u ຮາກ -p
ອີກວິທີໜຶ່ງແມ່ນການຂຽນບັນທຶກທັງໝົດໃສ່ໄຟລ໌ດຽວແລ້ວປະມວນຜົນໄຟລ໌:
ຫອຍ> mysqlbinlog binlog.000001 > /tmp/statements.sql
ຫອຍ> mysqlbinlog binlog.000002 >> /tmp/statements.sql
ຫອຍ> mysql -u ຮາກ -p -e "ແຫຼ່ງ /tmp/statements.sql"
mysqlbinlog ສາມາດຜະລິດຜົນຜະລິດທີ່ reproduces ການດໍາເນີນງານ LOAD DATA INFILE ໂດຍບໍ່ມີການ
ໄຟລ໌ຂໍ້ມູນຕົ້ນສະບັບ. mysqlbinlog ສຳເນົາຂໍ້ມູນໃສ່ໄຟລ໌ຊົ່ວຄາວ ແລະຂຽນ LOAD
DATA LOCAL INFILE ຖະແຫຼງການທີ່ອ້າງອີງເຖິງໄຟລ໌. ສະຖານທີ່ເລີ່ມຕົ້ນຂອງໄດເລກະທໍລີ
ບ່ອນທີ່ໄຟລ໌ເຫຼົ່ານີ້ຖືກຂຽນເປັນລະບົບສະເພາະ. ເພື່ອລະບຸໄດເລກະທໍລີຢ່າງຈະແຈ້ງ, ໃຫ້ໃຊ້
ໄດ້ --local-load ທາງເລືອກ.
ເນື່ອງຈາກວ່າ mysqlbinlog ປ່ຽນ LOAD DATA INFILE ຖະແຫຼງການເປັນ LOAD DATA INFILE ທ້ອງຖິ່ນ
ຖະແຫຼງການ (ນັ້ນແມ່ນ, ມັນເພີ່ມທ້ອງຖິ່ນ), ທັງລູກຄ້າແລະເຄື່ອງແມ່ຂ່າຍທີ່ທ່ານໃຊ້
ຂະບວນການຖະແຫຼງການຕ້ອງຖືກຕັ້ງຄ່າດ້ວຍຄວາມສາມາດຂອງທ້ອງຖິ່ນທີ່ເປີດໃຊ້ງານ. ເບິ່ງ
ພາກທີ 6.1.6, “ບັນຫາຄວາມປອດໄພກັບການໂຫຼດຂໍ້ມູນທ້ອງຖິ່ນ”.
ການເຕືອນໄພ
ໄຟລ໌ຊົ່ວຄາວທີ່ສ້າງຂຶ້ນສໍາລັບ LOAD DATA LOCAL statements ແມ່ນ ບໍ່ ອັດຕະໂນມັດ
ຖືກລຶບເພາະວ່າພວກມັນຕ້ອງການຈົນກວ່າເຈົ້າຈະປະຕິບັດການຖະແຫຼງເຫຼົ່ານັ້ນ. ເຈົ້າ
ຄວນລຶບໄຟລ໌ຊົ່ວຄາວດ້ວຍຕົວເອງ ຫຼັງຈາກທີ່ເຈົ້າບໍ່ຕ້ອງການບັນທຶກການຖະແຫຼງການ.
ໄຟລ໌ສາມາດພົບໄດ້ຢູ່ໃນໄດເລກະທໍລີໄຟລ໌ຊົ່ວຄາວແລະມີຊື່ເຊັ່ນ
original_file_name-#-#.
MYSQLBINLOG HEX ຖິ້ມຂີ້ເຫຍື້ອ ຮູບແບບ
ໄດ້ --hexdump ສາເຫດທາງເລືອກ mysqlbinlog ເພື່ອຜະລິດ hex dump ຂອງເນື້ອໃນຂອງບັນທຶກຖານສອງ:
ຫອຍ> mysqlbinlog --hexdump master-bin.000001
ຜົນຜະລິດ hex ປະກອບດ້ວຍເສັ້ນຄວາມຄິດເຫັນທີ່ເລີ່ມຕົ້ນດ້ວຍ #, ດັ່ງນັ້ນຜົນຜະລິດອາດຈະເບິ່ງຄືວ່າ
ນີ້ສໍາລັບຄໍາສັ່ງກ່ອນຫນ້າ:
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
#ຢູ່ທີ່4
#051024 17:24:13 server id 1 end_log_pos 98
# ຕໍາແໜ່ງ Timestamp Type Master ID Size Master Pos Flags
# 00000004 9d fc 5c 43 0f 01 00 00 00 5e 00 00 00 62 00 00 00 00 00 .
#00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l|
#00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |og..............|
# 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
# 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |.......C.8......|
# 00000057 04 04 04 04 12 00 00 4b 00 04 1a |.......K...|
# ເລີ່ມຕົ້ນ: binlog v 4, server v 5.0.15-debug-log ສ້າງ 051024 17:24:13
# ໃນຕອນເລີ່ມຕົ້ນ
ROLLBACK;
ປະຈຸບັນ hex dump output ມີອົງປະກອບໃນບັນຊີລາຍຊື່ຕໍ່ໄປນີ້. ຮູບແບບນີ້ແມ່ນ
ອາດມີການປ່ຽນແປງ. (ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຮູບແບບບັນທຶກຄູ່, ເບິ່ງ MySQL ພາຍໃນ: ໄດ້
ຖານສອງ ຕົວເຊັນເຂົ້າ[1]
· ຕໍາແໜ່ງ: ຕໍາແໜ່ງ byte ພາຍໃນໄຟລ໌ບັນທຶກ.
· Timestamp: ເວລາເຫດການ. ໃນຕົວຢ່າງທີ່ສະແດງ, '9d fc 5c 43' ແມ່ນ
ການເປັນຕົວແທນຂອງ '051024 17:24:13' ໃນເລກຖານສິບຫົກ.
· ປະເພດ: ລະຫັດປະເພດເຫດການ. ໃນຕົວຢ່າງທີ່ສະແດງ, '0f' ຊີ້ໃຫ້ເຫັນ a
FORMAT_DESCRIPTION_EVENT. ຕາຕະລາງຕໍ່ໄປນີ້ລາຍຊື່ລະຫັດປະເພດທີ່ເປັນໄປໄດ້.
┌─────┬───────────────────────────────────── ────────────────────────┐
│ປະເພດ │ ຊື່ │ ຊຶ່ງຫມາຍຄວາມວ່າ │
├─────┼──────────────────────────────────── ─────────────────────────┤
│00 │ UNKNOWN_EVENT │ ເຫດການນີ້ບໍ່ຄວນ│
│ │ │ ປະກົດຢູ່ໃນບັນທຶກ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│01 │ START_EVENT_V3 │ ອັນນີ້ຊີ້ບອກຈຸດເລີ່ມຕົ້ນ │
│ │ │ ຂອງໄຟລ໌ບັນທຶກທີ່ຂຽນໂດຍ │
│ │ │ MySQL 4 ຫຼືກ່ອນໜ້ານັ້ນ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│02 │ QUERY_EVENT │ ປະເພດທົ່ວໄປທີ່ສຸດຂອງ │
│ │ │ ເຫດການ. ສິ່ງເຫຼົ່ານີ້ມີ │
│ │ │ ຄຳສັ່ງຖືກປະຕິບັດໃນ │
│ │ │ ໄດ້ │
│ │ │ ແມ່ບົດ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│03 │ STOP_EVENT │ ຊີ້ບອກວ່າແມ່ແບບມີ │
│ │ │ ຢຸດ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│04 │ ROTATE_EVENT │ ຂຽນເມື່ອແມ່ບົດ │
│ │ │ ສະຫຼັບໄປຫາໄຟລ໌ບັນທຶກໃໝ່. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│05 │ INTVAR_EVENT │ ໃຊ້ສຳລັບ AUTO_INCREMENT │
│ │ │ ຄ່າ ຫຼື ເມື່ອ │
│ │ │ LAST_INSERT_ID() │
│ │ │ ຟັງຊັນ │
│ │ │ ຖືກນໍາໃຊ້ໃນຄໍາຖະແຫຼງການ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│06 │ LOAD_EVENT │ ໃຊ້ສຳລັບການໂຫຼດຂໍ້ມູນ │
│ │ │ INFILE ໃນ MySQL │
│ │ │ 3.23. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│07 │ SLAVE_EVENT │ ສະຫງວນໄວ້ເພື່ອນຳໃຊ້ໃນອະນາຄົດ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│08 │ CREATE_FILE_EVENT │ ໃຊ້ສຳລັບໂຫຼດຂໍ້ມູນ │
│ │ │ INFILE │
│ │ │ ຖະແຫຼງການ. ອັນນີ້ຊີ້ໃຫ້ເຫັນເຖິງ │
│ │ │ ເລີ່ມຕົ້ນຂອງ │
│ │ │ ການປະຕິບັດຄຳຖະແຫຼງດັ່ງກ່າວ. A │
│ │ │ ຊົ່ວຄາວ │
ໄຟລ໌ │ │ │ ຖືກສ້າງຂື້ນ │
│ │ │ ກ່ຽວກັບຂ້າໃຊ້. ໃຊ້ໃນ MySQL 4 ເທົ່ານັ້ນ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│09 │ APPEND_BLOCK_EVENT │ ມີຂໍ້ມູນເພື່ອໃຊ້ໃນ │
│ │ │ ໂຫຼດຂໍ້ມູນ │
│ │ │ INFILE │
│ │ │ ຖະແຫຼງການ. ຂໍ້ມູນຖືກເກັບໄວ້ໃນ │
│ │ │ ຊົ່ວຄາວ │
│ │ │ ໄຟລ໌ຢູ່ໃນທາດ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│0a │ EXEC_LOAD_EVENT │ ໃຊ້ສຳລັບ LOAD DATA │
│ │ │ INFILE │
│ │ │ ຖະແຫຼງການ. ເນື້ອໃນຂອງ │
│ │ │ ໄຟລ໌ຊົ່ວຄາວ │
│ │ │ ຖືກເກັບໄວ້ໃນຕາຕະລາງເທິງທາດ. │
│ │ │ ໃຊ້ໃນ MySQL 4 │
│ │ │ ເທົ່ານັ້ນ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│0b │ DELETE_FILE_EVENT │ ການກັບຄືນຂອງ LOAD DATA │
│ │ │ INFILE │
│ │ │ ຖະແຫຼງການ. ໄຟລ໌ຊົ່ວຄາວ │
│ │ │ ຄວນເປັນ │
│ │ │ ຖືກລຶບໃນ slave. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│0c │ NEW_LOAD_EVENT │ ໃຊ້ສຳລັບ LOAD DATA │
│ │ │ INFILE ໃນ MySQL │
│ │ │ 4 ແລະກ່ອນໜ້ານັ້ນ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│0d │ RAND_EVENT │ ໃຊ້ເພື່ອສົ່ງຂໍ້ມູນກ່ຽວກັບ │
│ │ │ ຄ່າສຸ່ມຖ້າ │
│ │ │ ຟັງຊັນ RAND() │
│ │ │ ແມ່ນ │
│ │ │ ໃຊ້ໃນ │
│ │ │ ຖະແຫຼງການ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│0e │ USER_VAR_EVENT │ ໃຊ້ເພື່ອສຳເນົາຕົວແປຂອງຜູ້ໃຊ້. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│0f │ FORMAT_DESCRIPTION_EVENT │ ອັນນີ້ຊີ້ບອກຈຸດເລີ່ມຕົ້ນຂອງບັນທຶກ │
│ │ │ ໄຟລ໌ທີ່ຂຽນໂດຍ MySQL 5 ຫຼືຫຼັງຈາກນັ້ນ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│10 │ XID_EVENT │ ເຫດການທີ່ຊີ້ບອກເຖິງການກະທຳຂອງ XA │
│ │ │ ທຸລະກຳ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│11 │ BEGIN_LOAD_QUERY_EVENT │ ໃຊ້ສຳລັບ LOAD DATA │
│ │ │ INFILE │
│ │ │ ຖະແຫຼງການໃນ MySQL 5 ແລະຕໍ່ມາ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│12 │ EXECUTE_LOAD_QUERY_EVENT │ ໃຊ້ສຳລັບ LOAD DATA │
│ │ │ INFILE │
│ │ │ ຖະແຫຼງການໃນ MySQL 5 ແລະຕໍ່ມາ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│13 │ TABLE_MAP_EVENT │ ຂໍ້ມູນກ່ຽວກັບຕາຕະລາງ │
│ │ │ ຄໍານິຍາມ. ໃຊ້ໃນ MySQL 5.1.5 ແລະ │
│ │ │ ຕໍ່ມາ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│14 │ PRE_GA_WRITE_ROWS_EVENT │ ຂໍ້ມູນແຖວສຳລັບຕາຕະລາງດຽວທີ່ │
ຄວນສ້າງ │ │ │. ໃຊ້ໃນ MySQL │
│ │ │ 5.1.5 │
│ │ │ ຫາ 5.1.17. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│15 │ PRE_GA_UPDATE_ROWS_EVENT │ ຂໍ້ມູນແຖວສຳລັບຕາຕະລາງດຽວທີ່ │
│ │ │ ຕ້ອງການອັບເດດ. ໃຊ້ໃນ MySQL │
│ │ │ 5.1.5 ຫາ 5.1.17. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│16 │ PRE_GA_DELETE_ROWS_EVENT │ ຂໍ້ມູນແຖວສຳລັບຕາຕະລາງດຽວທີ່ │
│ │ │ ຄວນຖືກລຶບ. ໃຊ້ໃນ MySQL │
│ │ │ 5.1.5 │
│ │ │ ຫາ 5.1.17. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│17 │ WRITE_ROWS_EVENT │ ຂໍ້ມູນແຖວສຳລັບຕາຕະລາງດຽວທີ່ │
ຄວນສ້າງ │ │ │. ໃຊ້ໃນ MySQL │
│ │ │ 5.1.18 │
│ │ │ ແລະຕໍ່ມາ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│18 │ UPDATE_ROWS_EVENT │ ຂໍ້ມູນແຖວສຳລັບຕາຕະລາງດຽວທີ່ │
│ │ │ ຕ້ອງການອັບເດດ. ໃຊ້ໃນ MySQL │
│ │ │ 5.1.18 ແລະ │
│ │ │ ຕໍ່ມາ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│19 │ DELETE_ROWS_EVENT │ ຂໍ້ມູນແຖວສຳລັບຕາຕະລາງດຽວທີ່ │
│ │ │ ຄວນຖືກລຶບ. ໃຊ້ໃນ MySQL │
│ │ │ 5.1.18 │
│ │ │ ແລະຕໍ່ມາ. │
├─────┼──────────────────────────────────── ─────────────────────────┤
│1a │ INCIDENT_EVENT │ ບາງອັນທີ່ບໍ່ທຳມະດາ │
│ │ │ ເກີດຂຶ້ນ. ເພີ່ມເຂົ້າໃນ MySQL 5.1.18. │
└──────┴─────────────────────────────────── ─────────────────────────┘
· Master ID: ID ເຊີບເວີຂອງແມ່ແບບທີ່ສ້າງເຫດການ.
· ຂະໜາດ: ຂະໜາດໃນໄບຕ໌ຂອງເຫດການ.
· Master Pos: ຕໍາແຫນ່ງຂອງເຫດການຕໍ່ໄປໃນໄຟລ໌ຕົ້ນສະບັບຕົ້ນສະບັບ.
· ທຸງ: 16 ທຸງ. ໃນປັດຈຸບັນ, ທຸງຕໍ່ໄປນີ້ຖືກນໍາໃຊ້. ອື່ນໆແມ່ນສະຫງວນໄວ້ສໍາລັບ
ການ ນຳ ໃຊ້ໃນອະນາຄົດ.
┌─────┬──────────────────────────────────────── ────────────────────────────────────
│ທຸງ │ ຊື່ │ ຊຶ່ງຫມາຍຄວາມວ່າ │
├─────┼───────────────────────────────────── ──────────────────────────────────── ┤
│01 │ LOG_EVENT_BINLOG_IN_USE_F │ ບັນທຶກໄຟລ໌ຢ່າງຖືກຕ້ອງ │
│ │ │ ປິດ. (ໃຊ້ໃນ │ ເທົ່ານັ້ນ
│ │ │ FORMAT_DESCRIPTION_EVENT.) │
│ │ │ ຖ້າ │
│ │ │ ນີ້ │
ຕັ້ງທຸງ │ │ │ (ຖ້າ │
│ │ │ ທຸງແມ່ນ, ຕົວຢ່າງ, │
│ │ │ '01 │
│ │ │ 00') ໃນ │
│ │ │ FORMAT_DESCRIPTION_EVENT, │
│ │ │ ບັນທຶກ │
│ │ │ ໄຟລ໌ │
│ │ │ ບໍ່ຖືກຕ້ອງ │
│ │ │ ປິດ. ສ່ວນຫຼາຍອາດຈະເປັນ │
│ │ │ ນີ້ │
│ │ │ ແມ່ນຍ້ອນນາຍ │
│ │ │ ຂັດຂ້ອງ (ຕົວຢ່າງ, ຄົບກຳນົດ │
│ │ │ ຫາ │
│ │ │ ໄຟຟ້າລົ້ມເຫຼວ). │
├─────┼───────────────────────────────────── ──────────────────────────────────── ┤
│02 │ │ ສະຫງວນໄວ້ເພື່ອນຳໃຊ້ໃນອະນາຄົດ. │
├─────┼───────────────────────────────────── ──────────────────────────────────── ┤
│04 │ LOG_EVENT_THREAD_SPECIFIC_F │ ຕັ້ງຖ້ານັດໝາຍຂຶ້ນກັບ │
ການເຊື່ອມຕໍ່ │ │ │ ມັນຖືກປະຕິບັດໃນ (ສໍາລັບ │
│ │ │ ຕົວຢ່າງ, '04 00'), ສໍາລັບ │
│ │ │ ຕົວຢ່າງ, │
│ │ │ ຖ້າເຫດການໃຊ້ │
│ │ │ ຕາຕະລາງຊົ່ວຄາວ. │
├─────┼───────────────────────────────────── ──────────────────────────────────── ┤
│08 │ LOG_EVENT_SUPPRESS_USE_F │ ຕັ້ງໃນບາງກໍລະນີເມື່ອເຫດການແມ່ນ │
│ │ │ ບໍ່ຂຶ້ນກັບຄ່າເລີ່ມຕົ້ນ │
│ │ │ ຖານຂໍ້ມູນ. │
└──────┴────────────────────────────────────── ───────────────────────────────────────
MYSQLBINLOG ROW EVENT DISPLAY
ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນວິທີການ mysqlbinlog ສະແດງເຫດການແຖວທີ່ລະບຸຂໍ້ມູນ
ການດັດແກ້. ສິ່ງເຫຼົ່ານີ້ກົງກັບເຫດການກັບ WRITE_ROWS_EVENT, UPDATE_ROWS_EVENT,
ແລະລະຫັດປະເພດ DELETE_ROWS_EVENT. ໄດ້ --base64-output=DECODE-ROWS ແລະ -- verbose ທາງເລືອກໃນການ
ອາດຈະຖືກນໍາໃຊ້ເພື່ອສົ່ງຜົນກະທົບຕໍ່ຜົນໄດ້ຮັບຂອງເຫດການແຖວ.
ສົມມຸດວ່າເຊີບເວີກໍາລັງໃຊ້ການບັນທຶກຖານສອງແຖວແລະທ່ານດໍາເນີນການ
ລຳດັບຄຳຖະແຫຼງຕໍ່ໄປນີ້:
ສ້າງຕາຕະລາງ t
(
id INT ບໍ່ແມ່ນ NULL,
ຊື່ VARCHAR(20) ບໍ່ແມ່ນ NULL,
ວັນທີ DATE NULL
) ເຄື່ອງຈັກ = InnoDB;
ເລີ່ມທຸລະກໍາ;
ແຊກໃສ່ t VALUES(1, 'apple', NULL);
UPDATE t SET name = 'pear', date = '2009-01-01' WHERE id = 1;
DELETE FROM t WHERE id = 1;
ກຳ ມະການ;
ໂດຍຕົວຢ່າງ, mysqlbinlog ສະແດງເຫດການແຖວທີ່ຖືກເຂົ້າລະຫັດເປັນ base-64 strings ໂດຍໃຊ້ BINLOG
ຖະແຫຼງການ. Omitting ສາຍ extraneous, ຜົນຜະລິດສໍາລັບເຫດການແຖວທີ່ຜະລິດໂດຍ
ລຳດັບ ຄຳ ຖະແຫຼງກ່ອນ ໜ້າ ນີ້ເບິ່ງຄືວ່າ:
ຫອຍ> mysqlbinlog log_file
...
#ຢູ່ທີ່218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
binlog '
fAS3SBMBAAAALAAAANoAAAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAAAAAAAAAIBAAAQABEAAAAAAAEAAA//8AQAAAAVhcHBsZQ==
'/*!*/;
...
#ຢູ່ທີ່302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
binlog '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANGAAAGQBAAAQABEAAAAAAAAAEA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
...
#ຢູ່ທີ່400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 ທຸງ: STMT_END_F
binlog '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAAA//4AQAAAAARwZWFyIbIP
'/*!*/;
ເພື່ອເບິ່ງເຫດການແຖວເປັນຄໍາຄິດຄໍາເຫັນໃນຮູບແບບຂອງ "pseudo-SQL", ດໍາເນີນການ mysqlbinlog
ກັບ -- verbose or -v ທາງເລືອກ. ຜົນຜະລິດຈະມີແຖວທີ່ເລີ່ມຕົ້ນດ້ວຍ ###:
ຫອຍ> mysqlbinlog -v log_file
...
#ຢູ່ທີ່218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
binlog '
fAS3SBMBAAAALAAAANoAAAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAAAAAAAAAIBAAAQABEAAAAAAAEAAA//8AQAAAAVhcHBsZQ==
'/*!*/;
### INSERT INTO test.t
### SET
### @1=1
### @2='ແອັບເປີ້ນ'
### @3=NULL
...
#ຢູ່ທີ່302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
binlog '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANGAAAGQBAAAQABEAAAAAAAAAEA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
### ອັບເດດ test.t
### ຢູ່ໃສ
### @1=1
### @2='ແອັບເປີ້ນ'
### @3=NULL
### SET
### @1=1
### @2='pear'
### @3='2009:01:01'
...
#ຢູ່ທີ່400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 ທຸງ: STMT_END_F
binlog '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAAA//4AQAAAAARwZWFyIbIP
'/*!*/;
### ລຶບອອກຈາກ test.t
### ຢູ່ໃສ
### @1=1
### @2='pear'
### @3='2009:01:01'
ລະບຸວ່າ -- verbose or -v ສອງເທື່ອເພື່ອສະແດງຂໍ້ມູນປະເພດ ແລະບາງ metadata ສໍາລັບແຕ່ລະຄົນ
ຖັນ. ຜົນໄດ້ຮັບຈະມີຄໍາຄິດເຫັນເພີ່ມເຕີມດັ່ງຕໍ່ໄປນີ້ການປ່ຽນແປງແຕ່ລະຖັນ:
ຫອຍ> mysqlbinlog -vv log_file
...
#ຢູ່ທີ່218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
binlog '
fAS3SBMBAAAALAAAANoAAAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAAAAAAAAAIBAAAQABEAAAAAAAEAAA//8AQAAAAVhcHBsZQ==
'/*!*/;
### INSERT INTO test.t
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
...
#ຢູ່ທີ່302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
binlog '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANGAAAGQBAAAQABEAAAAAAAAAEA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
### ອັບເດດ test.t
### ຢູ່ໃສ
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
...
#ຢູ່ທີ່400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 ທຸງ: STMT_END_F
binlog '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAAA//4AQAAAAARwZWFyIbIP
'/*!*/;
### ລຶບອອກຈາກ test.t
### ຢູ່ໃສ
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
### @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
ເຈົ້າສາມາດບອກໄດ້ mysqlbinlog ເພື່ອສະກັດກັ້ນ BINLOG ຖະແຫຼງການສໍາລັບເຫດການແຖວໂດຍໃຊ້
--base64-output=DECODE-ROWS ທາງເລືອກ. ນີ້ແມ່ນຄ້າຍຄືກັນກັບ --base64-output=ບໍ່ເຄີຍ ແຕ່ບໍ່
ອອກດ້ວຍຄວາມຜິດພາດຖ້າພົບເຫດການແຖວ. ການປະສົມປະສານຂອງ --base64-output=DECODE-ROWS
ແລະ -- verbose ໃຫ້ວິທີທີ່ສະດວກໃນການເບິ່ງເຫດການແຖວພຽງແຕ່ເປັນຄໍາຖະແຫຼງ SQL:
ຫອຍ> mysqlbinlog -v --base64-output=DECODE-ROWS log_file
...
#ຢູ່ທີ່218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
### INSERT INTO test.t
### SET
### @1=1
### @2='ແອັບເປີ້ນ'
### @3=NULL
...
#ຢູ່ທີ່302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
### ອັບເດດ test.t
### ຢູ່ໃສ
### @1=1
### @2='ແອັບເປີ້ນ'
### @3=NULL
### SET
### @1=1
### @2='pear'
### @3='2009:01:01'
...
#ຢູ່ທີ່400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 ທຸງ: STMT_END_F
### ລຶບອອກຈາກ test.t
### ຢູ່ໃສ
### @1=1
### @2='pear'
### @3='2009:01:01'
ຫມາຍເຫດ
ທ່ານບໍ່ຄວນສະກັດກັ້ນ BINLOG ຖະແຫຼງການຖ້າທ່ານຕັ້ງໃຈທີ່ຈະປະຕິບັດຄືນໃຫມ່ mysqlbinlog
ຜົນຜະລິດ.
ຄໍາຖະແຫຼງທີ່ SQL ຜະລິດໂດຍ -- verbose ສໍາລັບເຫດການແຖວແມ່ນສາມາດອ່ານໄດ້ຫຼາຍກ່ວາ
ຄໍາຖະແຫຼງ BINLOG ທີ່ສອດຄ້ອງກັນ. ຢ່າງໃດກໍຕາມ, ພວກເຂົາເຈົ້າບໍ່ກົງກັນກັບຕົ້ນສະບັບ
ຄໍາຖະແຫຼງ SQL ທີ່ສ້າງເຫດການ. ຂໍ້ຈຳກັດຕໍ່ໄປນີ້ນຳໃຊ້:
· ຊື່ຖັນຕົ້ນສະບັບຖືກສູນເສຍ ແລະປ່ຽນແທນດ້ວຍ @N, ບ່ອນທີ່ N ແມ່ນຕົວເລກຖັນ.
· ຂໍ້ມູນຊຸດຕົວອັກສອນແມ່ນບໍ່ມີຢູ່ໃນບັນທຶກຖານສອງ, ທີ່ມີຜົນກະທົບສະຕຣິງ
ການສະແດງຖັນ:
· ບໍ່ມີຄວາມແຕກຕ່າງລະຫວ່າງ binary ແລະ nonbinary string ທີ່ສອດຄ້ອງກັນ
ປະເພດ (BINARY ແລະ CHAR, VARBINARY ແລະ VARCHAR, BLOB ແລະ TEXT). ຜົນຜະລິດໃຊ້ a
ປະເພດຂໍ້ມູນຂອງ STRING ສໍາລັບສາຍຍາວຄົງທີ່ ແລະ VARSTRING ສໍາລັບຄວາມຍາວຕົວແປ
ເຊືອກ.
· ສໍາລັບຊຸດຕົວອັກສອນແບບ multibyte, ຈໍານວນສູງສຸດຂອງ bytes ຕໍ່ຕົວອັກສອນບໍ່ແມ່ນ
ມີຢູ່ໃນບັນທຶກຖານສອງ, ສະນັ້ນຄວາມຍາວຂອງປະເພດສະຕຣິງແມ່ນສະແດງເປັນໄບຕ໌
ແທນທີ່ຈະຢູ່ໃນຕົວອັກສອນ. ຍົກຕົວຢ່າງ, ຄັກ(4) ຈະຖືກນໍາໃຊ້ເປັນປະເພດຂໍ້ມູນ
ສໍາລັບຄ່າຈາກທັງສອງປະເພດຖັນເຫຼົ່ານີ້:
ຖັງ(4) CHARACTER SET Latin1
ຖັງ(2) CHARACTER SET ucs2
· ເນື່ອງຈາກຮູບແບບການເກັບຮັກສາສໍາລັບເຫດການປະເພດ UPDATE_ROWS_EVENT, UPDATE ຖະແຫຼງການ
ຈະຖືກສະແດງດ້ວຍຂໍ້ WHERE ກ່ອນໜ້າ SET clause.
ການຕີຄວາມເຫມາະສົມຂອງເຫດການແຖວຕ້ອງການຂໍ້ມູນຈາກຄໍາອະທິບາຍຮູບແບບ
ເຫດການໃນຕອນຕົ້ນຂອງບັນທຶກຖານສອງ. ເນື່ອງຈາກວ່າ mysqlbinlog ບໍ່ຮູ້ລ່ວງຫນ້າ
ບໍ່ວ່າສ່ວນທີ່ເຫຼືອຂອງບັນທຶກມີເຫດການແຖວ, ໂດຍຄ່າເລີ່ມຕົ້ນມັນຈະສະແດງຮູບແບບ
ເຫດການຄໍາອະທິບາຍໂດຍໃຊ້ຄໍາຖະແຫຼງ BINLOG ໃນສ່ວນເບື້ອງຕົ້ນຂອງຜົນໄດ້ຮັບ.
ຖ້າບັນທຶກຖານສອງເປັນທີ່ຮູ້ກັນວ່າບໍ່ມີເຫດການໃດໆທີ່ຕ້ອງໃຊ້ຄຳຖະແຫຼງ BINLOG (ນັ້ນ
ແມ່ນ, ບໍ່ມີເຫດການແຖວ), the --base64-output=ບໍ່ເຄີຍ ທາງເລືອກສາມາດຖືກນໍາໃຊ້ເພື່ອປ້ອງກັນສ່ວນຫົວນີ້
ຈາກການຂຽນ.
ການ ນຳ ໃຊ້ MYSQLBINLOG ເຖິງ BACK UP ໄບນາຣີ LOG ເອກະສານ
ໂດຍຕົວຢ່າງ, mysqlbinlog ອ່ານໄຟລ໌ບັນທຶກຖານສອງ ແລະສະແດງເນື້ອຫາຂອງເຂົາເຈົ້າໃນຮູບແບບຂໍ້ຄວາມ.
ນີ້ຊ່ວຍໃຫ້ທ່ານສາມາດກວດສອບເຫດການພາຍໃນໄຟລ໌ໄດ້ງ່າຍກວ່າແລະປະຕິບັດພວກມັນຄືນໃຫມ່
(ຕົວຢ່າງ, ໂດຍໃຊ້ຜົນຜະລິດເປັນວັດສະດຸປ້ອນ mysql). mysqlbinlog ສາມາດອ່ານໄຟລ໌ບັນທຶກ
ໂດຍກົງຈາກລະບົບໄຟລ໌ທ້ອງຖິ່ນ, ຫຼື, ກັບ --read-from-remote-server ທາງເລືອກ, ມັນສາມາດເຮັດໄດ້
ເຊື່ອມຕໍ່ກັບເຊີບເວີແລະຮ້ອງຂໍເນື້ອໃນບັນທຶກສອງຈາກເຄື່ອງແມ່ຂ່າຍນັ້ນ. mysqlbinlog ຂຽນວ່າ
text output ກັບຜົນໄດ້ຮັບມາດຕະຖານຂອງຕົນ, ຫຼືໄຟລ໌ທີ່ມີຊື່ເປັນມູນຄ່າຂອງ
--result-file=ຊື່ເອກະສານ ທາງເລືອກຖ້າທາງເລືອກນັ້ນຖືກມອບໃຫ້.
ເປັນຂອງ MySQL 5.6, mysqlbinlog ສາມາດອ່ານໄຟລ໌ບັນທຶກຖານສອງແລະຂຽນໄຟລ໌ໃຫມ່ທີ່ປະກອບດ້ວຍ
ເນື້ອໃນດຽວກັນ - ນັ້ນແມ່ນ, ໃນຮູບແບບຖານສອງແທນທີ່ຈະເປັນຮູບແບບຂໍ້ຄວາມ. ຄວາມສາມາດນີ້ເປີດໃຊ້ງານ
ທ່ານຈະໄດ້ຢ່າງງ່າຍດາຍສໍາຮອງຂໍ້ມູນບັນທຶກໃນຮູບແບບຕົ້ນສະບັບຂອງຕົນ. mysqlbinlog ສາມາດເຮັດໃຫ້ເປັນ static
ສໍາຮອງຂໍ້ມູນ, ສໍາຮອງຂໍ້ມູນທີ່ກໍານົດໄວ້ຂອງໄຟລ໌ບັນທຶກແລະການຢຸດເຊົາໃນເວລາທີ່ສິ້ນສຸດຂອງໄຟລ໌ສຸດທ້າຍແມ່ນ
ຮອດ. ມັນຍັງສາມາດເຮັດການສໍາຮອງຂໍ້ມູນຢ່າງຕໍ່ເນື່ອງ ("ສົດ"), ເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍ
ເມື່ອມັນໄປຮອດຈຸດສິ້ນສຸດຂອງໄຟລ໌ບັນທຶກຫຼ້າສຸດ ແລະສືບຕໍ່ຄັດລອກເຫດການໃຫມ່ຕາມທີ່ເຂົາເຈົ້າເປັນ
ສ້າງຂຶ້ນ. ໃນການດໍາເນີນງານສໍາຮອງຂໍ້ມູນຕໍ່ເນື່ອງ, mysqlbinlog ແລ່ນຈົນກ່ວາການເຊື່ອມຕໍ່ສິ້ນສຸດລົງ (ສໍາລັບ
ຕົວຢ່າງ, ເມື່ອເຄື່ອງແມ່ຂ່າຍອອກ) ຫຼື mysqlbinlog ຖືກຍຸບໂດຍບັງຄັບ. ເມື່ອການເຊື່ອມຕໍ່
ສິ້ນສຸດລົງ, mysqlbinlog ບໍ່ໄດ້ລໍຖ້າ ແລະພະຍາຍາມເຊື່ອມຕໍ່ຄືນໃໝ່, ບໍ່ຄືກັບການຈໍາລອງແບບສໍາລອງ
ເຊີບເວີ. ເພື່ອສືບຕໍ່ການສໍາຮອງຂໍ້ມູນສົດຫຼັງຈາກເຄື່ອງແມ່ຂ່າຍໄດ້ຖືກເປີດໃຫມ່, ທ່ານຍັງຕ້ອງ
ເລີ່ມຕົ້ນໃຫມ່ mysqlbinlog.
ການສໍາຮອງຂໍ້ມູນບັນທຶກຖານສອງຮຽກຮ້ອງໃຫ້ທ່ານຮຽກຮ້ອງ mysqlbinlog ມີສອງທາງເລືອກຢ່າງຫນ້ອຍ:
·ທ --read-from-remote-server (ຫຼື -R) ທາງເລືອກບອກ mysqlbinlog ເພື່ອເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍ
ແລະຮ້ອງຂໍບັນທຶກຖານສອງຂອງຕົນ. (ອັນນີ້ແມ່ນຄ້າຍຄືກັນກັບເຊີບເວີການຈໍາລອງແບບສໍາລອງທີ່ເຊື່ອມຕໍ່
ກັບເຄື່ອງແມ່ຂ່າຍຕົ້ນສະບັບຂອງມັນ.)
·ທ -- ດິບ ທາງເລືອກບອກ mysqlbinlog ເພື່ອຂຽນຜົນຜະລິດ (binary) ດິບ, ບໍ່ແມ່ນຂໍ້ຄວາມອອກ.
ຄຽງຄູ່ກັບ --read-from-remote-server, ມັນເປັນເລື່ອງທົ່ວໄປທີ່ຈະລະບຸທາງເລືອກອື່ນ: -ເຈົ້າພາບ
ຊີ້ບອກວ່າເຊີບເວີກຳລັງແລ່ນຢູ່ໃສ, ແລະເຈົ້າອາດຈະຕ້ອງລະບຸຕົວເລືອກການເຊື່ອມຕໍ່ນຳ
ເຊັ່ນວ່າ -ຜູ້ໃຊ້ ແລະ -ລະຫັດຜ່ານ.
ທາງເລືອກອື່ນຈໍານວນຫນຶ່ງແມ່ນເປັນປະໂຫຍດຮ່ວມກັບ -- ດິບ:
· --ຢຸດ-ບໍ່ເຄີຍ: ຢູ່ເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍຫຼັງຈາກເຖິງຈຸດສິ້ນສຸດຂອງໄຟລ໌ບັນທຶກສຸດທ້າຍ
ແລະສືບຕໍ່ອ່ານເຫດການໃຫມ່.
· --stop-never-slave-server-id=id: ID ເຊີບເວີທີ່ mysqlbinlog ລາຍງານກັບເຄື່ອງແມ່ຂ່າຍ
ໃນເວລາທີ່ --ຢຸດ-ບໍ່ເຄີຍ ຖືກນໍາໃຊ້. ຄ່າເລີ່ມຕົ້ນແມ່ນ 65535. ນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອຫຼີກເວັ້ນການຂັດແຍ້ງ
ກັບ ID ຂອງເຄື່ອງແມ່ຂ່າຍສໍາລອງຫຼືອື່ນ mysqlbinlog ຂະບວນການ. ເບິ່ງພາກທີ່ເອີ້ນວ່າ
“ການລະບຸລະຫັດເຊີບເວີ MYSQLBINLOG”.
· --ຜົນໄດ້ຮັບ-ໄຟລ໌: ຄໍານໍາຫນ້າສໍາລັບຊື່ໄຟລ໌ຜົນຜະລິດ, ດັ່ງທີ່ອະທິບາຍຕໍ່ມາ.
ເພື່ອສໍາຮອງໄຟລ໌ບັນທຶກສອງຂອງເຄື່ອງແມ່ຂ່າຍກັບ mysqlbinlog, ທ່ານຕ້ອງລະບຸຊື່ໄຟລ໌ທີ່
ຕົວຈິງແລ້ວມີຢູ່ໃນເຄື່ອງແມ່ຂ່າຍ. ຖ້າທ່ານບໍ່ຮູ້ຊື່, ເຊື່ອມຕໍ່ກັບເຄື່ອງແມ່ຂ່າຍແລະນໍາໃຊ້
ຖະແຫຼງການ SHOW BINARY LOGS ເພື່ອເບິ່ງຊື່ປະຈຸບັນ. ສົມມຸດວ່າຄໍາຖະແຫຼງການ
ການຜະລິດຜົນຜະລິດນີ້:
mysql> ສະແດງໃຫ້ເຫັນ ໄບນາຣີ ບັນທຶກ;
---------------+----------+
| Log_name | ຂະໜາດໄຟລ໌ |
---------------+----------+
| binlog.000130 | 27459 |
| binlog.000131 | 13719 |
| binlog.000132 | 43268 |
---------------+----------+
ດ້ວຍຂໍ້ມູນນັ້ນ, ທ່ານສາມາດນໍາໃຊ້ mysqlbinlog ເພື່ອສໍາຮອງບັນທຶກຄູ່ກັບປະຈຸບັນ
ໄດເລກະທໍລີດັ່ງຕໍ່ໄປນີ້ (ໃສ່ແຕ່ລະຄໍາສັ່ງຢູ່ໃນແຖວດຽວ):
· ເພື່ອເຮັດການສຳຮອງຂໍ້ມູນແບບຄົງທີ່ຂອງ binlog.000130 ຜ່ານ binlog.000132, ໃຫ້ໃຊ້ອັນໃດອັນໜຶ່ງອັນນີ້.
ຄໍາສັ່ງ:
mysqlbinlog --read-from-remote-server --host=host_name -- ດິບ
binlog.000130 binlog.000131 binlog.000132
mysqlbinlog --read-from-remote-server --host=host_name -- ດິບ
--to-last-log binlog.000130
ຄໍາສັ່ງທໍາອິດກໍານົດທຸກຊື່ໄຟລ໌ຢ່າງຊັດເຈນ. ຊື່ທີສອງມີພຽງແຕ່
ໄຟລ໌ທໍາອິດແລະການນໍາໃຊ້ --to-last-log ເພື່ອອ່ານຜ່ານສຸດທ້າຍ. ຄວາມແຕກຕ່າງລະຫວ່າງສິ່ງເຫຼົ່ານີ້
ຄໍາສັ່ງແມ່ນວ່າຖ້າເຄື່ອງແມ່ຂ່າຍເກີດຂຶ້ນກັບເປີດ binlog.000133 ກ່ອນ mysqlbinlog
ມາຮອດທ້າຍຂອງ binlog.000132, ຄໍາສັ່ງທໍາອິດຈະບໍ່ອ່ານມັນ, ແຕ່ທີສອງ
ຄໍາສັ່ງຈະ.
· ເພື່ອເຮັດໃຫ້ສໍາຮອງຂໍ້ມູນທີ່ມີຊີວິດ mysqlbinlog ເລີ່ມຕົ້ນດ້ວຍ binlog.000130 ເພື່ອສຳເນົາທີ່ມີຢູ່ແລ້ວ
ໄຟລ໌ບັນທຶກ, ຈາກນັ້ນເຊື່ອມຕໍ່ເພື່ອຄັດລອກເຫດການໃຫມ່ຍ້ອນວ່າເຄື່ອງແມ່ຂ່າຍສ້າງພວກມັນ:
mysqlbinlog --read-from-remote-server --host=host_name -- ດິບ
--stop-never binlog.000130
ກັບ --ຢຸດ-ບໍ່ເຄີຍ, ມັນບໍ່ຈໍາເປັນຕ້ອງລະບຸ --to-last-log ເພື່ອອ່ານຈົນສຸດທ້າຍ
ໄຟລ໌ບັນທຶກເນື່ອງຈາກວ່າທາງເລືອກນັ້ນແມ່ນຫມາຍເຖິງ.
Output File Naming.PP ໂດຍບໍ່ມີການ -- ດິບ, mysqlbinlog ຜົນຜະລິດຂໍ້ຄວາມແລະ
--ຜົນໄດ້ຮັບ-ໄຟລ໌ ທາງເລືອກ, ຖ້າໃຫ້, ລະບຸຊື່ຂອງໄຟລ໌ດຽວທີ່ຜົນຜະລິດທັງຫມົດ
ຖືກຂຽນ. ກັບ -- ດິບ, mysqlbinlog ຂຽນນຶ່ງໄຟລ໌ຜົນຜະລິດຖານສອງສໍາລັບແຕ່ລະໄຟລ໌ບັນທຶກ
ໂອນຈາກເຄື່ອງແມ່ຂ່າຍ. ໂດຍຄ່າເລີ່ມຕົ້ນ, mysqlbinlog ຂຽນໄຟລ໌ໃນປະຈຸບັນ
ໄດເລກະທໍລີທີ່ມີຊື່ດຽວກັນກັບໄຟລ໌ບັນທຶກຕົ້ນສະບັບ. ເພື່ອແກ້ໄຂຊື່ໄຟລ໌ຜົນຜະລິດ,
ການນໍາໃຊ້ --ຜົນໄດ້ຮັບ-ໄຟລ໌ ທາງເລືອກ. ສົມທົບກັບ -- ດິບ, ການ --ຜົນໄດ້ຮັບ-ໄຟລ໌ ຄ່າທາງເລືອກແມ່ນ
ຖືກປະຕິບັດເປັນຄໍານໍາຫນ້າທີ່ດັດແປງຊື່ໄຟລ໌ຜົນຜະລິດ.
ສົມມຸດວ່າປະຈຸບັນເຄື່ອງແມ່ຂ່າຍມີໄຟລ໌ບັນທຶກສອງຊື່ binlog.000999 ຂຶ້ນໄປ. ຖ້າເຈົ້າ
ການນໍາໃຊ້ mysqlbinlog -- ດິບ ເພື່ອສໍາຮອງຂໍ້ມູນໄຟລ໌, ໄດ້ --ຜົນໄດ້ຮັບ-ໄຟລ໌ ທາງເລືອກຜະລິດໄຟລ໌ຜົນຜະລິດ
ຊື່ທີ່ສະແດງຢູ່ໃນຕາຕະລາງຕໍ່ໄປນີ້. ທ່ານສາມາດຂຽນໄຟລ໌ໃສ່ໄດເລກະທໍລີສະເພາະໂດຍ
ເລີ່ມຕົ້ນ --ຜົນໄດ້ຮັບ-ໄຟລ໌ ຄ່າກັບເສັ້ນທາງໄດເລກະທໍລີ. ຖ້າ --ຜົນໄດ້ຮັບ-ໄຟລ໌ ມູນຄ່າ
ປະກອບດ້ວຍຊື່ໄດເລກະທໍລີເທົ່ານັ້ນ, ຄ່າຕ້ອງສິ້ນສຸດດ້ວຍຕົວແຍກຊື່ເສັ້ນທາງ
ລັກສະນະ. ໄຟລ໌ຜົນຜະລິດຈະຖືກຂຽນທັບຖ້າພວກມັນມີຢູ່.
┌──────────────────────────── ┬──────────────── ─┐
│--ຜົນໄດ້ຮັບ-ໄຟລ໌ ທາງເລືອກ │ ຜົນຜະລິດ ເອກະສານ ຊື່ │
├─────────────────────────────────────────────── ─┤
│--result-file=x │ xbinlog.000999 ຂຶ້ນໄປ │
├─────────────────────────────────────────────── ─┤
│--result-file=/ tmp / │ /tmp/binlog.000999 ຂຶ້ນໄປ │
├─────────────────────────────────────────────── ─┤
│--result-file=/tmp/x │ /tmp/xbinlog.000999 ຂຶ້ນໄປ │
└──────────────────────── ┴───────────────── ─┘
ຕົວຢ່າງ: mysqldump + mysqlbinlog ສໍາລັບ Backup ແລະ Restore.PP ຕົວຢ່າງຕໍ່ໄປນີ້ອະທິບາຍ
ສະຖານະການທີ່ງ່າຍດາຍທີ່ສະແດງໃຫ້ເຫັນວິທີການນໍາໃຊ້ mysqldum ແລະ mysqlbinlog ຮ່ວມກັນເພື່ອສໍາຮອງຂໍ້ມູນ a
ຂໍ້ມູນຂອງເຊີບເວີແລະບັນທຶກຖານສອງ, ແລະວິທີການນໍາໃຊ້ສໍາຮອງຂໍ້ມູນໃນການຟື້ນຟູເຄື່ອງແມ່ຂ່າຍຖ້າຫາກວ່າການສູນເສຍຂໍ້ມູນ
ເກີດຂຶ້ນ. ຕົວຢ່າງສົມມຸດວ່າເຄື່ອງແມ່ຂ່າຍກໍາລັງແລ່ນຢູ່ໃນໂຮດ host_name ແລະຄັ້ງທໍາອິດຂອງມັນ
ໄຟລ໌ບັນທຶກຄູ່ມີຊື່ binlog.000999. ໃສ່ແຕ່ລະຄໍາສັ່ງໃນແຖວດຽວ.
ການນໍາໃຊ້ mysqlbinlog ເພື່ອເຮັດໃຫ້ການສໍາຮອງຂໍ້ມູນຢ່າງຕໍ່ເນື່ອງຂອງບັນທຶກຖານສອງ:
mysqlbinlog --read-from-remote-server --host=host_name -- ດິບ
--stop-never binlog.000999
ການນໍາໃຊ້ mysqldum ເພື່ອສ້າງໄຟລ໌ dump ເປັນພາບລວມຂອງຂໍ້ມູນຂອງເຄື່ອງແມ່ຂ່າຍ. ໃຊ້
--ຖານຂໍ້ມູນທັງໝົດ, --ເຫດການ, ແລະ -- ປົກກະຕິ ເພື່ອສໍາຮອງຂໍ້ມູນຂໍ້ມູນທັງຫມົດ, ແລະ --master-data=2 to
ປະກອບມີການປະສານງານບັນທຶກຄູ່ປະຈຸບັນໃນໄຟລ໌ dump.
mysqldump --host=host_name --all-databases --events --routines --master-data=2> dump_file
ປະຕິບັດການ mysqldum ຄຳສັ່ງແຕ່ລະໄລຍະເພື່ອສ້າງພາບຖ່າຍໃໝ່ໆຕາມທີ່ຕ້ອງການ.
ຖ້າຫາກວ່າການສູນເສຍຂໍ້ມູນເກີດຂຶ້ນ (ສໍາລັບການຍົກຕົວຢ່າງ, ຖ້າຫາກວ່າເຄື່ອງແມ່ຂ່າຍເກີດອຸປະສັກ), ໃຫ້ນໍາໃຊ້ໄຟລ໌ dump ທີ່ຜ່ານມາທີ່ສຸດເພື່ອ
ຟື້ນຟູຂໍ້ມູນ:
mysql --host=host_name -u ຮາກ -p dump_file
ຫຼັງຈາກນັ້ນ, ການນໍາໃຊ້ສໍາຮອງຂໍ້ມູນບັນທຶກຖານສອງເພື່ອ Re: ປະຕິບັດເຫດການທີ່ໄດ້ຮັບການຂຽນຫຼັງຈາກ
ພິກັດທີ່ລະບຸໄວ້ໃນໄຟລ໌ dump. ສົມມຸດວ່າຈຸດປະສານງານໃນໄຟລ໌ເບິ່ງຄືວ່າ
ນີ້:
-- ປ່ຽນ MASTER ເປັນ MASTER_LOG_FILE='binlog.001002', MASTER_LOG_POS=27284;
ຖ້າໄຟລ໌ບັນທຶກທີ່ສຳຮອງໄວ້ຫຼ້າສຸດມີຊື່ binlog.001004, ປະຕິບັດເຫດການບັນທຶກຄືນໃໝ່
ເຊັ່ນນີ້:
mysqlbinlog --start-position=27284 binlog.001002 binlog.001003 binlog.001004
| mysql --host=host_name -u ຮາກ -p
ທ່ານອາດຈະເຫັນວ່າມັນງ່າຍຂຶ້ນທີ່ຈະສໍາເນົາໄຟລ໌ສໍາຮອງຂໍ້ມູນ (ໄຟລ໌ dump ແລະໄຟລ໌ບັນທຶກຖານສອງ) ກັບ
ເຊີບເວີໂຮດເພື່ອເຮັດໃຫ້ມັນງ່າຍຕໍ່ການດໍາເນີນການຟື້ນຟູ, ຫຼືຖ້າ MySQL ບໍ່ອະນຸຍາດ
ການເຂົ້າເຖິງຮາກທາງໄກ.
ລະບຸ ການ MYSQLBINLOG ຜູ້ໃຫ້ບໍລິການ ID
ໃນເວລາທີ່ຮຽກຮ້ອງໃຫ້ມີ --read-from-remote-server ທາງເລືອກ, mysqlbinlog ເຊື່ອມຕໍ່ກັບ MySQL
ເຊີບເວີ, ລະບຸ ID ເຊີບເວີເພື່ອລະບຸຕົວຂອງມັນເອງ, ແລະຮ້ອງຂໍໄຟລ໌ບັນທຶກຖານສອງຈາກ
ເຊີບເວີ. ທ່ານສາມາດນໍາໃຊ້ mysqlbinlog ເພື່ອຮ້ອງຂໍໄຟລ໌ບັນທຶກຈາກເຄື່ອງແມ່ຂ່າຍໃນຫຼາຍວິທີ:
· ລະບຸຊຸດໄຟລ໌ທີ່ມີຊື່ຢ່າງຈະແຈ້ງ: ສໍາລັບແຕ່ລະໄຟລ໌, mysqlbinlog ເຊື່ອມຕໍ່ແລະ
ອອກຄຳສັ່ງ Binlog dump. ເຊີບເວີສົ່ງໄຟລ໌ແລະຕັດການເຊື່ອມຕໍ່. ມີຫນຶ່ງ
ການເຊື່ອມຕໍ່ຕໍ່ໄຟລ໌.
·ລະບຸໄຟລ໌ເລີ່ມຕົ້ນແລະ --to-last-log: mysqlbinlog ເຊື່ອມຕໍ່ແລະອອກ Binlog
ຄໍາສັ່ງ dump ສໍາລັບໄຟລ໌ທັງຫມົດ. ເຄື່ອງແມ່ຂ່າຍສົ່ງໄຟລ໌ທັງຫມົດແລະຕັດການເຊື່ອມຕໍ່.
·ລະບຸໄຟລ໌ເລີ່ມຕົ້ນແລະ --ຢຸດ-ບໍ່ເຄີຍ (ຊຶ່ງຫມາຍຄວາມວ່າ --to-last-log): mysqlbinlog
ເຊື່ອມຕໍ່ແລະອອກຄໍາສັ່ງ dump Binlog ສໍາລັບໄຟລ໌ທັງຫມົດ. ເຊີບເວີສົ່ງໄຟລ໌ທັງໝົດ,
ແຕ່ບໍ່ໄດ້ຕັດການເຊື່ອມຕໍ່ຫຼັງຈາກສົ່ງອັນສຸດທ້າຍ.
ກັບ --read-from-remote-server ເທົ່ານັ້ນ, mysqlbinlog ເຊື່ອມຕໍ່ໂດຍໃຊ້ server ID ຂອງ 0, ເຊິ່ງ
ບອກເຊີບເວີໃຫ້ຕັດການເຊື່ອມຕໍ່ຫຼັງຈາກສົ່ງໄຟລ໌ບັນທຶກທີ່ຮ້ອງຂໍຫຼ້າສຸດ.
ກັບ --read-from-remote-server ແລະ --ຢຸດ-ບໍ່ເຄີຍ, mysqlbinlog ເຊື່ອມຕໍ່ໂດຍໃຊ້ nonzero
ID ເຊີບເວີ, ດັ່ງນັ້ນເຄື່ອງແມ່ຂ່າຍບໍ່ຕັດການເຊື່ອມຕໍ່ຫຼັງຈາກສົ່ງໄຟລ໌ບັນທຶກສຸດທ້າຍ. ເຊີບເວີ
ID ແມ່ນ 65535 ໂດຍຄ່າເລີ່ມຕົ້ນ, ແຕ່ນີ້ສາມາດປ່ຽນແປງໄດ້ດ້ວຍ --stop-never-slave-server-id.
ດັ່ງນັ້ນ, ສໍາລັບສອງວິທີທໍາອິດຂອງການຮ້ອງຂໍໄຟລ໌, ເຄື່ອງແມ່ຂ່າຍຕັດການເຊື່ອມຕໍ່ເພາະວ່າ
mysqlbinlog ລະບຸ ID ເຊີບເວີຂອງ 0. ມັນບໍ່ໄດ້ຕັດການເຊື່ອມຕໍ່ຖ້າ --ຢຸດ-ບໍ່ເຄີຍ ແມ່ນໃຫ້
ເນື່ອງຈາກວ່າ mysqlbinlog ລະບຸ ID ເຊີບເວີທີ່ບໍ່ແມ່ນສູນ.
COPYRIGHT
ສະຫງວນລິຂະສິດ © 1997, 2014, Oracle ແລະ/ຫຼື ສາຂາຂອງມັນ. ສະຫງວນລິຂະສິດທັງໝົດ.
ເອກະສານນີ້ແມ່ນຊອບແວຟຣີ; ທ່ານສາມາດແຈກຢາຍມັນແລະ / ຫຼືປັບປຸງແກ້ໄຂມັນພຽງແຕ່ພາຍໃຕ້ການ
ຂໍ້ກໍານົດຂອງໃບອະນຸຍາດສາທາລະນະທົ່ວໄປຂອງ GNU ທີ່ຈັດພີມມາໂດຍມູນນິທິຊອບແວຟຣີ;
ສະບັບ 2 ຂອງໃບອະນຸຍາດ.
ເອກະສານນີ້ໄດ້ຖືກແຈກຢາຍໂດຍຫວັງວ່າມັນຈະເປັນປະໂຫຍດ, ແຕ່ບໍ່ມີອັນໃດ
ການຮັບປະກັນ; ໂດຍບໍ່ມີການຮັບປະກັນໂດຍຫຍໍ້ຂອງ MERCHANTABILITY ຫຼື FITNESS ສໍາລັບສະເພາະ.
ຈຸດປະສົງ. ເບິ່ງໃບອະນຸຍາດສາທາລະນະທົ່ວໄປຂອງ GNU ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.
ທ່ານຄວນໄດ້ຮັບສໍາເນົາຂອງໃບອະນຸຍາດສາທາລະນະທົ່ວໄປ GNU ພ້ອມກັບໂຄງການ;
ຖ້າບໍ່ແມ່ນ, ຂຽນຫາ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301 USA ຫຼືເບິ່ງ http://www.gnu.org/licenses/.
ຫມາຍເຫດ
1. MySQL Internals: The Binary Log
http://dev.mysql.com/doc/internals/en/binary-log.html
ໃຊ້ mysqlbinlog ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net