MySQL Salt-Okunur Sunucu Hatası: Failover Sonrası Eski Primary, Replica Yazma Koruması ve ProxySQL Yönlendirmesi
Replica düğümüne yazma girişimi veya failover sonrası eski birincil sunucunun read_only kalması, acil topoloji kontrolü ve ProxySQL writer/reader ayrımı.
Operasyonel Doğrulama & Güvenilirlik Standardı
Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.
▸Belirti
Uygulama INSERT, UPDATE veya DELETE sorgusu çalıştırdığında anında engellenir:
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement
ERROR 1839 (HY000): Cannot execute statement: server is running with the --super-read-only option enabled▸Sahada Ne Görürsün?
Otomatik yük devretme (Orchestrator, Group Replication) sonrasında uygulama yazamaz hale gelir. Okuma sorguları sorunsuz çalışırken tüm veri girişleri durur.
▸Kök Neden Matrisi
| Olasılık | Kök Neden | Açıklama |
|---|---|---|
| %65 | Uygulamanın Replica Düğümüne Bağlanması | Uygulama bağlantı havuzu writer yerine replica IP'sine yönlenmiştir. |
| %25 | Failover Sonrası Eski Primary Demote Kalması | Birincil sunucu failover geçirmiş, eski sunucu topolojide demote edilmiş ve read-only durumuna getirilmiştir. |
| %10 | `super_read_only` Koruması | SUPER yetkisine sahip kullanıcıların bile yazmasını engelleyen emniyet kilidi açıktır. |
▸ACİL RUNBOOK (0-5dk)
-- 1. Sunucunun salt okunur durumunu denetle
SELECT @@read_only AS ro, @@super_read_only AS sro;
-- 2. Bu sunucunun gerçek rolünü (Primary mi Replica mı) doğrula
SELECT * FROM performance_schema.replication_group_members;
-- veya asenkron replikasyon için:
SHOW REPLICA STATUS\G
-- 3. Eğer BU SUNUCU GERÇEK PRIMARY ise yazmayı aç:
SET GLOBAL read_only = OFF;
SET GLOBAL super_read_only = OFF;▸KALICI BLUEPRINT
- 1ProxySQL / MySQL Router: Uygulamaların veritabanı IP'lerine doğrudan bağlanması yasaklanmalı; ProxySQL port 6033 (writer) ve 6034 (reader) ile otomatik topoloji takibi yapılmalıdır.
- 2Replica'larda `super_read_only = ON` Standardı: Tüm replica sunucularında
super_read_only = ONzorunlu kılınarak root kullanıcısının dahi veri bozması engellenmelidir.
▸Doğrulama
SELECT @@read_only, @@super_read_only;
CREATE TABLE IF NOT EXISTS _health_check (id INT PRIMARY KEY);
DROP TABLE _health_check;Diğer Veritabanı Hata Teşhisleri
Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.
MySQL ERROR 1045 Access denied: root Şifresi Sıfırlama Rehberi
MySQL 1045 hatasının dört nedeni, "using password: YES/NO" ayrımının anlamı ve kilitli kalınca --init-file ile güvenli şifre sıfırlama.
MySQL Deadlock ERROR 1213: Grafiği Okuma ve Kalıcı Önleme
MySQL 1213 deadlock hatasının nedeni, LATEST DETECTED DEADLOCK çıktısını okuma, gap lock kaynaklı kilitlenmeler ve uygulama tarafında retry tasarımı.
MySQL Lock wait timeout exceeded: Bloklayan İşlemi Bulma
1205 lock wait timeout hatasında bloklayan işlemi performance_schema ile bulma, KILL kararını verme ve kilidi kalıcı olarak azaltma yöntemleri.