tail -f เทียบเท่ากับฐานข้อมูลการบันทึก MySQL


12

มีการตัดสินใจแล้วว่าเราควรย้ายไปใช้ฐานข้อมูล (MySQL) สำหรับบันทึกแอปพลิเคชันของเรา (เป็นแอปพลิเคชัน Java ที่ใช้ lib logback) ฉันหวังว่าจะพบสิ่งtail -fที่ฉันสามารถใช้กับตารางที่ระบุในฐานข้อมูลนั้นที่จะแสดงแถวใหม่ให้ฉันตามที่พวกเขาถูกเพิ่มเข้ามา (คล้ายกับวิธีการtail -fทำงานของไฟล์บันทึก)

คำตอบ:


5

เปิดการบันทึกไบนารีของ MySQL จากนั้นคุณสามารถใช้mysqlbinlogคำสั่งเพื่อดูคำสั่งการปรับเปลี่ยนข้อมูลทั้งหมด


คุณสามารถแสดงตัวอย่างของวิธีการทำเช่นนี้ในภาษาที่คุณเลือกหรือทุบตี?
Alexander Mills

7

ฉันไม่คิดว่าบางคนเข้าใจคำถาม (หรือไม่) คุณไม่ต้องการบันทึกการสืบค้นจากฐานข้อมูล ค่อนข้างล็อกจากแอปพลิเคชันจะเข้าไปในฐานข้อมูล หากเป็นไฟล์คุณสามารถบันทึกไฟล์ได้ คุณจะจัดตารางอย่างไรเพื่อที่เมื่อเพิ่มแถวใหม่มันจะถูกส่งออก?

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

current_pos = select max(seq) from table
while true
  new_pos = select max(seq) from table
  if new_pos > current_pos
    select * from table where seq > current_pos
    current_pos = new_pos
  endif
  sleep 1
endwhile

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

3

ดูเหมือนว่าพวกเราหลายคนไม่เข้าใจคำถามของคุณ คุณหมายถึงอะไรโดย"การบันทึกฐานข้อมูล"ซึ่งไม่ใช่คำศัพท์มาตรฐานของ MySQL

ใช้ MySQL General Query Logซึ่งบันทึกแต่ละคำสั่งที่ได้รับจากลูกค้า

จากนั้นคุณสามารถตั้งค่าlog_output = TABLEใน my.cnf ของคุณ ไฟล์จะถูกเขียนไปยัง $ mysql_data_directory / general_log.CSV คุณสามารถtail -fไฟล์นี้เพื่อดูแบบสอบถามในเวลาจริง


2

นี่คือสิ่งที่ฉันใช้ ดูเหมือนทางออกที่ง่ายที่สุดแม้ว่าจะไม่มีประสิทธิภาพมาก:

watch "mysql db_name -e '(SELECT * FROM my_table ORDER BY id DESC LIMIT 10) ORDER BY id ASC;'"


1

คุณสามารถทำแฮ็คได้โดยใช้ tail -f ในไฟล์ฐานข้อมูล (/var/lib/mysql/database_name/table_name.MY*) แล้วเรียกใช้คิวรีของคุณทุกครั้งที่อ่านบรรทัด


1

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


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.