dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Hata Teşhis Kütüphanesi/mysql-1290-server-running-read-only-option
MySQL
MySQL 8.0 - 8.4Replikasyon & HA
7 dk okuma
ERROR 1290 (HY000): The MySQL server is running with the --read-only option

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ı.

İnceleyen:Kıdemli Veritabanı Mimarı & SRE (dataiotech Labs)
Test Edilen Sürümler: MySQL 8.0 / 8.4 LTS / 9.0

Operasyonel Doğrulama & Güvenilirlik Standardı

Son Teknik İnceleme: 2 Kasım 2026
Test Edilen SürümlerMySQL 8.0.36, 8.4.1 LTS (Group Replication / Orchestrator)
Gerekli YetkiSYSTEM_VARIABLES_ADMIN veya SUPER yetkisi
Risk Seviyesi
HighYanlışlıkla replica üzerinde read_only=OFF yapmak veri tutarsızlığına (split-brain) neden olur
Beklenen Çıktı@@read_only ve @@super_read_only değişkenlerinin OFF değerini alması
Geri Dönüş (Rollback) Planı:SET GLOBAL super_read_only = ON; SET GLOBAL read_only = ON;
MySQL Docs: read_only and super_read_only System Variables
İlk 60 Saniye Teşhis Protokolü:

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:

plaintext
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ıkKök NedenAçıklama
%65Uygulamanın Replica Düğümüne BağlanmasıUygulama bağlantı havuzu writer yerine replica IP'sine yönlenmiştir.
%25Failover 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)

sql
-- 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;
DİKKAT / TEHLİKE
Eğer sunucu bir replica düğümü ise ASLA read_only=OFF yapmayın. Bu işlem replikasyon kırılmasına ve çift başlılığa (split-brain) yol açar. Çözüm: Uygulamanın yönünü gerçek Primary'ye çevirmektir.

▸KALICI BLUEPRINT

  1. 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.
  2. 2Replica'larda `super_read_only = ON` Standardı: Tüm replica sunucularında super_read_only = ON zorunlu kılınarak root kullanıcısının dahi veri bozması engellenmelidir.

▸Doğrulama

sql
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.

Tüm Hatalar (82)