โหลด my.cnf โดยไม่ต้องเริ่มบริการ MySQL ใหม่


26

ฉันต้องกำหนดค่าเซิร์ฟเวอร์ MySQL เพื่อทำหน้าที่เป็นแบบจำลองต้นแบบ

ฉันแก้ไข my.cnf เพื่อเปิดใช้งานบันทึกแบบไบนารี แต่ตอนนี้เพื่อโหลดการกำหนดค่าใหม่ฉันต้องโหลดบริการ/etc/init.d/mysqld restartอีกครั้งด้วย ปัญหาคือว่าเซิร์ฟเวอร์ได้รับหลายแบบสอบถามต่อวินาทีและฉันไม่ต้องการสูญเสียข้อมูลทั้งหมดที่อาจมาถึงในขณะเดียวกัน

มีวิธีการโหลดไฟล์การตั้งค่าใหม่ my.cnf โดยไม่ต้องเริ่มบริการใหม่หรือไม่?


3
/etc/init.d/restartจะรีสตาร์ทโฮสต์ทั้งหมด คุณอาจกำลังคิดว่า/etc/init.d/mysqld restart
M

ใช่ฉันทราบ mysqld รีสตาร์ท แก้ไข ขอบคุณ!
David Espart

คำตอบ:


28

MySQL specificly:
ตัวเลือกใน my.cnf มีตัวแปรระบบ ตัวแปรเหล่านี้เป็นแบบไดนามิก (สามารถเปลี่ยนแปลงได้ที่รันไทม์) หรือไม่แบบไดนามิก คนที่เป็นแบบไดนามิกสามารถเปลี่ยนแปลงได้ในเวลาทำงานกับไวยากรณ์ของตลาดหลักทรัพย์ SHOW VARIABLES;ท่านสามารถเข้าดูตัวแปรที่มี แต่ตามลิงค์นี้ในคู่มือตัวเลือกไบนารีบันทึกไม่ได้เป็นแบบไดนามิก ดังนั้นดูเหมือนว่าคุณจะต้องเริ่มต้นใหม่ คุณอาจต้องการรอคนที่รู้จัก mysql ดีกว่าตัวเองเล็กน้อยเพื่อยืนยันเรื่องนี้อย่างไรก็ตาม

Daemons โดยทั่วไป:
ใน Linux /etc/init.d/ จะมีสคริปต์ที่สตาร์ทและหยุด daemons (services) เนื่องจากสิ่งเหล่านี้เป็นสคริปต์คุณสามารถดูได้ด้วยตัวแก้ไขข้อความ สคริปต์เหล่านี้จำนวนมากจะรับอาร์กิวเมนต์ที่โหลดซ้ำ ดูที่สคริปต์ mysql ของฉันโหลดใหม่เป็นอาร์กิวเมนต์ใช้คำสั่ง mysqladmin ดังนั้นคู่มือสำหรับ mysqladmin ภายใต้โหลดกล่าวว่า:

โหลด

Reload the grant tables.

ดังนั้นโดยทั่วไปดูเหมือนว่านี่ไม่ได้มีไว้สำหรับการเปลี่ยนแปลงการกำหนดค่า แต่เป็นการเปลี่ยนแปลงในสิทธิ์พิเศษ (อาจเป็นคำสั่งล้างสิทธิ์เทียบเท่าหรือไม่)


2
เฮ้คำอธิบายที่ดีมาก ดูเหมือนว่าไม่มีทางที่จะทำได้โดยไม่ต้องรีสตาร์ท หากไม่มีใครตอบวิธีแก้ปัญหาหรือวิธีแก้ปัญหาฉันจะยอมรับคำถามของคุณ ขอขอบคุณ.
David Espart

ตามลิงค์ของคุณดูเหมือนว่า SET GLOBAL binlog_format = 'STATEMENT'; จะทำเคล็ดลับได้อย่างไร
Kyle Smith

อื่น ๆ ไคล์: ดูเหมือนว่า แต่ฉันคิดว่าการบันทึกแบบไบนารีจะต้องเปิดใช้งานเพื่อที่จะทำอะไรก็ได้ (และอาจถูกตั้งค่า) ตัวแปรนั้นถูกนำมาใช้ภายหลัง mysql เวอร์ชัน 5.0.x ปัจจุบันของฉันดังนั้นฉันจึงไม่สามารถทดสอบได้
Kyle Brandt

ผมต้องค้นหาไวยากรณ์คำสั่งตลาดหลักทรัพย์ - นี่คือการเชื่อมโยงในกรณีที่คนอื่นต้องการมัน: dev.mysql.com/doc/refman/5.1/en/set-option.html
มาร์คแมคโดนั

4
นอกจากนี้ยังมีมูลค่าการกล่าวถึงตัวแปรที่เปลี่ยนแปลงแบบไดนามิกเมื่อคุณมีรุ่น MySQL ตัวอย่างเช่นใน 5.x คุณสามารถเปิดใช้งานบันทึกการสืบค้นที่ช้าแบบ on-the-fly แต่ใน 4.x คุณไม่สามารถ (ตามที่ฉันค้นพบเมื่อวานนี้!)
Coops

1

ฉันได้มองหาวิธีแก้ปัญหาสำหรับเรื่องนี้ แต่ก็ไม่พอใจกับความช่วยเหลือที่ จำกัด ที่ฉันพบ หนึ่ง chap เสนอการฆ่า -HUP .. ไม่ได้ผลสำหรับฉัน ..

สิ่งที่ฉันทำคือหยุดอินสแตนซ์ apache .. แล้วทำต่อในภายหลัง .. ทำงานเหมือนมีเสน่ห์บนเซิร์ฟเวอร์ที่ฉันมีคำขอเฉลี่ยที่ใช้งานอยู่ 25 คำขอต่อวินาที

ด้วย sudo (ชัด) pkill -STOP httpd && /etc/init.d/mysqld รีสตาร์ท && pkill -CONT httpd

ofcourse ชื่อกระบวนการอาปาเช่ของคุณและ / หรือสคริปต์รีสตาร์ท mysql อาจแตกต่างจากของฉัน แต่คุณได้รับความคิดที่ถูกต้อง!

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