ปิดใช้งานการบันทึก MySQL แบบไบนารีด้วยตัวแปร log_bin


35

ไฟล์เริ่มต้น MySQL config /etc/mysql/my.cnf ที่ติดตั้งโดยแพ็คเกจ debian บางตัวที่ใช้ APT มักจะตั้งค่าตัวแปร log_bin ดังนั้น binlog จึงเปิดใช้งาน:

log_bin = /var/log/mysql/mysql-bin.log

เมื่อฉันต้องการปิดการใช้งานการบันทึกแบบไบนารีในการติดตั้งเช่นนั้นให้ใส่เครื่องหมายบรรทัดใน my.cnf แต่แน่นอนว่ามีวิธีการปิดการใช้งานการบันทึกแบบไบนารีโดยการตั้งค่าอย่างละเอียด log_bin เป็น OFF ในลักษณะเดเบียนฉันหมายถึง ไฟล์รวมเช่น /etc/mysql/conf.d/myCustomFile.cnf ดังนั้น my.cnf เริ่มต้นจะไม่เปลี่ยนแปลงและสามารถอัปเดตได้ง่ายโดย apt หากจำเป็น

ฉันลอง "log_bin = 0", "log_bin = ปิด" หรือ "log_bin =" แต่ไม่มีใครทำงาน ...

คำตอบ:


42

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

ส่วนสำคัญของคำถามคือ:

ฉันหมายถึงในไฟล์รวมเช่น /etc/mysql/conf.d/myCustomFile.cnf

skip-log-binคุณสามารถทำเช่นนี้จากแฟ้มตัวเลือกรวมโดยใช้ตัวเลือก เช่นคุณอาจสร้าง/etc/mysql/conf.d/disable_binary_log.cnfด้วยเนื้อหาต่อไปนี้:

[mysqld]
skip-log-bin

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


1
เยี่ยมมากสิ่งที่ฉันคาดหวัง ซึ่งทำงานได้ดีบน MariaDB 10.0 อย่างน้อย ขอบคุณมาก.
Nicolas Payart


5

คุณสามารถดูได้เช่นนี้ log_bin ไม่ควรยอมรับพารามิเตอร์ทั้งที่คุณใส่:

log_bin

หรือไม่มีอะไรเลยเพราะเป็นพารามิเตอร์บูลีน

อย่างไรก็ตามหากมีการตั้งค่าบันทึกจะถูกเปิดใช้งานและค่าจะตีความว่าเป็นชื่อฐานไบนารี

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


มันใช้งานไม่ได้กับ MariaDB
MechanTOurS

เนื่องจากฉันใช้ MariaDB และฉันมีบรรทัดเดียวกันนี้ใน config ของฉันฉันมั่นใจมากว่ามันจะทำงานได้
jynus

4

หากคุณไม่ได้จำลองคุณสามารถปิดการใช้งาน binlogging ได้โดยเปลี่ยนไฟล์ my.ini หรือ my.cnf เปิด my.ini หรือ /etc/my.cnf (/etc/mysql/my.cnf) ของคุณให้ป้อน:

# vi /etc/my.cnf

ค้นหาบรรทัดที่อ่าน "log_bin" และลบหรือใส่ความคิดเห็นดังต่อไปนี้:

#log_bin = /var/log/mysql/mysql-bin.log

คุณต้องลบหรือแสดงความคิดเห็นบรรทัดต่อไปนี้:

#expire_logs_days = 10

#max_binlog_size = 100M

ปิดและบันทึกไฟล์ ในที่สุดรีสตาร์ทเซิร์ฟเวอร์ mysql:

# service mysql restart


1
ฉันคิดว่า OP เข้าใจสิ่งนี้ซึ่งเป็นสาเหตุที่เขาเขียนว่า: "ฉันหมายถึงในไฟล์ที่รวมไว้เช่น /etc/mysql/conf.d/myCustomFile.cnf ดังนั้น my.cnf จึงไม่เปลี่ยนแปลง"
Peter V. Mørch

1

จากคู่มือสำหรับ MariaDB ( https://mariadb.com/kb/en/library/activating-the-binary-log/ )

หากคุณไม่ได้ระบุชื่อ (ซึ่งอาจเป็นทางเลือกรวมถึงพา ธ สัมบูรณ์) ค่าเริ่มต้นคือ datadir / log-basename-bin, datadir / mysql-bin หรือ datadir / mariadb-bin

อย่างไรก็ตาม

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

SET sql_log_bin = 0;

SET sql_log_bin = 1;

อย่างไรก็ตามถ้าคุณบอกว่ามันถูกเปิดใช้งานโดยค่าเริ่มต้นในระหว่างการติดตั้งคุณต้องปิดการใช้งานโดยการลบบรรทัดออกจากไฟล์ my.cnf ของคุณแล้วเริ่ม mysqld ใหม่ นอกจากนี้คุณยังสามารถล้างข้อมูลไบนารี ( https://dev.mysql.com/doc/refman/5.6/th/purge-binary-logs.html )

PURGE BINARY LOGS

สุดท้ายตามคำตอบของผู้โพสต์คนอื่น ๆ กล่าวถึงในMySQL 8มีตัวเลือกให้ปิดการบันทึกแบบไบนารีจากไฟล์กำหนดค่าโดยใช้--skip-log-binหรือ--disable-log-binตัวเลือกในส่วน [mysqld] ของไฟล์ปรับแต่ง

หากต้องการปิดใช้งานการบันทึกแบบไบนารีคุณสามารถระบุ--skip-log-binหรือ --disable-log-binตัวเลือกเมื่อเริ่มต้น หากระบุตัวเลือกอย่างใดอย่างหนึ่งเหล่านี้และ--log-binระบุด้วยตัวเลือกที่ระบุในภายหลังจะมีความสำคัญกว่า เมื่อการบันทึกแบบไบนารีถูกปิดใช้งานตัวแปรระบบ log_bin จะถูกตั้งค่าเป็นปิด


0

อย่างที่ฉันรู้หลังจากอัปเดตแพ็คเกจไฟล์ config ควรเป็นไฟล์เก่าดังนั้นหลังจากอัปเดตคุณจะมีไฟล์กำหนดค่าเดียวกัน มิฉะนั้นคุณสามารถสร้างไฟล์กำหนดค่าที่สองในเส้นทาง $ MYSQL_HOME / my.cnf อันนี้สำหรับตัวเลือกเฉพาะของเซิร์ฟเวอร์และอย่างที่ฉันรู้จะเขียนทับการตั้งค่าใน global /etc/my.cnf


1
ใช่นโยบายเริ่มต้นของเดเบียนไม่ได้เขียนทับไฟล์กำหนดค่าใน / etc แต่คำถามของฉันคือวิธีการเขียนทับการตั้งค่า log_bin อย่างแม่นยำด้วย "ค่า null" โดยไม่แสดงความคิดเห็นบรรทัดใน /etc/mysql/my.cnf
Nicolas Payart

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