MySQL hizmetini yeniden başlatmadan my.cnf dosyasını yeniden yükle


26

Bir çoğaltma yöneticisi olarak çalışacak bir MySQL sunucusunu yapılandırmam gerekiyor.

İkili günlükleri etkinleştirmek için my.cnf dosyasını değiştirdim, ancak şimdi yapılandırmayı yeniden yüklemek için hizmeti yeniden yüklemem gerekiyor /etc/init.d/mysqld restart. Sorun, sunucunun saniyede birkaç sorgu alması ve bu arada ulaşabilecek tüm verileri kaybetmek istemem.

Hizmeti yeniden başlatmadan my.cnf yapılandırma dosyasını yeniden yüklemenin bir yolu var mı?


3
/etc/init.d/restarttüm ana bilgisayarı yeniden başlatır. Muhtemelen düşünüyorsun/etc/init.d/mysqld restart
Kevin M

Evet, mysqld'in yeniden başlatıldığını söylüyorum. Düzenlenen. Teşekkürler!
David Espart

Yanıtlar:


28

MySQL Spesifik olarak:
my.cnf'deki seçenekler sistem değişkenleridir . Bu değişkenler dinamiktir (çalışma zamanında değiştirilebilir) veya dinamik değil. Dinamik olanlar, SET değişken sözdizimi ile çalışma zamanında değiştirilebilir. Değişkenleri ile görebilirsiniz SHOW VARIABLES;. Ancak kılavuzdaki bu bağlantıya göre , ikili günlük seçeneği dinamik değildir. Yeniden başlamanız gerekiyor gibi görünüyor. Ancak bunu onaylamak için MySQL'i kendimden biraz daha iyi bilen birini beklemek isteyebilirsiniz.

Genel Olarak Daemon'lar:
Linux'ta /etc/init.d/, daemon'ları (servisleri) başlatan ve durduran komut dosyalarını içerir. Bunlar komut dosyaları olduğundan, onları bir metin düzenleyicisiyle görüntüleyebilirsiniz. Bu komut dosyalarının çoğu yeniden yükleme argümanına sahip olacaktır. MySQL komut dosyama bakarak, argüman olarak yeniden yükle mysqladmin komutunu kullanır. Yani mysqladmin yeniden yükleme altında manuel diyor ki:

Tekrar yükle

Reload the grant tables.

Genel olarak öyle gözüküyor, bu yapılandırma değişiklikleri için değil, ayrıcalıklardaki değişiklikler için (Belki eşdeğer floş ayrıcalıkları komutu?).


2
Hey, çok iyi bir açıklama. Yine de yeniden başlatmadan bunu yapmanın bir yolu yok gibi görünüyor. Kimse bir çözümü ya da geçici çözümü yanıtlamazsa sorunuzu kabul edeceğim. Teşekkür ederim.
David Espart

Bağlantınıza göre SET GLOBAL binlog_format = 'STATEMENT'; hile yapar mıydı?
Kyle Smith

Diğer Kyle: Öyle gözüküyor, ama bence ikili günlük kaydı bunun bir şey yapması için etkinleştirilmeliydi (ve belki de ayarlanabilir). Bu değişken, benim mysql'nin 5.0.x sürümünden daha sonra tanıtıldı, bu yüzden test edemiyorum.
Kyle Brandt

SET komutunun sentaksını aramak zorunda kaldım - işte başkasının ihtiyaç duyduğu durumlarda bir link: dev.mysql.com/doc/refman/5.1/en/set-option.html
Mark McDonald

4
Ayrıca, MySQL sürümlerinde şans eseri olarak hangi değişkenlerin dinamik değişimler olduğunu söylemeye değer. Örneğin, 5.x'te yavaş sorgu günlüğünü anında etkinleştirebilirsiniz, ancak 4.x'te yapamazsınız (dün keşfettiğim gibi!).
kümesler

1

Bunun için bir çözüm arıyordum ama bulduğum sınırlı yardımdan memnun kalmadım. Bir adam öldürmeyi önerdi -HUP .. benim için işe yaramadı ..

Yaptığım şey apache örneklerini duraklatmak .. ve daha sonra devam etmekti .. saniyede ortalama 25 aktif isteğim olduğu bir sunucudaki cazibem gibi çalıştı.

sudo (açıkçası) pkill ile - STOP httpd && /etc/init.d/mysqld yeniden başlat && pkill -CONT httpd

elbette apache işleminizin adı ve / veya mysql restart komut dosyaları benimkinden farklı olabilir, ancak doğru bir fikir edindiniz!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.