Saya harus mengkonfigurasi server MySQL untuk bertindak sebagai master replikasi.
Saya memodifikasi my.cnf untuk mengaktifkan log biner, tetapi sekarang untuk memuat ulang konfigurasi saya harus memuat ulang layanan /etc/init.d/mysqld restart
. Masalahnya adalah server menerima beberapa permintaan per detik dan saya tidak ingin kehilangan semua data yang bisa tiba sementara itu.
Apakah ada cara untuk memuat ulang file konfigurasi my.cnf tanpa memulai ulang layanan?
mysql
replication
David Espart
sumber
sumber
/etc/init.d/restart
akan me-restart seluruh host. Anda mungkin berpikir tentang/etc/init.d/mysqld restart
Jawaban:
Khususnya MySQL:
Opsi di my.cnf adalah variabel sistem . Variabel-variabel ini baik dinamis (dapat diubah saat runtime) atau tidak dinamis. Yang dinamis, dapat diubah pada saat dijalankan dengan sintaks variabel SET. Anda dapat melihat variabel dengan
SHOW VARIABLES;
. Tetapi menurut tautan ini dalam manual , opsi log biner tidak dinamis. Jadi sepertinya Anda harus memulai ulang. Anda mungkin ingin menunggu seseorang yang tahu mysql sedikit lebih baik dari saya untuk mengkonfirmasi ini.Daemon secara umum:
Di Linux, /etc/init.d/ menampung skrip yang memulai dan menghentikan daemon (layanan). Karena ini adalah skrip, Anda dapat melihatnya dengan editor teks. Banyak dari skrip ini akan mengambil argumen reload. Melihat skrip mysql saya, memuat ulang sebagai argumen menggunakan perintah mysqladmin. Jadi manual untuk mysqladmin di bawah reload mengatakan:
Jadi sepertinya secara umum, ini bukan untuk perubahan konfigurasi, melainkan perubahan pada privilege (Mungkin perintah privilege flush yang setara?).
sumber
Saya telah mencari solusi untuk ini tetapi tidak puas dengan bantuan terbatas yang saya temukan. Satu orang menawarkan pembunuhan -HUP .. tidak bekerja untuk saya ..
apa yang saya lakukan adalah untuk menjeda instance apache .. dan kemudian melanjutkannya .. bekerja seperti pesona di server di mana saya memiliki rata-rata 25 permintaan aktif per detik.
dengan sudo (jelas) pkill -STOP httpd && /etc/init.d/mysqld restart && pkill -CONT httpd
Tentu saja nama proses apache Anda dan / atau skrip restart mysql mungkin berbeda dengan saya, tetapi Anda mendapatkan ide yang tepat!
sumber