DBAtlas · Veritabanı operasyon atlası

Replikayı yükselt / failover yap (promote)

Oracle

-- Data Guard broker (DGMGRL):
SWITCHOVER TO 'standby_db';     -- planlı, veri kaybısız
-- FAILOVER TO 'standby_db';     -- primary kaybında, acil

SWITCHOVER roller arası planlı geçiştir; FAILOVER primary erişilemezken yapılır ve veri kaybı riski taşır.

PostgreSQL

-- Standby'ı primary'e yükselt:
SELECT pg_promote();
-- veya kabuktan: pg_ctl promote -D /var/lib/pgsql/data

Promote öncesinde eski primary'nin gerçekten durduğundan emin olun (split-brain riski). Yükselttikten sonra eski primary'yi yeni primary'ye replika olarak geri katmak için pg_rewind gerekir; bunun için wal_log_hints = on ya da data checksums açık olmalıdır.

MySQL

-- Replika üzerinde (manuel):
-- 1) Yeni olay almayı durdur, alınmış relay log'un tamamen uygulanmasını bekle:
STOP REPLICA IO_THREAD;
SELECT RECEIVED_TRANSACTION_SET FROM performance_schema.replication_connection_status;
SELECT @@GLOBAL.gtid_executed;  -- alınan küme burada tamamen yer almalı
-- 2) Replikasyonu kaldır ve yazmayı aç:
STOP REPLICA;
RESET REPLICA ALL;
SET GLOBAL read_only = OFF;  -- super_read_only'yi de kapatır
-- 3) Eski kaynağı yazmaya kapatın (fencing), sonra uygulamayı yönlendirin.

Relay log tamamen uygulanmadan RESET REPLICA ALL yapılırsa alınmış ama uygulanmamış işlemler kaybolur. Replikalar genelde read_only/super_read_only açık çalışır; bunlar kapatılmadan yazma kabul edilmez. Eski kaynak hâlâ yazılabilir durumdaysa split-brain riski vardır. Söz dizimi 8.0.22+ (öncesinde STOP SLAVE / RESET SLAVE ALL; 8.4'te eski biçim kaldırıldı). Üretimde otomatik ve güvenli failover için InnoDB Cluster/Group Replication, Orchestrator veya MHA tercih edin.

SQL Server

-- Hedef secondary replika üzerinde (senkron):
ALTER AVAILABILITY GROUP [AG_Ad] FAILOVER;
-- Veri kaybı riskiyle zorla:
-- ALTER AVAILABILITY GROUP [AG_Ad] FORCE_FAILOVER_ALLOW_DATA_LOSS;

Planlı failover senkron replikada veri kaybısızdır; FORCE yalnız felaket senaryosunda kullanılır.

MongoDB

// Mevcut primary'de seçim tetikle:
rs.stepDown(60)   // 60 sn primary olmaktan çekil

stepDown yeni bir seçim başlatır; belirli düğümü zorlamak için üyelerin priority değerlerini ayarlayın.

Redis

# Replikayı bağımsız primary yap:
REPLICAOF NO ONE
# Sentinel varsa (önerilen): SENTINEL FAILOVER <master-adi>

Sentinel/Cluster kullanıyorsanız manuel REPLICAOF yerine SENTINEL FAILOVER ile yapın; aksi halde split-brain riski.

DBAtlas'ta aç →