ไม่นานหลังจากอัปเดตพารามิเตอร์ expire_logs_days และเริ่มต้น sql ใหม่ binlogs เก่าจะถูกลบอย่างไร


16

MySQL 5.1.x | InnoDB | ของ windows

ไดเรกทอรีข้อมูล mysql ของฉันเริ่มเต็มไปด้วยบันทึกถังขยะ

ขณะนี้ฉันมีการตั้งค่าต่อไปนี้ที่กำหนดค่าในเซิร์ฟเวอร์ windows mysql ของฉัน:

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=25

ฉันวางแผนที่จะเปลี่ยนการตั้งค่า expire_logs_days เป็นexpire_logs_days=10และตีกลับบริการ mysql ไม่นานหลังจากทำการเปลี่ยนแปลงฉันสามารถคาดหวังได้ว่าถังขยะเก่าจะได้รับการล้าง

นี่เป็นเพียงส่วนหนึ่งของงานที่ทำในตอนกลางคืนหรือไม่? หรือควรจะทันที

คำตอบ:


29

มันจะถูกจัดการทันทีเมื่อเริ่มต้น mysql

คุณไม่ต้องรอการรีสตาร์ท mysql

ก่อนอื่นให้ตั้งค่าexpire_logs_daysเป็น 10 ใน /etc/my.cnf

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=10

ถัดไปเข้าสู่ mysql และเรียกใช้สิ่งนี้

PURGE BINARY LOGS BEFORE (date(now()) + interval 0 second - interval 10 day);

บันทึกวันที่และเวลาของแบบสอบถาม

mysql> select date(now()) + interval 0 second - interval 10 day;
+---------------------------------------------------+
| date(now()) + interval 0 second - interval 10 day |
+---------------------------------------------------+
| 2012-12-11 00:00:00                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql>

ดังนั้นคำสั่งPURGE BINARY LOGSจะลบ binlogs ทั้งหมดที่ประทับวันที่ก่อน2012-12-11 00:00:00หน้า

ในที่สุดเรียกใช้คำสั่งนี้

SET GLOBAL expire_logs_days = 10;

แค่นั้นแหละ. ไม่มีการเริ่มต้นใหม่ที่จำเป็นสำหรับการติดตั้งexpire_logs_days

สำหรับพารามิเตอร์การจำลองแบบจำเป็นต้องมีการรีสตาร์ท


การตอบสนองที่ยอดเยี่ยม ขอขอบคุณ. ฉันขอขอบคุณรายละเอียด
Mike B

โปรดรีเฟรชฉันแก้ไขข้อผิดพลาด
RolandoMySQLDBA

1
เพิ่งทราบว่า expire_logs_days เลิกใช้แล้วใน MySQL 8.0 (ตามรายละเอียดในลิงก์ที่ให้โดย @RolandoMySQLDBA) ใช้ binlog_expire_logs_seconds แทนการดำเนินต่อไป
John Rix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.