{"id":3562,"date":"2025-12-28T13:08:34","date_gmt":"2025-12-28T10:08:34","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/mysql-ve-postgresql-replikasyon-kurulumu-ile-vps-uzerinde-yuksek-erisilebilirlik\/"},"modified":"2025-12-28T13:08:34","modified_gmt":"2025-12-28T10:08:34","slug":"mysql-ve-postgresql-replikasyon-kurulumu-ile-vps-uzerinde-yuksek-erisilebilirlik","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/mysql-ve-postgresql-replikasyon-kurulumu-ile-vps-uzerinde-yuksek-erisilebilirlik\/","title":{"rendered":"MySQL ve PostgreSQL Replikasyon Kurulumu ile VPS \u00dczerinde Y\u00fcksek Eri\u015filebilirlik"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#MySQL_ve_PostgreSQL_Replikasyonunu_VPS_Uzerinde_Neden_Ciddiye_Almalisiniz\"><span class=\"toc_number toc_depth_1\">1<\/span> MySQL ve PostgreSQL Replikasyonunu VPS \u00dczerinde Neden Ciddiye Almal\u0131s\u0131n\u0131z?<\/a><\/li><li><a href=\"#Temel_Kavramlar_Yedek_Replikasyon_HA_ve_Otomatik_Failover\"><span class=\"toc_number toc_depth_1\">2<\/span> Temel Kavramlar: Yedek, Replikasyon, HA ve Otomatik Failover<\/a><ul><li><a href=\"#Yedek_Backup_vs_Replikasyon\"><span class=\"toc_number toc_depth_2\">2.1<\/span> Yedek (Backup) vs Replikasyon<\/a><\/li><li><a href=\"#Yuksek_Erisilebilirlik_HA_ve_Failover\"><span class=\"toc_number toc_depth_2\">2.2<\/span> Y\u00fcksek Eri\u015filebilirlik (HA) ve Failover<\/a><\/li><li><a href=\"#Senkronsuz_vs_Senkron_Replikasyon\"><span class=\"toc_number toc_depth_2\">2.3<\/span> Senkronsuz vs Senkron Replikasyon<\/a><\/li><\/ul><\/li><li><a href=\"#VPS_Uzerinde_Ornek_HA_Mimarisi_21_Yaklasimi\"><span class=\"toc_number toc_depth_1\">3<\/span> VPS \u00dczerinde \u00d6rnek HA Mimarisi: 2+1 Yakla\u015f\u0131m\u0131<\/a><\/li><li><a href=\"#MySQL_Uzerinde_PrimaryReplica_Replikasyon_Kurulumu\"><span class=\"toc_number toc_depth_1\">4<\/span> MySQL \u00dczerinde Primary\u2013Replica Replikasyon Kurulumu<\/a><ul><li><a href=\"#1_MySQL_Kurulumu_ve_Temel_Guvenlik\"><span class=\"toc_number toc_depth_2\">4.1<\/span> 1. MySQL Kurulumu ve Temel G\u00fcvenlik<\/a><\/li><li><a href=\"#2_Primary_VPS1_Uzerinde_Replikasyon_Ayarlari\"><span class=\"toc_number toc_depth_2\">4.2<\/span> 2. Primary (VPS1) \u00dczerinde Replikasyon Ayarlar\u0131<\/a><\/li><li><a href=\"#3_Replica_VPS2_Uzerinde_Ilk_Senkronizasyon\"><span class=\"toc_number toc_depth_2\">4.3<\/span> 3. Replica (VPS2) \u00dczerinde \u0130lk Senkronizasyon<\/a><\/li><li><a href=\"#4_Otomatik_Failover_icin_Basit_Yaklasim\"><span class=\"toc_number toc_depth_2\">4.4<\/span> 4. Otomatik Failover i\u00e7in Basit Yakla\u015f\u0131m<\/a><\/li><\/ul><\/li><li><a href=\"#PostgreSQL_Streaming_Replikasyon_ve_Patroni_ile_HA\"><span class=\"toc_number toc_depth_1\">5<\/span> PostgreSQL Streaming Replikasyon ve Patroni ile HA<\/a><ul><li><a href=\"#1_Temel_PostgreSQL_Kurulumu_ve_Ayarlar\"><span class=\"toc_number toc_depth_2\">5.1<\/span> 1. Temel PostgreSQL Kurulumu ve Ayarlar<\/a><\/li><li><a href=\"#2_Replica_Icin_Base_Backup_Alma\"><span class=\"toc_number toc_depth_2\">5.2<\/span> 2. Replica \u0130\u00e7in Base Backup Alma<\/a><\/li><li><a href=\"#3_Patroni_ile_Otomatik_Failover_Mantigi\"><span class=\"toc_number toc_depth_2\">5.3<\/span> 3. Patroni ile Otomatik Failover Mant\u0131\u011f\u0131<\/a><\/li><li><a href=\"#4_Ornek_Patroni_Yapilandirma_Iskeleti\"><span class=\"toc_number toc_depth_2\">5.4<\/span> 4. \u00d6rnek Patroni Yap\u0131land\u0131rma \u0130skeleti<\/a><\/li><\/ul><\/li><li><a href=\"#Uygulama_Katmani_Baglantilari_Nasil_Akillandirirsiniz\"><span class=\"toc_number toc_depth_1\">6<\/span> Uygulama Katman\u0131: Ba\u011flant\u0131lar\u0131 Nas\u0131l Ak\u0131lland\u0131r\u0131rs\u0131n\u0131z?<\/a><ul><li><a href=\"#MySQL_Icin_Baglanti_Stratejileri\"><span class=\"toc_number toc_depth_2\">6.1<\/span> MySQL \u0130\u00e7in Ba\u011flant\u0131 Stratejileri<\/a><\/li><li><a href=\"#PostgreSQL_Icin_Baglanti_Stratejileri\"><span class=\"toc_number toc_depth_2\">6.2<\/span> PostgreSQL \u0130\u00e7in Ba\u011flant\u0131 Stratejileri<\/a><\/li><\/ul><\/li><li><a href=\"#Izleme_Alarm_ve_Runbook_HAnin_Sigortasi\"><span class=\"toc_number toc_depth_1\">7<\/span> \u0130zleme, Alarm ve Runbook: HA\u2019n\u0131n Sigortas\u0131<\/a><ul><li><a href=\"#Izlenmesi_Gereken_Temel_Metrikler\"><span class=\"toc_number toc_depth_2\">7.1<\/span> \u0130zlenmesi Gereken Temel Metrikler<\/a><\/li><li><a href=\"#Runbook_Ariza_Aninda_Kim_Ne_Yapacak\"><span class=\"toc_number toc_depth_2\">7.2<\/span> Runbook: Ar\u0131za An\u0131nda Kim Ne Yapacak?<\/a><\/li><\/ul><\/li><li><a href=\"#Test_Senaryolari_Replikasyon_ve_Failover_Gercekten_Calisiyor_mu\"><span class=\"toc_number toc_depth_1\">8<\/span> Test Senaryolar\u0131: Replikasyon ve Failover Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor mu?<\/a><ul><li><a href=\"#1_Replikasyon_Tutarlilik_Testi\"><span class=\"toc_number toc_depth_2\">8.1<\/span> 1. Replikasyon Tutarl\u0131l\u0131k Testi<\/a><\/li><li><a href=\"#2_Kontrollu_Failover_Testi\"><span class=\"toc_number toc_depth_2\">8.2<\/span> 2. Kontroll\u00fc Failover Testi<\/a><\/li><\/ul><\/li><li><a href=\"#DCHost_Uzerinde_MySQL_ve_PostgreSQL_HA_Mimarisi_Nasil_Konumlanir\"><span class=\"toc_number toc_depth_1\">9<\/span> DCHost \u00dczerinde MySQL ve PostgreSQL HA Mimarisi Nas\u0131l Konumlan\u0131r?<\/a><\/li><li><a href=\"#Ozet_ve_Sonraki_Adimlar\"><span class=\"toc_number toc_depth_1\">10<\/span> \u00d6zet ve Sonraki Ad\u0131mlar<\/a><\/li><\/ul><\/div>\n<h2><span id=\"MySQL_ve_PostgreSQL_Replikasyonunu_VPS_Uzerinde_Neden_Ciddiye_Almalisiniz\">MySQL ve PostgreSQL Replikasyonunu <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a> \u00dczerinde Neden Ciddiye Almal\u0131s\u0131n\u0131z?<\/span><\/h2>\n<p>Veritaban\u0131 taraf\u0131nda ger\u00e7ek anlamda y\u00fcksek eri\u015filebilirlik (HA) hedefledi\u011finiz anda, tek bir VPS veya tek bir fiziksel sunucunun s\u0131n\u0131rlar\u0131na tak\u0131l\u0131rs\u0131n\u0131z. \u0130ster WooCommerce tabanl\u0131 bir e-ticaret sitesi, ister SaaS \u00fcr\u00fcn\u00fc, ister kurumsal CRM olsun; MySQL veya PostgreSQL veritaban\u0131n\u0131z birka\u00e7 dakika bile eri\u015filemez oldu\u011funda, do\u011frudan gelir, itibar ve operasyon kayb\u0131 ya\u015fan\u0131r. \u00c7o\u011fu ekip proje planlama veya kapasite analizi toplant\u0131lar\u0131nda \u00f6nce CPU ve RAM hesaplar, veritaban\u0131 taraf\u0131ndaki replikasyon, otomatik failover ve felaket senaryolar\u0131n\u0131 ise \u201csonra bakar\u0131z\u201d klas\u00f6r\u00fcne koyar. As\u0131l sorun da burada ba\u015flar.<\/p>\n<p>Bu rehberde, VPS \u00fczerinde <strong>MySQL ve PostgreSQL replikasyon kurulumu<\/strong>, y\u00fcksek eri\u015filebilirlik mimarisi ve otomatik failover mekanizmalar\u0131n\u0131 ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Ama\u00e7; teorik bir akademik tart\u0131\u015fma de\u011fil, \u00fcretim ortam\u0131nda uygulanabilir, test edilebilir ve bak\u0131m\u0131n\u0131 ger\u00e7ekten yapabilece\u011finiz bir mimari ortaya koymak. Yedeklemenin replikasyonu, replikasyonun da HA\u2019y\u0131 tek ba\u015f\u0131na \u00e7\u00f6zmedi\u011fini netle\u015ftirip; hangi bile\u015fenin ne i\u015fe yarad\u0131\u011f\u0131n\u0131, hangi noktada i\u015fin DNS, load balancer ve uygulama katman\u0131na ta\u015ft\u0131\u011f\u0131n\u0131 pratik \u00f6rneklerle konu\u015faca\u011f\u0131z. DCHost altyap\u0131s\u0131nda VPS, dedicated veya colocation senaryolar\u0131nda kullanabilece\u011finiz somut yap\u0131 ta\u015flar\u0131n\u0131 bir araya getirelim.<\/p>\n<h2><span id=\"Temel_Kavramlar_Yedek_Replikasyon_HA_ve_Otomatik_Failover\">Temel Kavramlar: Yedek, Replikasyon, HA ve Otomatik Failover<\/span><\/h2>\n<p>Replikasyon kurulumuna girmeden \u00f6nce, s\u0131k kar\u0131\u015ft\u0131r\u0131lan birka\u00e7 kavram\u0131 netle\u015ftirmek gerekiyor. \u00d6zellikle y\u00f6netim taraf\u0131yla konu\u015furken terimleri do\u011fru kulland\u0131\u011f\u0131n\u0131zda, b\u00fct\u00e7e ve tasar\u0131m kararlar\u0131n\u0131 savunmak \u00e7ok daha kolayla\u015f\u0131r.<\/p>\n<h3><span id=\"Yedek_Backup_vs_Replikasyon\">Yedek (Backup) vs Replikasyon<\/span><\/h3>\n<p><strong>Yedek<\/strong>, belirli bir andaki verinizin kopyas\u0131d\u0131r. Ama\u00e7; veri kayb\u0131 veya hatal\u0131 silme durumunda, ge\u00e7mi\u015fe geri d\u00f6nebilmektir. Genellikle RPO\/RTO hedeflerine uygun \u015fekilde, saatlik\/g\u00fcnl\u00fck\/haftal\u0131k olarak al\u0131n\u0131r.<\/p>\n<p><strong>Replikasyon<\/strong> ise veritaban\u0131ndaki de\u011fi\u015fikliklerin ba\u015fka bir sunucuya <em>anl\u0131k veya anl\u0131\u011fa yak\u0131n<\/em> olarak aktar\u0131lmas\u0131d\u0131r. Amac\u0131:<\/p>\n<ul>\n<li>Okuma y\u00fck\u00fcn\u00fc da\u011f\u0131tmak (read scaling)<\/li>\n<li>Bir veritaban\u0131 sunucusu ar\u0131zaland\u0131\u011f\u0131nda, di\u011ferini devreye almak (HA\/failover)<\/li>\n<li>Bazen de b\u00f6lgesel felaket dayan\u0131kl\u0131l\u0131\u011f\u0131 sa\u011flamak (DR\/geo-replikasyon)<\/li>\n<\/ul>\n<p>Yani yedekler <strong>ge\u00e7mi\u015fe d\u00f6n\u00fc\u015f<\/strong> i\u00e7indir, replikasyon ise <strong>anl\u0131k s\u00fcreklilik<\/strong> i\u00e7in. Bu konuyu daha derinlemesine ele ald\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/uygulama%e2%80%91tutarli-yedekler-nasil-alinir-lvm-snapshot-ve-fsfreeze-ile-mysql-postgresqli-usutmeden-dondurmak\/'>uygulama-tutarl\u0131 MySQL\/PostgreSQL yedekleri almak<\/a> rehberini mutlaka bu yaz\u0131yla birlikte d\u00fc\u015f\u00fcn\u00fcn.<\/p>\n<h3><span id=\"Yuksek_Erisilebilirlik_HA_ve_Failover\">Y\u00fcksek Eri\u015filebilirlik (HA) ve Failover<\/span><\/h3>\n<p><strong>Y\u00fcksek eri\u015filebilirlik<\/strong>, sisteminizin planlanmam\u0131\u015f kesintilere ra\u011fmen belirli bir y\u00fczdede (\u00f6r. %99.9) \u00e7al\u0131\u015f\u0131r kalmas\u0131 hedefidir. Bu hedefe ula\u015fmak i\u00e7in genellikle \u015fu bile\u015fenler birlikte tasarlan\u0131r:<\/p>\n<ul>\n<li>Veritaban\u0131 replikasyonu (MySQL \/ PostgreSQL)<\/li>\n<li>Otomatik lider se\u00e7imi ve failover mekanizmas\u0131<\/li>\n<li>Uygulama ile veritaban\u0131 aras\u0131na koyulan ak\u0131ll\u0131 bir katman (proxy, load balancer veya DNS)<\/li>\n<li>\u0130zleme, alarm ve manuel m\u00fcdahale i\u00e7in net bir runbook<\/li>\n<\/ul>\n<p>Bu kavramlar\u0131 daha \u00fcst d\u00fczeyde ele ald\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/ha-yuksek-kullanilabilirlik-nedir\/'>Y\u00fcksek kullan\u0131labilirlik (HA) nedir<\/a> yaz\u0131s\u0131, stratejik \u00e7er\u00e7eveyi kurman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Burada ise do\u011frudan MySQL ve PostgreSQL \u00fczerinde teknik uygulamaya odaklanaca\u011f\u0131z.<\/p>\n<h3><span id=\"Senkronsuz_vs_Senkron_Replikasyon\">Senkronsuz vs Senkron Replikasyon<\/span><\/h3>\n<p>Hem MySQL hem de PostgreSQL taraf\u0131nda iki temel yakla\u015f\u0131m vard\u0131r:<\/p>\n<ul>\n<li><strong>Asenkron (senkronsuz) replikasyon<\/strong>: Primary yazd\u0131\u011f\u0131 anda ba\u015far\u0131l\u0131 sayar, replica daha sonra yakalar. Avantaj\u0131 h\u0131zl\u0131d\u0131r; dezavantaj\u0131 failover s\u0131ras\u0131nda \u00e7ok k\u00fc\u00e7\u00fck de olsa veri kayb\u0131 (RPO &gt; 0) ihtimalidir.<\/li>\n<li><strong>Senkron replikasyon<\/strong>: Primary, en az bir replica yazmay\u0131 onaylamadan i\u015flemi ba\u015far\u0131l\u0131 saymaz. Avantaj\u0131 teorik olarak s\u0131f\u0131ra yak\u0131n veri kayb\u0131; dezavantaj\u0131 ise gecikme ve performans maliyetidir.<\/li>\n<\/ul>\n<p>VPS ortamlar\u0131nda \u00e7o\u011fu senaryoda asenkron veya yar\u0131-senkron yap\u0131 tercih edilir; \u00e7\u00fcnk\u00fc a\u011f gecikmesi, disk I\/O ve CPU maliyetleri, tam senkron yap\u0131lar\u0131 her zaman ekonomik k\u0131lmaz.<\/p>\n<h2><span id=\"VPS_Uzerinde_Ornek_HA_Mimarisi_21_Yaklasimi\">VPS \u00dczerinde \u00d6rnek HA Mimarisi: 2+1 Yakla\u015f\u0131m\u0131<\/span><\/h2>\n<p>DCHost altyap\u0131s\u0131nda s\u0131k kulland\u0131\u011f\u0131m\u0131z basit ama i\u015f g\u00f6ren \u015fablon, \u015fu 2+1 mimarisidir:<\/p>\n<ul>\n<li><strong>VPS1<\/strong>: Primary veritaban\u0131 (MySQL veya PostgreSQL)<\/li>\n<li><strong>VPS2<\/strong>: Replica veritaban\u0131 (read-only, failover aday\u0131)<\/li>\n<li><strong>VPS3<\/strong>: Witness \/ koordinat\u00f6r (HA arac\u0131, etcd\/Consul, Orchestrator, Patroni veya sadece izleme ve otomasyon script\u2019leri)<\/li>\n<\/ul>\n<p>\u0130ki veritaban\u0131 sunucusu aras\u0131nda bir sorun \u00e7\u0131kt\u0131\u011f\u0131nda, \u00fc\u00e7\u00fcnc\u00fc node devreye girip \u00e7o\u011funlu\u011fu sa\u011flayan taraf\u0131 belirler ve <strong>split-brain<\/strong> (iki taraf\u0131n da kendini lider sanmas\u0131) riskini azalt\u0131r. M\u00fcmk\u00fcnse VPS\u2019lerinizin ayn\u0131 veri merkezinde ama farkl\u0131 fiziksel host\u2019larda konumlanmas\u0131n\u0131, disk taraf\u0131nda NVMe depolama kullan\u0131lmas\u0131n\u0131 ve <strong>\u00f6zel bir i\u00e7 a\u011f<\/strong> \u00fczerinden konu\u015fmas\u0131n\u0131 \u00f6neriyoruz.<\/p>\n<p>E\u011fer co\u011frafi yedeklilik d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z, bu \u015fablonu farkl\u0131 b\u00f6lgelerdeki veritaban\u0131 cluster\u2019lar\u0131yla birle\u015ftirip, <a href='https:\/\/www.dchost.com\/blog\/cok-bolgeli-mimariler-nasil-kurulur-dns-geo%e2%80%91routing-ve-veritabani-replikasyonu-ile-korkusuz-felaket-dayanikliligi\/'>\u00e7ok b\u00f6lgeli veritaban\u0131 mimarileri<\/a> yaz\u0131m\u0131zdaki DNS ve geo-routing stratejileriyle zenginle\u015ftirebilirsiniz.<\/p>\n<h2><span id=\"MySQL_Uzerinde_PrimaryReplica_Replikasyon_Kurulumu\">MySQL \u00dczerinde Primary\u2013Replica Replikasyon Kurulumu<\/span><\/h2>\n<p>\u00d6nce MySQL taraf\u0131nda klasik primary\u2013replica replikasyon kurulumu ile ba\u015flayal\u0131m. \u00d6rnekte iki VPS kullanaca\u011f\u0131z:<\/p>\n<ul>\n<li>VPS1 (primary): 10.0.0.1<\/li>\n<li>VPS2 (replica): 10.0.0.2<\/li>\n<\/ul>\n<p>\u0130\u015fletim sistemi olarak Debian\/Ubuntu veya RHEL t\u00fcrevlerinden birini kullanabilirsiniz; mant\u0131k ayn\u0131d\u0131r.<\/p>\n<h3><span id=\"1_MySQL_Kurulumu_ve_Temel_Guvenlik\">1. MySQL Kurulumu ve Temel G\u00fcvenlik<\/span><\/h3>\n<p>Her iki VPS\u2019te de MySQL sunucusunu kurdu\u011funuzu ve root \u015fifresini belirledi\u011finizi varsayal\u0131m. Ek olarak:<\/p>\n<ul>\n<li>\u0130stemcilerin yaln\u0131zca uygulama sunucular\u0131ndan ve replikasyon sunucular\u0131ndan ba\u011flanmas\u0131na izin verin.<\/li>\n<li>MySQL portunu (varsay\u0131lan 3306) d\u0131\u015f d\u00fcnyaya a\u00e7may\u0131n; g\u00fcvenlik duvar\u0131 veya i\u00e7 a\u011f kullan\u0131n.<\/li>\n<\/ul>\n<h3><span id=\"2_Primary_VPS1_Uzerinde_Replikasyon_Ayarlari\">2. Primary (VPS1) \u00dczerinde Replikasyon Ayarlar\u0131<\/span><\/h3>\n<p>Primary sunucunun my.cnf (veya mysqld.cnf) dosyas\u0131nda temel ayarlar\u0131 yap\u0131n:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">[mysqld]\nserver-id = 1\nlog_bin = mysql-bin\nbinlog_format = ROW\nrelay_log = relay-bin\n<\/code><\/pre>\n<p>MySQL\u2019i yeniden ba\u015flat\u0131n ve replikasyon kullan\u0131c\u0131s\u0131n\u0131 olu\u015fturun:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">CREATE USER 'repl'@'10.0.0.%' IDENTIFIED BY 'G\u00fc\u00e7l\u00fcBirParola';\nGRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.0.%';\nFLUSH PRIVILEGES;\n<\/code><\/pre>\n<p>Sonras\u0131nda, replikay\u0131 ba\u015flatmak i\u00e7in bir referans noktas\u0131 elde etmemiz gerekiyor:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">FLUSH TABLES WITH READ LOCK;\nSHOW MASTER STATUS;\n<\/code><\/pre>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131ndaki <strong>File<\/strong> ve <strong>Position<\/strong> de\u011ferlerini bir yere not edin. Tablo kilidi a\u00e7\u0131kken bir tam yedek alman\u0131z idealdir; bu ayn\u0131 zamanda replikay\u0131 ba\u015flatmak i\u00e7in temiz bir kopya sa\u011flar:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">mysqldump --all-databases --single-transaction --master-data=2 \n  --routines --triggers --events &gt; \/root\/full.sql\nUNLOCK TABLES;\n<\/code><\/pre>\n<h3><span id=\"3_Replica_VPS2_Uzerinde_Ilk_Senkronizasyon\">3. Replica (VPS2) \u00dczerinde \u0130lk Senkronizasyon<\/span><\/h3>\n<p>Replica taraf\u0131nda my.cnf ayarlar\u0131n\u0131 yap\u0131n:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">[mysqld]\nserver-id = 2\nrelay_log = relay-bin\nread_only = 1\n<\/code><\/pre>\n<p>Veritaban\u0131n\u0131 temizleyip primary\u2019den ald\u0131\u011f\u0131n\u0131z yede\u011fi i\u00e7eri aktar\u0131n:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">mysql &lt; \/root\/full.sql\n<\/code><\/pre>\n<p>Ard\u0131ndan replikasyonu ba\u015flat\u0131n. Primary\u2019den ald\u0131\u011f\u0131n\u0131z <code>SHOW MASTER STATUS<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 kullanarak:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">CHANGE REPLICATION SOURCE TO\n  SOURCE_HOST = '10.0.0.1',\n  SOURCE_USER = 'repl',\n  SOURCE_PASSWORD = 'G\u00fc\u00e7l\u00fcBirParola',\n  SOURCE_LOG_FILE = 'mysql-bin.000001',\n  SOURCE_LOG_POS = 123456;\n\nSTART REPLICA;\n<\/code><\/pre>\n<p>Durumu kontrol etmek i\u00e7in:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">SHOW REPLICA STATUSG\n<\/code><\/pre>\n<p><code>Replica_IO_Running<\/code> ve <code>Replica_SQL_Running<\/code> alanlar\u0131n\u0131n <strong>Yes<\/strong> olmas\u0131 gerekir.<\/p>\n<h3><span id=\"4_Otomatik_Failover_icin_Basit_Yaklasim\">4. Otomatik Failover i\u00e7in Basit Yakla\u015f\u0131m<\/span><\/h3>\n<p>MySQL taraf\u0131nda otomatik failover i\u00e7in birka\u00e7 farkl\u0131 ara\u00e7 ve yakla\u015f\u0131m var: MHA, Orchestrator, MySQL Router, ProxySQL gibi. DCHost taraf\u0131nda k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli projelerde s\u0131k kulland\u0131\u011f\u0131m\u0131z, nispeten sade bir yakla\u015f\u0131m \u015fu bile\u015fenleri i\u00e7eriyor:<\/p>\n<ul>\n<li>VPS3 \u00fczerinde \u00e7al\u0131\u015fan bir <strong>Orchestrator<\/strong> veya benzeri HA arac\u0131<\/li>\n<li>Uygulaman\u0131n veritaban\u0131na do\u011frudan IP ile de\u011fil, bir <strong>sanalla\u015ft\u0131r\u0131lm\u0131\u015f IP (VIP)<\/strong> veya <strong>proxy<\/strong> \u00fczerinden ba\u011flanmas\u0131<\/li>\n<li>Failover sonras\u0131nda DNS veya VIP g\u00fcncellemesini otomatik yapan k\u0131sa script\u2019ler<\/li>\n<\/ul>\n<p>Daha ileri seviye senaryolarda Group Replication veya Galera Cluster gibi \u00e7\u00f6z\u00fcmlerle tam HA cluster kurmak da m\u00fcmk\u00fcn; bunu <a href='https:\/\/www.dchost.com\/blog\/yedekten-oteyi-konusalim-mariadb-galera-cluster-ve-mysql-group-replication-ile-kesintisizlige-sicak-bir-yolculuk\/'>MySQL i\u00e7in geli\u015fmi\u015f HA \u00e7\u00f6z\u00fcmleri<\/a> yaz\u0131m\u0131zda ayr\u0131 ayr\u0131 ele ald\u0131k. Bu makalede odak noktam\u0131z, temel primary\u2013replica yap\u0131s\u0131n\u0131 sahaya indirebilmek.<\/p>\n<h2><span id=\"PostgreSQL_Streaming_Replikasyon_ve_Patroni_ile_HA\">PostgreSQL Streaming Replikasyon ve Patroni ile HA<\/span><\/h2>\n<p>PostgreSQL taraf\u0131nda replikasyon ve otomatik failover i\u00e7in ekosistem biraz daha olgun ve b\u00fct\u00fcnsel. En bilinen yakla\u015f\u0131mlardan biri, <strong>streaming replication<\/strong> + <strong>Patroni<\/strong> kombinasyonu. Yine iki veritaban\u0131 VPS\u2019i ve bir koordinat\u00f6r VPS\u2019i kullanan bir senaryoya bakal\u0131m.<\/p>\n<h3><span id=\"1_Temel_PostgreSQL_Kurulumu_ve_Ayarlar\">1. Temel PostgreSQL Kurulumu ve Ayarlar<\/span><\/h3>\n<p>PostgreSQL\u2019i her iki VPS\u2019e de kurdu\u011funuzu ve veritaban\u0131n\u0131z\u0131n Primary olarak VPS1\u2019de \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 varsayal\u0131m. \u00d6nce primary \u00fczerinde gerekli ayarlar\u0131 yap\u0131yoruz.<\/p>\n<p><strong>postgresql.conf<\/strong> \u00fczerinde:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">wal_level = replica\nmax_wal_senders = 10\nmax_replication_slots = 10\narchive_mode = on\narchive_command = 'test ! -f \/var\/lib\/postgresql\/wal\/%f &amp;&amp; cp %p \/var\/lib\/postgresql\/wal\/%f'\n<\/code><\/pre>\n<p><strong>pg_hba.conf<\/strong> i\u00e7inde replikasyon yetkisi verece\u011finiz replica IP\u2019sini ekleyin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">host replication repl 10.0.0.2\/32 md5\n<\/code><\/pre>\n<p>Ard\u0131ndan bir replikasyon kullan\u0131c\u0131s\u0131 olu\u015fturun:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">CREATE ROLE repl WITH REPLICATION LOGIN PASSWORD 'G\u00fc\u00e7l\u00fcBirParola';\n<\/code><\/pre>\n<h3><span id=\"2_Replica_Icin_Base_Backup_Alma\">2. Replica \u0130\u00e7in Base Backup Alma<\/span><\/h3>\n<p>Replica sunucusunda PostgreSQL servisini durdurun ve data dizinini temizleyin. Ard\u0131ndan primary \u00fczerinden <code>pg_basebackup<\/code> ile tam kopya al\u0131n:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">pg_basebackup -h 10.0.0.1 -D \/var\/lib\/postgresql\/data \n  -U repl -P -R --slot=replica1\n<\/code><\/pre>\n<p><code>-R<\/code> parametresi, gerekli <code>standby.signal<\/code> ve ba\u011flant\u0131 ayarlar\u0131n\u0131 otomatik olu\u015fturur. PostgreSQL\u2019i replica taraf\u0131nda yeniden ba\u015flatt\u0131\u011f\u0131n\u0131zda, streaming replication \u00e7al\u0131\u015fmaya ba\u015flayacakt\u0131r.<\/p>\n<h3><span id=\"3_Patroni_ile_Otomatik_Failover_Mantigi\">3. Patroni ile Otomatik Failover Mant\u0131\u011f\u0131<\/span><\/h3>\n<p>Patroni, PostgreSQL cluster\u2019lar\u0131nda lider se\u00e7imi ve otomatik failover\u2019\u0131 y\u00f6neten, saha tecr\u00fcbesi y\u00fcksek bir ara\u00e7. Tipik kurulumda:<\/p>\n<ul>\n<li>Her PostgreSQL VPS\u2019inde bir Patroni instance\u2019\u0131 \u00e7al\u0131\u015f\u0131r.<\/li>\n<li>VPS3 \u00fczerinde etcd veya Consul gibi bir da\u011f\u0131t\u0131k anahtar-de\u011fer deposu bulunur.<\/li>\n<li>Patroni, bu KV deposu \u00fczerinden cluster durumunu takip eder ve lider se\u00e7imi yapar.<\/li>\n<li>Uygulama, do\u011frudan veritaban\u0131na de\u011fil; HAProxy \/ pgbouncer gibi bir ara katmana ba\u011flan\u0131r.<\/li>\n<\/ul>\n<p>Yap\u0131 kabaca \u015fu \u015fekilde g\u00f6r\u00fcn\u00fcr:<\/p>\n<ul>\n<li>VPS1: PostgreSQL + Patroni (primary aday\u0131)<\/li>\n<li>VPS2: PostgreSQL + Patroni (replica, failover aday\u0131)<\/li>\n<li>VPS3: etcd\/Consul + HAProxy (trafik y\u00f6nlendirici)<\/li>\n<\/ul>\n<p>Patroni, primary node\u2019un sa\u011fl\u0131k kontrolleri ba\u015far\u0131s\u0131z oldu\u011funda, \u00e7o\u011funluk sa\u011flan\u0131yorsa replica\u2019y\u0131 yeni primary yapar. HAProxy de ba\u011flant\u0131lar\u0131 otomatik olarak yeni primary node\u2019a y\u00f6nlendirir.<\/p>\n<h3><span id=\"4_Ornek_Patroni_Yapilandirma_Iskeleti\">4. \u00d6rnek Patroni Yap\u0131land\u0131rma \u0130skeleti<\/span><\/h3>\n<p>Detayl\u0131 ayarlar kurulum ve da\u011f\u0131t\u0131m\u0131n\u0131za g\u00f6re de\u011fi\u015fecektir; ancak Patroni yap\u0131land\u0131rma dosyas\u0131n\u0131n iskeleti genelde \u015fu alanlar\u0131 i\u00e7erir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">scope: mycluster\nnamespace: \/db\/\nname: pg1\n\nrestapi:\n  listen: 0.0.0.0:8008\n  connect_address: 10.0.0.1:8008\n\netcd:\n  host: 10.0.0.3:2379\n\npostgresql:\n  listen: 0.0.0.0:5432\n  connect_address: 10.0.0.1:5432\n  data_dir: \/var\/lib\/postgresql\/data\n  bin_dir: \/usr\/lib\/postgresql\/15\/bin\n  authentication:\n    superuser:\n      username: postgres\n      password: SuperGizli\n    replication:\n      username: repl\n      password: G\u00fc\u00e7l\u00fcBirParola\n<\/code><\/pre>\n<p>\u0130kinci node\u2019da (pg2) sadece <code>name<\/code> ve <code>connect_address<\/code> alanlar\u0131n\u0131 kendi IP\u2019sine g\u00f6re de\u011fi\u015ftirirsiniz. etcd\/Consul taraf\u0131nda ise \u00e7ok basit bir cluster konfig\u00fcrasyonu yeterli olur.<\/p>\n<p>Performans taraf\u0131nda, WAL ayarlar\u0131 ve bellek parametreleri de kritik. PostgreSQL\u2019i replikasyonlu bir yap\u0131da u\u00e7urmak i\u00e7in <a href='https:\/\/www.dchost.com\/blog\/vpste-postgresqli-ucurmak-shared_buffers-work_mem-wal-ve-pgbounceri-ne-zaman-nasil-ayarlariz\/'>VPS \u00fczerinde PostgreSQL performans ayarlar\u0131<\/a> rehberindeki shared_buffers, work_mem ve WAL optimizasyonlar\u0131n\u0131 bu mimariyle birlikte d\u00fc\u015f\u00fcnmenizi \u00f6neririm.<\/p>\n<h2><span id=\"Uygulama_Katmani_Baglantilari_Nasil_Akillandirirsiniz\">Uygulama Katman\u0131: Ba\u011flant\u0131lar\u0131 Nas\u0131l Ak\u0131lland\u0131r\u0131rs\u0131n\u0131z?<\/span><\/h2>\n<p>Sadece veritaban\u0131 taraf\u0131nda replikasyon kurmak, uygulaman\u0131n bunu do\u011fru kullanaca\u011f\u0131 anlam\u0131na gelmez. HA\u2019n\u0131n ger\u00e7ekten i\u015fe yaramas\u0131 i\u00e7in, <strong>uygulaman\u0131n veritaban\u0131na ba\u011flanma \u015fekli<\/strong> de tasar\u0131m\u0131n bir par\u00e7as\u0131 olmal\u0131.<\/p>\n<h3><span id=\"MySQL_Icin_Baglanti_Stratejileri\">MySQL \u0130\u00e7in Ba\u011flant\u0131 Stratejileri<\/span><\/h3>\n<ul>\n<li><strong>Tek ba\u011flant\u0131 ucu<\/strong>: Uygulama, \u00f6rne\u011fin <code>db-internal.example.com<\/code> gibi tek bir hostname\u2019e ba\u011flan\u0131r. Bu hostname ya bir VIP\u2019ye ya da proxy\u2019ye i\u015faret eder.<\/li>\n<li><strong>Proxy katman\u0131<\/strong>: ProxySQL, HAProxy veya benzeri ara\u00e7larla read\/write ayr\u0131m\u0131, health check ve failover sonras\u0131 otomatik y\u00f6nlendirme yap\u0131labilir.<\/li>\n<li><strong>DNS tabanl\u0131 y\u00f6nlendirme<\/strong>: Basit senaryolarda, k\u0131sa TTL\u2019li bir DNS kayd\u0131yla primary IP\u2019si g\u00fcncellenebilir; ancak bu y\u00f6ntem client cache\u2019leri nedeniyle tam deterministik de\u011fildir.<\/li>\n<\/ul>\n<p>Orta ve b\u00fcy\u00fck projelerde pratik yakla\u015f\u0131m, uygulamay\u0131 bir <strong>proxy katman\u0131na<\/strong> ba\u011flamak ve arka planda primary\/replica de\u011fi\u015fikliklerini bu katmanda y\u00f6netmektir.<\/p>\n<h3><span id=\"PostgreSQL_Icin_Baglanti_Stratejileri\">PostgreSQL \u0130\u00e7in Ba\u011flant\u0131 Stratejileri<\/span><\/h3>\n<p>PostgreSQL d\u00fcnyas\u0131nda pgbouncer veya HAProxy s\u0131k kullan\u0131l\u0131r. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>HAProxy, Patroni REST API\u2019sini kullanarak hangi node\u2019un primary oldu\u011funu bilir.<\/li>\n<li>Uygulama, her zaman HAProxy IP\/hostname\u2019ine ba\u011flan\u0131r.<\/li>\n<li>Arka planda failover ger\u00e7ekle\u015fse bile uygulama i\u00e7in ba\u011flant\u0131 ucu de\u011fi\u015fmez.<\/li>\n<\/ul>\n<p>B\u00f6ylece uygulama kodunu veritaban\u0131 cluster\u2019\u0131ndaki lider de\u011fi\u015fimlerinden m\u00fcmk\u00fcn oldu\u011funca yal\u0131tm\u0131\u015f olursunuz.<\/p>\n<h2><span id=\"Izleme_Alarm_ve_Runbook_HAnin_Sigortasi\">\u0130zleme, Alarm ve Runbook: HA\u2019n\u0131n Sigortas\u0131<\/span><\/h2>\n<p>Replikasyon ve otomatik failover kurulumlar\u0131, ilk g\u00fcnk\u00fc testlerinde g\u00fczel g\u00f6r\u00fcn\u00fcr. As\u0131l s\u0131nav, 6 ay sonra kimsenin elini s\u00fcrmedi\u011fi, birka\u00e7 bak\u0131m yamas\u0131 g\u00f6rm\u00fc\u015f, disk dolma s\u0131n\u0131r\u0131na yakla\u015fm\u0131\u015f sistemlerde gelir. Bu y\u00fczden izlemeden ve runbook\u2019tan ba\u011f\u0131ms\u0131z bir HA mimarisi d\u00fc\u015f\u00fcnmemelisiniz.<\/p>\n<h3><span id=\"Izlenmesi_Gereken_Temel_Metrikler\">\u0130zlenmesi Gereken Temel Metrikler<\/span><\/h3>\n<ul>\n<li><strong>Replikasyon gecikmesi<\/strong>: MySQL\u2019de <code>Seconds_Behind_Master<\/code>, PostgreSQL\u2019de <code>pg_stat_replication<\/code> g\u00f6r\u00fcn\u00fcm\u00fc.<\/li>\n<li><strong>Disk kullan\u0131m oran\u0131<\/strong>: WAL\/binlog klas\u00f6rlerinin dolma riski.<\/li>\n<li><strong>CPU ve RAM<\/strong>: \u00d6zellikle checkpoint ve vacuum d\u00f6nemlerinde ani s\u0131\u00e7ramalar.<\/li>\n<li><strong>Ba\u011flant\u0131 say\u0131s\u0131<\/strong>: Uygulama ba\u011flant\u0131lar\u0131n\u0131n s\u0131n\u0131rlar\u0131 zorlay\u0131p zorlamad\u0131\u011f\u0131.<\/li>\n<\/ul>\n<p>Bu konuyu somut \u00f6rneklerle ele ald\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/vps-izleme-ve-uyari-nasil-kurulur-prometheus-grafana-ve-node-exporter-ile-sessiz-alarmlari-konusturmak\/'>VPS izleme ve uyar\u0131 kurulum rehberi<\/a>, HA veritaban\u0131 mimarinizin \u00fcst\u00fcne koyman\u0131z gereken \u00f6nemli bir katman.<\/p>\n<h3><span id=\"Runbook_Ariza_Aninda_Kim_Ne_Yapacak\">Runbook: Ar\u0131za An\u0131nda Kim Ne Yapacak?<\/span><\/h3>\n<p>Otomatik failover olsa bile, baz\u0131 senaryolarda manuel onar\u0131m gerekir. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>Primary diski tamamen bozuldu, replica yeni primary oldu. Eski primary yeniden aya\u011fa kalkarken <strong>forced demotion<\/strong> senaryosu tan\u0131ml\u0131 m\u0131?<\/li>\n<li>Replikasyon uzun s\u00fcre geride kald\u0131; yeniden senkronizasyon i\u00e7in ne kadar kesinti g\u00f6ze al\u0131nabilir?<\/li>\n<li>DNS veya VIP g\u00fcncellemeleri ba\u015far\u0131s\u0131z olursa, uygulama taraf\u0131ndaki connection string\u2019ler nas\u0131l ve ne h\u0131zda g\u00fcncellenecek?<\/li>\n<\/ul>\n<p>Bu sorular\u0131n yan\u0131tlar\u0131n\u0131 \u00f6nceden yaz\u0131lm\u0131\u015f bir runbook\u2019ta netle\u015ftirmek, felaket an\u0131nda \u201c\u015fimdi ne yap\u0131yoruz?\u201d pani\u011fini ciddi \u015fekilde azalt\u0131r. <a href='https:\/\/www.dchost.com\/blog\/felaket-kurtarma-plani-nasil-yazilir-rto-rpoyu-kafada-netlestirip-yedek-testleri-ve-runbooklari-gercekten-calisir-hale-getirmek\/'>Felaket kurtarma plan\u0131 ve runbook haz\u0131rlama<\/a> rehberimiz, bu a\u015famada iyi bir tamamlay\u0131c\u0131d\u0131r.<\/p>\n<h2><span id=\"Test_Senaryolari_Replikasyon_ve_Failover_Gercekten_Calisiyor_mu\">Test Senaryolar\u0131: Replikasyon ve Failover Ger\u00e7ekten \u00c7al\u0131\u015f\u0131yor mu?<\/span><\/h2>\n<p>Kurulum bitti\u011finde, \u201cloglarda hata yok\u201d diye rahatlamak yeterli de\u011fil. En az\u0131ndan a\u015fa\u011f\u0131daki testleri d\u00fczenli aral\u0131klarla yapman\u0131z\u0131 \u00f6neriyoruz:<\/p>\n<h3><span id=\"1_Replikasyon_Tutarlilik_Testi\">1. Replikasyon Tutarl\u0131l\u0131k Testi<\/span><\/h3>\n<ol>\n<li>Primary \u00fczerinde test ama\u00e7l\u0131 k\u00fc\u00e7\u00fck bir tablo ve birka\u00e7 sat\u0131r olu\u015fturun.<\/li>\n<li>Replica \u00fczerinde sadece-okunur modda ayn\u0131 tabloyu kontrol edin.<\/li>\n<li>Belli aral\u0131klarla, \u00f6nemli tablolar i\u00e7in checksum kar\u015f\u0131la\u015ft\u0131rmas\u0131 yapan basit script\u2019ler yaz\u0131n.<\/li>\n<\/ol>\n<p>MySQL taraf\u0131nda pt-table-checksum gibi ara\u00e7lar, PostgreSQL taraf\u0131nda ise pg_checksums ve benzeri \u00e7\u00f6z\u00fcmler bu i\u015f i\u00e7in kullan\u0131labilir.<\/p>\n<h3><span id=\"2_Kontrollu_Failover_Testi\">2. Kontroll\u00fc Failover Testi<\/span><\/h3>\n<ol>\n<li>Primary node\u2019u kontroll\u00fc \u015fekilde durdurun (servisi stop etmek veya network\u2019\u00fc kesmek gibi).<\/li>\n<li>Otomatik failover mekanizmas\u0131n\u0131n yeni primary\u2019yi atad\u0131\u011f\u0131n\u0131 ve proxy\/DNS\/VIP katman\u0131n\u0131n bunu takip etti\u011fini do\u011frulay\u0131n.<\/li>\n<li>Uygulama taraf\u0131nda kesinti s\u00fcresini \u00f6l\u00e7\u00fcn: RTO hedeflerinize uyuyor mu?<\/li>\n<\/ol>\n<p>Bu testleri, trafik d\u00fc\u015f\u00fckken planl\u0131 bak\u0131m pencerelerinde tekrarlamak, teoride tasarlad\u0131\u011f\u0131n\u0131z HA mimarisinin pratikte ne kadar dayan\u0131kl\u0131 oldu\u011funu netle\u015ftirir.<\/p>\n<h2><span id=\"DCHost_Uzerinde_MySQL_ve_PostgreSQL_HA_Mimarisi_Nasil_Konumlanir\">DCHost \u00dczerinde MySQL ve PostgreSQL HA Mimarisi Nas\u0131l Konumlan\u0131r?<\/span><\/h2>\n<p>DCHost olarak sundu\u011fumuz VPS, dedicated ve colocation \u00e7\u00f6z\u00fcmlerinde, veritaban\u0131 replikasyonu ve HA mimarilerini do\u011frudan altyap\u0131 tasar\u0131m\u0131n\u0131n bir par\u00e7as\u0131 olarak d\u00fc\u015f\u00fcn\u00fcyoruz. \u00d6zellikle:<\/p>\n<ul>\n<li>NVMe diskli VPS\u2019ler \u00fczerinde, MySQL binlog ve PostgreSQL WAL performans\u0131n\u0131 optimum seviyede tutacak IOPS kapasitesi<\/li>\n<li>Ayn\u0131 veri merkezinde, farkl\u0131 fiziksel host\u2019lara da\u011f\u0131t\u0131lm\u0131\u015f node\u2019lar ile tek nokta ar\u0131za (SPOF) riskini azaltma<\/li>\n<li>\u0130\u00e7 a\u011f (private network) veya VPN t\u00fcnelleriyle, replikasyon trafi\u011fini izole edip g\u00fcvence alt\u0131na alma<\/li>\n<\/ul>\n<p>E\u011fer MySQL taraf\u0131nda Group Replication veya Galera Cluster, PostgreSQL taraf\u0131nda ise Patroni + HAProxy gibi \u00e7\u00f6z\u00fcmleri daha ileri d\u00fczeyde kurgulamak istiyorsan\u0131z; <a href='https:\/\/www.dchost.com\/blog\/yuksek-erisilebilirlik-mi-guclu-tek-sunucu-mu\/'>y\u00fcksek eri\u015filebilirlik mi g\u00fc\u00e7l\u00fc tek sunucu mu<\/a> yaz\u0131m\u0131zdaki karar \u015femas\u0131n\u0131 okuduktan sonra, ekibimizle birlikte sizin kullan\u0131m senaryonuza uygun bir topoloji planlayabiliriz.<\/p>\n<h2><span id=\"Ozet_ve_Sonraki_Adimlar\">\u00d6zet ve Sonraki Ad\u0131mlar<\/span><\/h2>\n<p>MySQL ve PostgreSQL replikasyonu, tek ba\u015f\u0131na sihirli bir \u201ckesintisizlik\u201d \u00e7\u00f6z\u00fcm\u00fc de\u011fil; ancak do\u011fru kuruldu\u011funda ve d\u00fczenli test edildi\u011finde, VPS \u00fczerindeki veritaban\u0131 katman\u0131n\u0131z\u0131 birka\u00e7 seviye yukar\u0131 ta\u015f\u0131yan kritik bir yap\u0131 ta\u015f\u0131. Bu yaz\u0131da, primary\u2013replica mant\u0131\u011f\u0131ndan ba\u015flayarak, Patroni ve Orchestrator gibi ara\u00e7larla otomatik failover kavram\u0131na, uygulama katman\u0131nda proxy kullanman\u0131n \u00f6nemine ve izleme-runbook ikilisinin HA\u2019n\u0131n ger\u00e7ek sigortas\u0131 oldu\u011funa kadar uzanan bir yol haritas\u0131 \u00e7izdik.<\/p>\n<p>Buradan sonra atabilece\u011finiz somut ad\u0131mlar \u015funlar olabilir:<\/p>\n<ul>\n<li>Mevcut veritaban\u0131 mimarinizi \u00e7\u0131kar\u0131p, RPO\/RTO hedeflerinizi netle\u015ftirmek<\/li>\n<li>K\u00fc\u00e7\u00fck bir ortamda (\u00f6rne\u011fin 2+1 VPS) MySQL veya PostgreSQL replikasyonunu deneysel olarak kurmak<\/li>\n<li>Yedekleme stratejinizi, replikasyon yap\u0131n\u0131zla \u00e7eli\u015fmeyecek \u015fekilde g\u00fcncellemek<\/li>\n<li>\u0130zleme ve alarm katman\u0131n\u0131, HA ihtiya\u00e7lar\u0131n\u0131za g\u00f6re yeniden tasarlamak<\/li>\n<\/ul>\n<p>DCHost altyap\u0131s\u0131nda yeni bir proje kuruyorsan\u0131z ya da mevcut sisteminizi HA mimarisine ta\u015f\u0131mak istiyorsan\u0131z, do\u011fru VPS boyutland\u0131rmas\u0131ndan, \u00e7ok b\u00f6lgeli veritaban\u0131 replikasyonuna kadar t\u00fcm ad\u0131mlar\u0131 birlikte planlayabiliriz. Tek VPS\u2019ten \u00e7ok node\u2019lu cluster\u2019a giden yolda, hangi noktada hangi teknolojiyi devreye alman\u0131z gerekti\u011fini netle\u015ftirmek i\u00e7in bizimle ileti\u015fime ge\u00e7meniz yeterli.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 MySQL ve PostgreSQL Replikasyonunu VPS \u00dczerinde Neden Ciddiye Almal\u0131s\u0131n\u0131z?2 Temel Kavramlar: Yedek, Replikasyon, HA ve Otomatik Failover2.1 Yedek (Backup) vs Replikasyon2.2 Y\u00fcksek Eri\u015filebilirlik (HA) ve Failover2.3 Senkronsuz vs Senkron Replikasyon3 VPS \u00dczerinde \u00d6rnek HA Mimarisi: 2+1 Yakla\u015f\u0131m\u01314 MySQL \u00dczerinde Primary\u2013Replica Replikasyon Kurulumu4.1 1. MySQL Kurulumu ve Temel G\u00fcvenlik4.2 2. Primary (VPS1) \u00dczerinde Replikasyon Ayarlar\u01314.3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3563,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-3562","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=3562"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3562\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/3563"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=3562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=3562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=3562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}