[{"data":1,"prerenderedAt":1872},["ShallowReactive",2],{"blog-postgresql-yedekleme-streaming-replication-wal":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"readMin":11,"tags":12,"slug":18,"body":19,"_type":1866,"_id":1867,"_source":1868,"_file":1869,"_stem":1870,"_extension":1871},"\u002Fblog\u002Fpostgresql-yedekleme-streaming-replication-wal","blog",false,"","PostgreSQL Yedekleme ve Eş Zamanlı Replikasyon: pg_basebackup, WAL Arşivleme ve Streaming Replication","PostgreSQL veritabanında kesintisiz yedekleme nasıl kurulur? pg_basebackup, WAL arşivleme, streaming replication ve Barman ile production ortamı için adım adım rehber.","2026-06-16",12,[13,14,15,16,17],"PostgreSQL","Veritabanı","Yedekleme","Replikasyon","DevOps","postgresql-yedekleme-streaming-replication-wal",{"type":20,"children":21,"toc":1847},"root",[22,30,35,42,152,174,178,184,189,485,492,549,560,568,574,582,730,733,739,751,757,798,811,835,840,863,869,874,1054,1067,1070,1076,1081,1087,1134,1144,1152,1158,1347,1353,1520,1526,1531,1599,1604,1607,1613,1721,1738,1741,1747,1752,1824,1827,1841],{"type":23,"tag":24,"props":25,"children":26},"element","p",{},[27],{"type":28,"value":29},"text","\"Yedek alıyoruz\" ile \"yedekten dönebiliyoruz\" arasında dağlar kadar fark var. Birçok kurum, bir kriz anında yedeklerinin bozuk veya eksik olduğunu fark eder — o zaman iş işten geçmiş olur.",{"type":23,"tag":24,"props":31,"children":32},{},[33],{"type":28,"value":34},"PostgreSQL, sağlam bir yedekleme altyapısı için ihtiyacınız olan her şeyi sunar. Bu yazıda üç katmanlı bir strateji kuruyoruz: anlık yedek, sürekli WAL arşivleme ve gerçek zamanlı standby.",{"type":23,"tag":36,"props":37,"children":39},"h2",{"id":38},"yedekleme-stratejisinin-üç-katmanı",[40],{"type":28,"value":41},"Yedekleme Stratejisinin Üç Katmanı",{"type":23,"tag":43,"props":44,"children":45},"table",{},[46,75],{"type":23,"tag":47,"props":48,"children":49},"thead",{},[50],{"type":23,"tag":51,"props":52,"children":53},"tr",{},[54,60,65,70],{"type":23,"tag":55,"props":56,"children":57},"th",{},[58],{"type":28,"value":59},"Katman",{"type":23,"tag":55,"props":61,"children":62},{},[63],{"type":28,"value":64},"Yöntem",{"type":23,"tag":55,"props":66,"children":67},{},[68],{"type":28,"value":69},"RPO",{"type":23,"tag":55,"props":71,"children":72},{},[73],{"type":28,"value":74},"RTO",{"type":23,"tag":76,"props":77,"children":78},"tbody",{},[79,108,130],{"type":23,"tag":51,"props":80,"children":81},{},[82,88,98,103],{"type":23,"tag":83,"props":84,"children":85},"td",{},[86],{"type":28,"value":87},"1. Anlık yedek",{"type":23,"tag":83,"props":89,"children":90},{},[91],{"type":23,"tag":92,"props":93,"children":95},"code",{"className":94},[],[96],{"type":28,"value":97},"pg_basebackup",{"type":23,"tag":83,"props":99,"children":100},{},[101],{"type":28,"value":102},"Saatler",{"type":23,"tag":83,"props":104,"children":105},{},[106],{"type":28,"value":107},"Dakikalar-saatler",{"type":23,"tag":51,"props":109,"children":110},{},[111,116,121,126],{"type":23,"tag":83,"props":112,"children":113},{},[114],{"type":28,"value":115},"2. Sürekli arşiv",{"type":23,"tag":83,"props":117,"children":118},{},[119],{"type":28,"value":120},"WAL arşivleme + base backup",{"type":23,"tag":83,"props":122,"children":123},{},[124],{"type":28,"value":125},"Dakikalar",{"type":23,"tag":83,"props":127,"children":128},{},[129],{"type":28,"value":125},{"type":23,"tag":51,"props":131,"children":132},{},[133,138,143,148],{"type":23,"tag":83,"props":134,"children":135},{},[136],{"type":28,"value":137},"3. Canlı standby",{"type":23,"tag":83,"props":139,"children":140},{},[141],{"type":28,"value":142},"Streaming replication",{"type":23,"tag":83,"props":144,"children":145},{},[146],{"type":28,"value":147},"Saniyeler",{"type":23,"tag":83,"props":149,"children":150},{},[151],{"type":28,"value":147},{"type":23,"tag":24,"props":153,"children":154},{},[155,161,163,167,172],{"type":23,"tag":156,"props":157,"children":158},"strong",{},[159],{"type":28,"value":160},"RPO (Recovery Point Objective):",{"type":28,"value":162}," Ne kadar veri kaybedebilirsiniz?",{"type":23,"tag":164,"props":165,"children":166},"br",{},[],{"type":23,"tag":156,"props":168,"children":169},{},[170],{"type":28,"value":171},"RTO (Recovery Time Objective):",{"type":28,"value":173}," Ne kadar sürede ayağa kalkmalısınız?",{"type":23,"tag":175,"props":176,"children":177},"hr",{},[],{"type":23,"tag":36,"props":179,"children":181},{"id":180},"katman-1-pg_basebackup-ile-anlık-yedek",[182],{"type":28,"value":183},"Katman 1: pg_basebackup ile Anlık Yedek",{"type":23,"tag":24,"props":185,"children":186},{},[187],{"type":28,"value":188},"En basit yöntem. Tüm cluster dosyalarını kopyalar.",{"type":23,"tag":190,"props":191,"children":195},"pre",{"code":192,"language":193,"meta":7,"className":194,"style":7},"# Temel kullanım — sıkıştırılmış tar arşivi\npg_basebackup \\\n  --host=localhost \\\n  --username=replicator \\\n  --pgdata=\u002Fyedek\u002Fpg_base_$(date +%Y%m%d) \\\n  --format=tar \\\n  --compress=9 \\\n  --checkpoint=fast \\\n  --progress\n\n# Cron ile günlük yedek (her gece 02:00)\n0 2 * * * pg_basebackup -h localhost -U replicator \\\n  -D \u002Fyedek\u002Fpg_$(date +\\%Y\\%m\\%d) -Ft -z -Xstream -P\n","bash","language-bash shiki shiki-themes github-dark",[196],{"type":23,"tag":92,"props":197,"children":198},{"__ignoreMap":7},[199,211,226,239,252,281,294,307,320,329,339,348,403],{"type":23,"tag":200,"props":201,"children":204},"span",{"class":202,"line":203},"line",1,[205],{"type":23,"tag":200,"props":206,"children":208},{"style":207},"--shiki-default:#6A737D",[209],{"type":28,"value":210},"# Temel kullanım — sıkıştırılmış tar arşivi\n",{"type":23,"tag":200,"props":212,"children":214},{"class":202,"line":213},2,[215,220],{"type":23,"tag":200,"props":216,"children":218},{"style":217},"--shiki-default:#B392F0",[219],{"type":28,"value":97},{"type":23,"tag":200,"props":221,"children":223},{"style":222},"--shiki-default:#79B8FF",[224],{"type":28,"value":225}," \\\n",{"type":23,"tag":200,"props":227,"children":229},{"class":202,"line":228},3,[230,235],{"type":23,"tag":200,"props":231,"children":232},{"style":222},[233],{"type":28,"value":234},"  --host=localhost",{"type":23,"tag":200,"props":236,"children":237},{"style":222},[238],{"type":28,"value":225},{"type":23,"tag":200,"props":240,"children":242},{"class":202,"line":241},4,[243,248],{"type":23,"tag":200,"props":244,"children":245},{"style":222},[246],{"type":28,"value":247},"  --username=replicator",{"type":23,"tag":200,"props":249,"children":250},{"style":222},[251],{"type":28,"value":225},{"type":23,"tag":200,"props":253,"children":255},{"class":202,"line":254},5,[256,261,266,272,277],{"type":23,"tag":200,"props":257,"children":258},{"style":222},[259],{"type":28,"value":260},"  --pgdata=\u002Fyedek\u002Fpg_base_$(",{"type":23,"tag":200,"props":262,"children":263},{"style":217},[264],{"type":28,"value":265},"date",{"type":23,"tag":200,"props":267,"children":269},{"style":268},"--shiki-default:#9ECBFF",[270],{"type":28,"value":271}," +%Y%m%d",{"type":23,"tag":200,"props":273,"children":274},{"style":222},[275],{"type":28,"value":276},")",{"type":23,"tag":200,"props":278,"children":279},{"style":222},[280],{"type":28,"value":225},{"type":23,"tag":200,"props":282,"children":284},{"class":202,"line":283},6,[285,290],{"type":23,"tag":200,"props":286,"children":287},{"style":222},[288],{"type":28,"value":289},"  --format=tar",{"type":23,"tag":200,"props":291,"children":292},{"style":222},[293],{"type":28,"value":225},{"type":23,"tag":200,"props":295,"children":297},{"class":202,"line":296},7,[298,303],{"type":23,"tag":200,"props":299,"children":300},{"style":222},[301],{"type":28,"value":302},"  --compress=9",{"type":23,"tag":200,"props":304,"children":305},{"style":222},[306],{"type":28,"value":225},{"type":23,"tag":200,"props":308,"children":310},{"class":202,"line":309},8,[311,316],{"type":23,"tag":200,"props":312,"children":313},{"style":222},[314],{"type":28,"value":315},"  --checkpoint=fast",{"type":23,"tag":200,"props":317,"children":318},{"style":222},[319],{"type":28,"value":225},{"type":23,"tag":200,"props":321,"children":323},{"class":202,"line":322},9,[324],{"type":23,"tag":200,"props":325,"children":326},{"style":222},[327],{"type":28,"value":328},"  --progress\n",{"type":23,"tag":200,"props":330,"children":332},{"class":202,"line":331},10,[333],{"type":23,"tag":200,"props":334,"children":336},{"emptyLinePlaceholder":335},true,[337],{"type":28,"value":338},"\n",{"type":23,"tag":200,"props":340,"children":342},{"class":202,"line":341},11,[343],{"type":23,"tag":200,"props":344,"children":345},{"style":207},[346],{"type":28,"value":347},"# Cron ile günlük yedek (her gece 02:00)\n",{"type":23,"tag":200,"props":349,"children":350},{"class":202,"line":11},[351,356,361,366,370,374,379,384,389,394,399],{"type":23,"tag":200,"props":352,"children":353},{"style":217},[354],{"type":28,"value":355},"0",{"type":23,"tag":200,"props":357,"children":358},{"style":222},[359],{"type":28,"value":360}," 2",{"type":23,"tag":200,"props":362,"children":363},{"style":222},[364],{"type":28,"value":365}," *",{"type":23,"tag":200,"props":367,"children":368},{"style":222},[369],{"type":28,"value":365},{"type":23,"tag":200,"props":371,"children":372},{"style":222},[373],{"type":28,"value":365},{"type":23,"tag":200,"props":375,"children":376},{"style":268},[377],{"type":28,"value":378}," pg_basebackup",{"type":23,"tag":200,"props":380,"children":381},{"style":222},[382],{"type":28,"value":383}," -h",{"type":23,"tag":200,"props":385,"children":386},{"style":268},[387],{"type":28,"value":388}," localhost",{"type":23,"tag":200,"props":390,"children":391},{"style":222},[392],{"type":28,"value":393}," -U",{"type":23,"tag":200,"props":395,"children":396},{"style":268},[397],{"type":28,"value":398}," replicator",{"type":23,"tag":200,"props":400,"children":401},{"style":222},[402],{"type":28,"value":225},{"type":23,"tag":200,"props":404,"children":406},{"class":202,"line":405},13,[407,412,417,423,427,432,437,442,446,451,455,460,465,470,475,480],{"type":23,"tag":200,"props":408,"children":409},{"style":222},[410],{"type":28,"value":411},"  -D",{"type":23,"tag":200,"props":413,"children":414},{"style":268},[415],{"type":28,"value":416}," \u002Fyedek\u002Fpg_",{"type":23,"tag":200,"props":418,"children":420},{"style":419},"--shiki-default:#E1E4E8",[421],{"type":28,"value":422},"$(",{"type":23,"tag":200,"props":424,"children":425},{"style":217},[426],{"type":28,"value":265},{"type":23,"tag":200,"props":428,"children":429},{"style":268},[430],{"type":28,"value":431}," +",{"type":23,"tag":200,"props":433,"children":434},{"style":222},[435],{"type":28,"value":436},"\\%",{"type":23,"tag":200,"props":438,"children":439},{"style":268},[440],{"type":28,"value":441},"Y",{"type":23,"tag":200,"props":443,"children":444},{"style":222},[445],{"type":28,"value":436},{"type":23,"tag":200,"props":447,"children":448},{"style":268},[449],{"type":28,"value":450},"m",{"type":23,"tag":200,"props":452,"children":453},{"style":222},[454],{"type":28,"value":436},{"type":23,"tag":200,"props":456,"children":457},{"style":268},[458],{"type":28,"value":459},"d",{"type":23,"tag":200,"props":461,"children":462},{"style":419},[463],{"type":28,"value":464},") ",{"type":23,"tag":200,"props":466,"children":467},{"style":222},[468],{"type":28,"value":469},"-Ft",{"type":23,"tag":200,"props":471,"children":472},{"style":222},[473],{"type":28,"value":474}," -z",{"type":23,"tag":200,"props":476,"children":477},{"style":222},[478],{"type":28,"value":479}," -Xstream",{"type":23,"tag":200,"props":481,"children":482},{"style":222},[483],{"type":28,"value":484}," -P\n",{"type":23,"tag":486,"props":487,"children":489},"h3",{"id":488},"replikasyon-kullanıcısı-oluştur",[490],{"type":28,"value":491},"Replikasyon kullanıcısı oluştur",{"type":23,"tag":190,"props":493,"children":497},{"code":494,"language":495,"meta":7,"className":496,"style":7},"CREATE USER replicator REPLICATION LOGIN ENCRYPTED PASSWORD 'güçlü_şifre';\n","sql","language-sql shiki shiki-themes github-dark",[498],{"type":23,"tag":92,"props":499,"children":500},{"__ignoreMap":7},[501],{"type":23,"tag":200,"props":502,"children":503},{"class":202,"line":203},[504,510,515,519,524,529,534,539,544],{"type":23,"tag":200,"props":505,"children":507},{"style":506},"--shiki-default:#F97583",[508],{"type":28,"value":509},"CREATE",{"type":23,"tag":200,"props":511,"children":512},{"style":506},[513],{"type":28,"value":514}," USER",{"type":23,"tag":200,"props":516,"children":517},{"style":217},[518],{"type":28,"value":398},{"type":23,"tag":200,"props":520,"children":521},{"style":419},[522],{"type":28,"value":523}," REPLICATION ",{"type":23,"tag":200,"props":525,"children":526},{"style":506},[527],{"type":28,"value":528},"LOGIN",{"type":23,"tag":200,"props":530,"children":531},{"style":506},[532],{"type":28,"value":533}," ENCRYPTED",{"type":23,"tag":200,"props":535,"children":536},{"style":506},[537],{"type":28,"value":538}," PASSWORD",{"type":23,"tag":200,"props":540,"children":541},{"style":268},[542],{"type":28,"value":543}," 'güçlü_şifre'",{"type":23,"tag":200,"props":545,"children":546},{"style":419},[547],{"type":28,"value":548},";\n",{"type":23,"tag":24,"props":550,"children":551},{},[552,558],{"type":23,"tag":92,"props":553,"children":555},{"className":554},[],[556],{"type":28,"value":557},"pg_hba.conf",{"type":28,"value":559},"'a ekle:",{"type":23,"tag":190,"props":561,"children":563},{"code":562},"host  replication  replicator  127.0.0.1\u002F32  scram-sha-256\n",[564],{"type":23,"tag":92,"props":565,"children":566},{"__ignoreMap":7},[567],{"type":28,"value":562},{"type":23,"tag":486,"props":569,"children":571},{"id":570},"yedekten-dönme-testi",[572],{"type":28,"value":573},"Yedekten Dönme Testi",{"type":23,"tag":24,"props":575,"children":576},{},[577],{"type":23,"tag":156,"props":578,"children":579},{},[580],{"type":28,"value":581},"Almak kadar dönmek de önemli — her yedek test edilmeli.",{"type":23,"tag":190,"props":583,"children":585},{"code":584,"language":193,"meta":7,"className":194,"style":7},"# Test ortamına geri yükle\nmkdir -p \u002Ftest\u002Fpg_restore\ntar -xzf \u002Fyedek\u002Fpg_20260616\u002Fbase.tar.gz -C \u002Ftest\u002Fpg_restore\n\n# PostgreSQL'i test portta başlat\npostgres -D \u002Ftest\u002Fpg_restore -p 5433 &\n\n# Bağlan ve kontrol et\npsql -p 5433 -c \"SELECT count(*) FROM kritik_tablo;\"\n",[586],{"type":23,"tag":92,"props":587,"children":588},{"__ignoreMap":7},[589,597,615,642,649,657,689,696,704],{"type":23,"tag":200,"props":590,"children":591},{"class":202,"line":203},[592],{"type":23,"tag":200,"props":593,"children":594},{"style":207},[595],{"type":28,"value":596},"# Test ortamına geri yükle\n",{"type":23,"tag":200,"props":598,"children":599},{"class":202,"line":213},[600,605,610],{"type":23,"tag":200,"props":601,"children":602},{"style":217},[603],{"type":28,"value":604},"mkdir",{"type":23,"tag":200,"props":606,"children":607},{"style":222},[608],{"type":28,"value":609}," -p",{"type":23,"tag":200,"props":611,"children":612},{"style":268},[613],{"type":28,"value":614}," \u002Ftest\u002Fpg_restore\n",{"type":23,"tag":200,"props":616,"children":617},{"class":202,"line":228},[618,623,628,633,638],{"type":23,"tag":200,"props":619,"children":620},{"style":217},[621],{"type":28,"value":622},"tar",{"type":23,"tag":200,"props":624,"children":625},{"style":222},[626],{"type":28,"value":627}," -xzf",{"type":23,"tag":200,"props":629,"children":630},{"style":268},[631],{"type":28,"value":632}," \u002Fyedek\u002Fpg_20260616\u002Fbase.tar.gz",{"type":23,"tag":200,"props":634,"children":635},{"style":222},[636],{"type":28,"value":637}," -C",{"type":23,"tag":200,"props":639,"children":640},{"style":268},[641],{"type":28,"value":614},{"type":23,"tag":200,"props":643,"children":644},{"class":202,"line":241},[645],{"type":23,"tag":200,"props":646,"children":647},{"emptyLinePlaceholder":335},[648],{"type":28,"value":338},{"type":23,"tag":200,"props":650,"children":651},{"class":202,"line":254},[652],{"type":23,"tag":200,"props":653,"children":654},{"style":207},[655],{"type":28,"value":656},"# PostgreSQL'i test portta başlat\n",{"type":23,"tag":200,"props":658,"children":659},{"class":202,"line":283},[660,665,670,675,679,684],{"type":23,"tag":200,"props":661,"children":662},{"style":217},[663],{"type":28,"value":664},"postgres",{"type":23,"tag":200,"props":666,"children":667},{"style":222},[668],{"type":28,"value":669}," -D",{"type":23,"tag":200,"props":671,"children":672},{"style":268},[673],{"type":28,"value":674}," \u002Ftest\u002Fpg_restore",{"type":23,"tag":200,"props":676,"children":677},{"style":222},[678],{"type":28,"value":609},{"type":23,"tag":200,"props":680,"children":681},{"style":222},[682],{"type":28,"value":683}," 5433",{"type":23,"tag":200,"props":685,"children":686},{"style":419},[687],{"type":28,"value":688}," &\n",{"type":23,"tag":200,"props":690,"children":691},{"class":202,"line":296},[692],{"type":23,"tag":200,"props":693,"children":694},{"emptyLinePlaceholder":335},[695],{"type":28,"value":338},{"type":23,"tag":200,"props":697,"children":698},{"class":202,"line":309},[699],{"type":23,"tag":200,"props":700,"children":701},{"style":207},[702],{"type":28,"value":703},"# Bağlan ve kontrol et\n",{"type":23,"tag":200,"props":705,"children":706},{"class":202,"line":322},[707,712,716,720,725],{"type":23,"tag":200,"props":708,"children":709},{"style":217},[710],{"type":28,"value":711},"psql",{"type":23,"tag":200,"props":713,"children":714},{"style":222},[715],{"type":28,"value":609},{"type":23,"tag":200,"props":717,"children":718},{"style":222},[719],{"type":28,"value":683},{"type":23,"tag":200,"props":721,"children":722},{"style":222},[723],{"type":28,"value":724}," -c",{"type":23,"tag":200,"props":726,"children":727},{"style":268},[728],{"type":28,"value":729}," \"SELECT count(*) FROM kritik_tablo;\"\n",{"type":23,"tag":175,"props":731,"children":732},{},[],{"type":23,"tag":36,"props":734,"children":736},{"id":735},"katman-2-wal-arşivleme-dakika-düzeyinde-kurtarma",[737],{"type":28,"value":738},"Katman 2: WAL Arşivleme — Dakika Düzeyinde Kurtarma",{"type":23,"tag":24,"props":740,"children":741},{},[742,744,749],{"type":28,"value":743},"WAL (Write-Ahead Log), PostgreSQL'in tüm değişiklikleri önce yazdığı günlüktür. Bu dosyaları arşivleyerek herhangi bir ",{"type":23,"tag":156,"props":745,"children":746},{},[747],{"type":28,"value":748},"dakikaya",{"type":28,"value":750}," dönebilirsiniz (Point-in-Time Recovery — PITR).",{"type":23,"tag":486,"props":752,"children":754},{"id":753},"postgresqlconf-ayarları",[755],{"type":28,"value":756},"postgresql.conf Ayarları",{"type":23,"tag":190,"props":758,"children":762},{"code":759,"language":760,"meta":7,"className":761,"style":7},"wal_level = replica          # en az replica olmalı\narchive_mode = on\narchive_command = 'cp %p \u002Fwal-arsiv\u002F%f'  # ya da rsync, s3 vb.\narchive_timeout = 300        # 5 dakikada bir arşivle (boşta bile)\n","ini","language-ini shiki shiki-themes github-dark",[763],{"type":23,"tag":92,"props":764,"children":765},{"__ignoreMap":7},[766,774,782,790],{"type":23,"tag":200,"props":767,"children":768},{"class":202,"line":203},[769],{"type":23,"tag":200,"props":770,"children":771},{},[772],{"type":28,"value":773},"wal_level = replica          # en az replica olmalı\n",{"type":23,"tag":200,"props":775,"children":776},{"class":202,"line":213},[777],{"type":23,"tag":200,"props":778,"children":779},{},[780],{"type":28,"value":781},"archive_mode = on\n",{"type":23,"tag":200,"props":783,"children":784},{"class":202,"line":228},[785],{"type":23,"tag":200,"props":786,"children":787},{},[788],{"type":28,"value":789},"archive_command = 'cp %p \u002Fwal-arsiv\u002F%f'  # ya da rsync, s3 vb.\n",{"type":23,"tag":200,"props":791,"children":792},{"class":202,"line":241},[793],{"type":23,"tag":200,"props":794,"children":795},{},[796],{"type":28,"value":797},"archive_timeout = 300        # 5 dakikada bir arşivle (boşta bile)\n",{"type":23,"tag":24,"props":799,"children":800},{},[801,803,809],{"type":28,"value":802},"Daha güvenli bir ",{"type":23,"tag":92,"props":804,"children":806},{"className":805},[],[807],{"type":28,"value":808},"archive_command",{"type":28,"value":810}," (başarısız olursa yeniden dener):",{"type":23,"tag":190,"props":812,"children":814},{"code":813,"language":193,"meta":7,"className":194,"style":7},"archive_command = 'test ! -f \u002Fwal-arsiv\u002F%f && cp %p \u002Fwal-arsiv\u002F%f'\n",[815],{"type":23,"tag":92,"props":816,"children":817},{"__ignoreMap":7},[818],{"type":23,"tag":200,"props":819,"children":820},{"class":202,"line":203},[821,825,830],{"type":23,"tag":200,"props":822,"children":823},{"style":217},[824],{"type":28,"value":808},{"type":23,"tag":200,"props":826,"children":827},{"style":268},[828],{"type":28,"value":829}," =",{"type":23,"tag":200,"props":831,"children":832},{"style":268},[833],{"type":28,"value":834}," 'test ! -f \u002Fwal-arsiv\u002F%f && cp %p \u002Fwal-arsiv\u002F%f'\n",{"type":23,"tag":24,"props":836,"children":837},{},[838],{"type":28,"value":839},"Uzak sunucuya rsync ile:",{"type":23,"tag":190,"props":841,"children":843},{"code":842,"language":193,"meta":7,"className":194,"style":7},"archive_command = 'rsync -a %p yedek-sunucu:\u002Fwal-arsiv\u002F%f'\n",[844],{"type":23,"tag":92,"props":845,"children":846},{"__ignoreMap":7},[847],{"type":23,"tag":200,"props":848,"children":849},{"class":202,"line":203},[850,854,858],{"type":23,"tag":200,"props":851,"children":852},{"style":217},[853],{"type":28,"value":808},{"type":23,"tag":200,"props":855,"children":856},{"style":268},[857],{"type":28,"value":829},{"type":23,"tag":200,"props":859,"children":860},{"style":268},[861],{"type":28,"value":862}," 'rsync -a %p yedek-sunucu:\u002Fwal-arsiv\u002F%f'\n",{"type":23,"tag":486,"props":864,"children":866},{"id":865},"pitr-belirli-bir-zamana-dönme",[867],{"type":28,"value":868},"PITR — Belirli Bir Zamana Dönme",{"type":23,"tag":24,"props":870,"children":871},{},[872],{"type":28,"value":873},"Diyelim ki saat 14:32'de bir tablo yanlışlıkla silindi. Tam o ana dönebilirsiniz:",{"type":23,"tag":190,"props":875,"children":877},{"code":876,"language":193,"meta":7,"className":194,"style":7},"# 1. Son base backup'ı restore et\ntar -xzf \u002Fyedek\u002Fpg_20260616\u002Fbase.tar.gz -C \u002Fdata\u002Fpg_restore\n\n# 2. recovery.conf (PG 12 öncesi) veya postgresql.conf'a ekle\ncat >> \u002Fdata\u002Fpg_restore\u002Fpostgresql.conf \u003C\u003C 'EOF'\nrestore_command = 'cp \u002Fwal-arsiv\u002F%f %p'\nrecovery_target_time = '2026-06-16 14:31:59'\nrecovery_target_action = 'promote'\nEOF\n\n# 3. recovery.signal dosyası oluştur (PG 12+)\ntouch \u002Fdata\u002Fpg_restore\u002Frecovery.signal\n\n# 4. Başlat\npg_ctl start -D \u002Fdata\u002Fpg_restore\n",[878],{"type":23,"tag":92,"props":879,"children":880},{"__ignoreMap":7},[881,889,913,920,928,956,964,972,980,988,995,1003,1016,1023,1032],{"type":23,"tag":200,"props":882,"children":883},{"class":202,"line":203},[884],{"type":23,"tag":200,"props":885,"children":886},{"style":207},[887],{"type":28,"value":888},"# 1. Son base backup'ı restore et\n",{"type":23,"tag":200,"props":890,"children":891},{"class":202,"line":213},[892,896,900,904,908],{"type":23,"tag":200,"props":893,"children":894},{"style":217},[895],{"type":28,"value":622},{"type":23,"tag":200,"props":897,"children":898},{"style":222},[899],{"type":28,"value":627},{"type":23,"tag":200,"props":901,"children":902},{"style":268},[903],{"type":28,"value":632},{"type":23,"tag":200,"props":905,"children":906},{"style":222},[907],{"type":28,"value":637},{"type":23,"tag":200,"props":909,"children":910},{"style":268},[911],{"type":28,"value":912}," \u002Fdata\u002Fpg_restore\n",{"type":23,"tag":200,"props":914,"children":915},{"class":202,"line":228},[916],{"type":23,"tag":200,"props":917,"children":918},{"emptyLinePlaceholder":335},[919],{"type":28,"value":338},{"type":23,"tag":200,"props":921,"children":922},{"class":202,"line":241},[923],{"type":23,"tag":200,"props":924,"children":925},{"style":207},[926],{"type":28,"value":927},"# 2. recovery.conf (PG 12 öncesi) veya postgresql.conf'a ekle\n",{"type":23,"tag":200,"props":929,"children":930},{"class":202,"line":254},[931,936,941,946,951],{"type":23,"tag":200,"props":932,"children":933},{"style":217},[934],{"type":28,"value":935},"cat",{"type":23,"tag":200,"props":937,"children":938},{"style":506},[939],{"type":28,"value":940}," >>",{"type":23,"tag":200,"props":942,"children":943},{"style":268},[944],{"type":28,"value":945}," \u002Fdata\u002Fpg_restore\u002Fpostgresql.conf",{"type":23,"tag":200,"props":947,"children":948},{"style":506},[949],{"type":28,"value":950}," \u003C\u003C",{"type":23,"tag":200,"props":952,"children":953},{"style":268},[954],{"type":28,"value":955}," 'EOF'\n",{"type":23,"tag":200,"props":957,"children":958},{"class":202,"line":283},[959],{"type":23,"tag":200,"props":960,"children":961},{"style":268},[962],{"type":28,"value":963},"restore_command = 'cp \u002Fwal-arsiv\u002F%f %p'\n",{"type":23,"tag":200,"props":965,"children":966},{"class":202,"line":296},[967],{"type":23,"tag":200,"props":968,"children":969},{"style":268},[970],{"type":28,"value":971},"recovery_target_time = '2026-06-16 14:31:59'\n",{"type":23,"tag":200,"props":973,"children":974},{"class":202,"line":309},[975],{"type":23,"tag":200,"props":976,"children":977},{"style":268},[978],{"type":28,"value":979},"recovery_target_action = 'promote'\n",{"type":23,"tag":200,"props":981,"children":982},{"class":202,"line":322},[983],{"type":23,"tag":200,"props":984,"children":985},{"style":268},[986],{"type":28,"value":987},"EOF\n",{"type":23,"tag":200,"props":989,"children":990},{"class":202,"line":331},[991],{"type":23,"tag":200,"props":992,"children":993},{"emptyLinePlaceholder":335},[994],{"type":28,"value":338},{"type":23,"tag":200,"props":996,"children":997},{"class":202,"line":341},[998],{"type":23,"tag":200,"props":999,"children":1000},{"style":207},[1001],{"type":28,"value":1002},"# 3. recovery.signal dosyası oluştur (PG 12+)\n",{"type":23,"tag":200,"props":1004,"children":1005},{"class":202,"line":11},[1006,1011],{"type":23,"tag":200,"props":1007,"children":1008},{"style":217},[1009],{"type":28,"value":1010},"touch",{"type":23,"tag":200,"props":1012,"children":1013},{"style":268},[1014],{"type":28,"value":1015}," \u002Fdata\u002Fpg_restore\u002Frecovery.signal\n",{"type":23,"tag":200,"props":1017,"children":1018},{"class":202,"line":405},[1019],{"type":23,"tag":200,"props":1020,"children":1021},{"emptyLinePlaceholder":335},[1022],{"type":28,"value":338},{"type":23,"tag":200,"props":1024,"children":1026},{"class":202,"line":1025},14,[1027],{"type":23,"tag":200,"props":1028,"children":1029},{"style":207},[1030],{"type":28,"value":1031},"# 4. Başlat\n",{"type":23,"tag":200,"props":1033,"children":1035},{"class":202,"line":1034},15,[1036,1041,1046,1050],{"type":23,"tag":200,"props":1037,"children":1038},{"style":217},[1039],{"type":28,"value":1040},"pg_ctl",{"type":23,"tag":200,"props":1042,"children":1043},{"style":268},[1044],{"type":28,"value":1045}," start",{"type":23,"tag":200,"props":1047,"children":1048},{"style":222},[1049],{"type":28,"value":669},{"type":23,"tag":200,"props":1051,"children":1052},{"style":268},[1053],{"type":28,"value":912},{"type":23,"tag":24,"props":1055,"children":1056},{},[1057,1059,1065],{"type":28,"value":1058},"PostgreSQL WAL dosyalarını sırayla uygulayarak tam olarak ",{"type":23,"tag":92,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":28,"value":1064},"14:31:59",{"type":28,"value":1066},"'daki duruma getirir.",{"type":23,"tag":175,"props":1068,"children":1069},{},[],{"type":23,"tag":36,"props":1071,"children":1073},{"id":1072},"katman-3-streaming-replication-sıfıra-yakın-veri-kaybı",[1074],{"type":28,"value":1075},"Katman 3: Streaming Replication — Sıfıra Yakın Veri Kaybı",{"type":23,"tag":24,"props":1077,"children":1078},{},[1079],{"type":28,"value":1080},"Primary → Standby arasında gerçek zamanlı veri akışı. Primary çökerse standby saniyeler içinde devreye girer.",{"type":23,"tag":486,"props":1082,"children":1084},{"id":1083},"primary-ayarları-postgresqlconf",[1085],{"type":28,"value":1086},"Primary Ayarları (postgresql.conf)",{"type":23,"tag":190,"props":1088,"children":1090},{"code":1089,"language":760,"meta":7,"className":761,"style":7},"wal_level = replica\nmax_wal_senders = 3          # aynı anda kaç standby bağlanabilir\nwal_keep_size = 1GB          # standby geride kalırsa buffer\nhot_standby = on             # standby read-only sorguları kabul etsin\nsynchronous_commit = on      # senkron replikasyon (veri kaybı sıfır, biraz daha yavaş)\n",[1091],{"type":23,"tag":92,"props":1092,"children":1093},{"__ignoreMap":7},[1094,1102,1110,1118,1126],{"type":23,"tag":200,"props":1095,"children":1096},{"class":202,"line":203},[1097],{"type":23,"tag":200,"props":1098,"children":1099},{},[1100],{"type":28,"value":1101},"wal_level = replica\n",{"type":23,"tag":200,"props":1103,"children":1104},{"class":202,"line":213},[1105],{"type":23,"tag":200,"props":1106,"children":1107},{},[1108],{"type":28,"value":1109},"max_wal_senders = 3          # aynı anda kaç standby bağlanabilir\n",{"type":23,"tag":200,"props":1111,"children":1112},{"class":202,"line":228},[1113],{"type":23,"tag":200,"props":1114,"children":1115},{},[1116],{"type":28,"value":1117},"wal_keep_size = 1GB          # standby geride kalırsa buffer\n",{"type":23,"tag":200,"props":1119,"children":1120},{"class":202,"line":241},[1121],{"type":23,"tag":200,"props":1122,"children":1123},{},[1124],{"type":28,"value":1125},"hot_standby = on             # standby read-only sorguları kabul etsin\n",{"type":23,"tag":200,"props":1127,"children":1128},{"class":202,"line":254},[1129],{"type":23,"tag":200,"props":1130,"children":1131},{},[1132],{"type":28,"value":1133},"synchronous_commit = on      # senkron replikasyon (veri kaybı sıfır, biraz daha yavaş)\n",{"type":23,"tag":24,"props":1135,"children":1136},{},[1137,1142],{"type":23,"tag":92,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":28,"value":557},{"type":28,"value":1143},"'a standby izni:",{"type":23,"tag":190,"props":1145,"children":1147},{"code":1146},"host  replication  replicator  STANDBY_IP\u002F32  scram-sha-256\n",[1148],{"type":23,"tag":92,"props":1149,"children":1150},{"__ignoreMap":7},[1151],{"type":28,"value":1146},{"type":23,"tag":486,"props":1153,"children":1155},{"id":1154},"standby-kurulumu",[1156],{"type":28,"value":1157},"Standby Kurulumu",{"type":23,"tag":190,"props":1159,"children":1161},{"code":1160,"language":193,"meta":7,"className":194,"style":7},"# Primary'den base backup al\npg_basebackup \\\n  --host=PRIMARY_IP \\\n  --username=replicator \\\n  --pgdata=\u002Fdata\u002Fstandby \\\n  --wal-method=stream \\\n  --progress\n\n# Standby sinyali\ntouch \u002Fdata\u002Fstandby\u002Fstandby.signal\n\n# postgresql.conf'ta primary bağlantısı\necho \"primary_conninfo = 'host=PRIMARY_IP user=replicator password=şifre'\" \\\n  >> \u002Fdata\u002Fstandby\u002Fpostgresql.conf\n\n# Başlat\npg_ctl start -D \u002Fdata\u002Fstandby\n",[1162],{"type":23,"tag":92,"props":1163,"children":1164},{"__ignoreMap":7},[1165,1173,1184,1196,1207,1219,1231,1238,1245,1253,1265,1272,1280,1297,1310,1317,1326],{"type":23,"tag":200,"props":1166,"children":1167},{"class":202,"line":203},[1168],{"type":23,"tag":200,"props":1169,"children":1170},{"style":207},[1171],{"type":28,"value":1172},"# Primary'den base backup al\n",{"type":23,"tag":200,"props":1174,"children":1175},{"class":202,"line":213},[1176,1180],{"type":23,"tag":200,"props":1177,"children":1178},{"style":217},[1179],{"type":28,"value":97},{"type":23,"tag":200,"props":1181,"children":1182},{"style":222},[1183],{"type":28,"value":225},{"type":23,"tag":200,"props":1185,"children":1186},{"class":202,"line":228},[1187,1192],{"type":23,"tag":200,"props":1188,"children":1189},{"style":222},[1190],{"type":28,"value":1191},"  --host=PRIMARY_IP",{"type":23,"tag":200,"props":1193,"children":1194},{"style":222},[1195],{"type":28,"value":225},{"type":23,"tag":200,"props":1197,"children":1198},{"class":202,"line":241},[1199,1203],{"type":23,"tag":200,"props":1200,"children":1201},{"style":222},[1202],{"type":28,"value":247},{"type":23,"tag":200,"props":1204,"children":1205},{"style":222},[1206],{"type":28,"value":225},{"type":23,"tag":200,"props":1208,"children":1209},{"class":202,"line":254},[1210,1215],{"type":23,"tag":200,"props":1211,"children":1212},{"style":222},[1213],{"type":28,"value":1214},"  --pgdata=\u002Fdata\u002Fstandby",{"type":23,"tag":200,"props":1216,"children":1217},{"style":222},[1218],{"type":28,"value":225},{"type":23,"tag":200,"props":1220,"children":1221},{"class":202,"line":283},[1222,1227],{"type":23,"tag":200,"props":1223,"children":1224},{"style":222},[1225],{"type":28,"value":1226},"  --wal-method=stream",{"type":23,"tag":200,"props":1228,"children":1229},{"style":222},[1230],{"type":28,"value":225},{"type":23,"tag":200,"props":1232,"children":1233},{"class":202,"line":296},[1234],{"type":23,"tag":200,"props":1235,"children":1236},{"style":222},[1237],{"type":28,"value":328},{"type":23,"tag":200,"props":1239,"children":1240},{"class":202,"line":309},[1241],{"type":23,"tag":200,"props":1242,"children":1243},{"emptyLinePlaceholder":335},[1244],{"type":28,"value":338},{"type":23,"tag":200,"props":1246,"children":1247},{"class":202,"line":322},[1248],{"type":23,"tag":200,"props":1249,"children":1250},{"style":207},[1251],{"type":28,"value":1252},"# Standby sinyali\n",{"type":23,"tag":200,"props":1254,"children":1255},{"class":202,"line":331},[1256,1260],{"type":23,"tag":200,"props":1257,"children":1258},{"style":217},[1259],{"type":28,"value":1010},{"type":23,"tag":200,"props":1261,"children":1262},{"style":268},[1263],{"type":28,"value":1264}," \u002Fdata\u002Fstandby\u002Fstandby.signal\n",{"type":23,"tag":200,"props":1266,"children":1267},{"class":202,"line":341},[1268],{"type":23,"tag":200,"props":1269,"children":1270},{"emptyLinePlaceholder":335},[1271],{"type":28,"value":338},{"type":23,"tag":200,"props":1273,"children":1274},{"class":202,"line":11},[1275],{"type":23,"tag":200,"props":1276,"children":1277},{"style":207},[1278],{"type":28,"value":1279},"# postgresql.conf'ta primary bağlantısı\n",{"type":23,"tag":200,"props":1281,"children":1282},{"class":202,"line":405},[1283,1288,1293],{"type":23,"tag":200,"props":1284,"children":1285},{"style":222},[1286],{"type":28,"value":1287},"echo",{"type":23,"tag":200,"props":1289,"children":1290},{"style":268},[1291],{"type":28,"value":1292}," \"primary_conninfo = 'host=PRIMARY_IP user=replicator password=şifre'\"",{"type":23,"tag":200,"props":1294,"children":1295},{"style":222},[1296],{"type":28,"value":225},{"type":23,"tag":200,"props":1298,"children":1299},{"class":202,"line":1025},[1300,1305],{"type":23,"tag":200,"props":1301,"children":1302},{"style":506},[1303],{"type":28,"value":1304},"  >>",{"type":23,"tag":200,"props":1306,"children":1307},{"style":268},[1308],{"type":28,"value":1309}," \u002Fdata\u002Fstandby\u002Fpostgresql.conf\n",{"type":23,"tag":200,"props":1311,"children":1312},{"class":202,"line":1034},[1313],{"type":23,"tag":200,"props":1314,"children":1315},{"emptyLinePlaceholder":335},[1316],{"type":28,"value":338},{"type":23,"tag":200,"props":1318,"children":1320},{"class":202,"line":1319},16,[1321],{"type":23,"tag":200,"props":1322,"children":1323},{"style":207},[1324],{"type":28,"value":1325},"# Başlat\n",{"type":23,"tag":200,"props":1327,"children":1329},{"class":202,"line":1328},17,[1330,1334,1338,1342],{"type":23,"tag":200,"props":1331,"children":1332},{"style":217},[1333],{"type":28,"value":1040},{"type":23,"tag":200,"props":1335,"children":1336},{"style":268},[1337],{"type":28,"value":1045},{"type":23,"tag":200,"props":1339,"children":1340},{"style":222},[1341],{"type":28,"value":669},{"type":23,"tag":200,"props":1343,"children":1344},{"style":268},[1345],{"type":28,"value":1346}," \u002Fdata\u002Fstandby\n",{"type":23,"tag":486,"props":1348,"children":1350},{"id":1349},"replikasyon-durumunu-i̇zle",[1351],{"type":28,"value":1352},"Replikasyon Durumunu İzle",{"type":23,"tag":190,"props":1354,"children":1356},{"code":1355,"language":495,"meta":7,"className":496,"style":7},"-- Primary'de: standby'lar bağlı mı, geride mi?\nSELECT\n    application_name,\n    state,\n    sent_lsn,\n    replay_lsn,\n    (sent_lsn - replay_lsn)::text AS gerideki_bytes,\n    sync_state\nFROM pg_stat_replication;\n\n-- Standby'da: ne kadar geride?\nSELECT\n    now() - pg_last_xact_replay_timestamp() AS replikasyon_gecikmesi;\n",[1357],{"type":23,"tag":92,"props":1358,"children":1359},{"__ignoreMap":7},[1360,1368,1376,1384,1397,1405,1413,1445,1453,1466,1473,1481,1488],{"type":23,"tag":200,"props":1361,"children":1362},{"class":202,"line":203},[1363],{"type":23,"tag":200,"props":1364,"children":1365},{"style":207},[1366],{"type":28,"value":1367},"-- Primary'de: standby'lar bağlı mı, geride mi?\n",{"type":23,"tag":200,"props":1369,"children":1370},{"class":202,"line":213},[1371],{"type":23,"tag":200,"props":1372,"children":1373},{"style":506},[1374],{"type":28,"value":1375},"SELECT\n",{"type":23,"tag":200,"props":1377,"children":1378},{"class":202,"line":228},[1379],{"type":23,"tag":200,"props":1380,"children":1381},{"style":419},[1382],{"type":28,"value":1383},"    application_name,\n",{"type":23,"tag":200,"props":1385,"children":1386},{"class":202,"line":241},[1387,1392],{"type":23,"tag":200,"props":1388,"children":1389},{"style":506},[1390],{"type":28,"value":1391},"    state",{"type":23,"tag":200,"props":1393,"children":1394},{"style":419},[1395],{"type":28,"value":1396},",\n",{"type":23,"tag":200,"props":1398,"children":1399},{"class":202,"line":254},[1400],{"type":23,"tag":200,"props":1401,"children":1402},{"style":419},[1403],{"type":28,"value":1404},"    sent_lsn,\n",{"type":23,"tag":200,"props":1406,"children":1407},{"class":202,"line":283},[1408],{"type":23,"tag":200,"props":1409,"children":1410},{"style":419},[1411],{"type":28,"value":1412},"    replay_lsn,\n",{"type":23,"tag":200,"props":1414,"children":1415},{"class":202,"line":296},[1416,1421,1426,1431,1435,1440],{"type":23,"tag":200,"props":1417,"children":1418},{"style":419},[1419],{"type":28,"value":1420},"    (sent_lsn ",{"type":23,"tag":200,"props":1422,"children":1423},{"style":506},[1424],{"type":28,"value":1425},"-",{"type":23,"tag":200,"props":1427,"children":1428},{"style":419},[1429],{"type":28,"value":1430}," replay_lsn)::",{"type":23,"tag":200,"props":1432,"children":1433},{"style":506},[1434],{"type":28,"value":28},{"type":23,"tag":200,"props":1436,"children":1437},{"style":506},[1438],{"type":28,"value":1439}," AS",{"type":23,"tag":200,"props":1441,"children":1442},{"style":419},[1443],{"type":28,"value":1444}," gerideki_bytes,\n",{"type":23,"tag":200,"props":1446,"children":1447},{"class":202,"line":309},[1448],{"type":23,"tag":200,"props":1449,"children":1450},{"style":419},[1451],{"type":28,"value":1452},"    sync_state\n",{"type":23,"tag":200,"props":1454,"children":1455},{"class":202,"line":322},[1456,1461],{"type":23,"tag":200,"props":1457,"children":1458},{"style":506},[1459],{"type":28,"value":1460},"FROM",{"type":23,"tag":200,"props":1462,"children":1463},{"style":419},[1464],{"type":28,"value":1465}," pg_stat_replication;\n",{"type":23,"tag":200,"props":1467,"children":1468},{"class":202,"line":331},[1469],{"type":23,"tag":200,"props":1470,"children":1471},{"emptyLinePlaceholder":335},[1472],{"type":28,"value":338},{"type":23,"tag":200,"props":1474,"children":1475},{"class":202,"line":341},[1476],{"type":23,"tag":200,"props":1477,"children":1478},{"style":207},[1479],{"type":28,"value":1480},"-- Standby'da: ne kadar geride?\n",{"type":23,"tag":200,"props":1482,"children":1483},{"class":202,"line":11},[1484],{"type":23,"tag":200,"props":1485,"children":1486},{"style":506},[1487],{"type":28,"value":1375},{"type":23,"tag":200,"props":1489,"children":1490},{"class":202,"line":405},[1491,1496,1501,1505,1510,1515],{"type":23,"tag":200,"props":1492,"children":1493},{"style":506},[1494],{"type":28,"value":1495},"    now",{"type":23,"tag":200,"props":1497,"children":1498},{"style":419},[1499],{"type":28,"value":1500},"() ",{"type":23,"tag":200,"props":1502,"children":1503},{"style":506},[1504],{"type":28,"value":1425},{"type":23,"tag":200,"props":1506,"children":1507},{"style":419},[1508],{"type":28,"value":1509}," pg_last_xact_replay_timestamp() ",{"type":23,"tag":200,"props":1511,"children":1512},{"style":506},[1513],{"type":28,"value":1514},"AS",{"type":23,"tag":200,"props":1516,"children":1517},{"style":419},[1518],{"type":28,"value":1519}," replikasyon_gecikmesi;\n",{"type":23,"tag":486,"props":1521,"children":1523},{"id":1522},"failover-standbyı-promote-et",[1524],{"type":28,"value":1525},"Failover — Standby'ı Promote Et",{"type":23,"tag":24,"props":1527,"children":1528},{},[1529],{"type":28,"value":1530},"Primary çöktüğünde:",{"type":23,"tag":190,"props":1532,"children":1534},{"code":1533,"language":193,"meta":7,"className":194,"style":7},"# Standby'ı primary olarak yükselt\npg_ctl promote -D \u002Fdata\u002Fstandby\n\n# Ya da SQL ile\nSELECT pg_promote();\n",[1535],{"type":23,"tag":92,"props":1536,"children":1537},{"__ignoreMap":7},[1538,1546,1566,1573,1581],{"type":23,"tag":200,"props":1539,"children":1540},{"class":202,"line":203},[1541],{"type":23,"tag":200,"props":1542,"children":1543},{"style":207},[1544],{"type":28,"value":1545},"# Standby'ı primary olarak yükselt\n",{"type":23,"tag":200,"props":1547,"children":1548},{"class":202,"line":213},[1549,1553,1558,1562],{"type":23,"tag":200,"props":1550,"children":1551},{"style":217},[1552],{"type":28,"value":1040},{"type":23,"tag":200,"props":1554,"children":1555},{"style":268},[1556],{"type":28,"value":1557}," promote",{"type":23,"tag":200,"props":1559,"children":1560},{"style":222},[1561],{"type":28,"value":669},{"type":23,"tag":200,"props":1563,"children":1564},{"style":268},[1565],{"type":28,"value":1346},{"type":23,"tag":200,"props":1567,"children":1568},{"class":202,"line":228},[1569],{"type":23,"tag":200,"props":1570,"children":1571},{"emptyLinePlaceholder":335},[1572],{"type":28,"value":338},{"type":23,"tag":200,"props":1574,"children":1575},{"class":202,"line":241},[1576],{"type":23,"tag":200,"props":1577,"children":1578},{"style":207},[1579],{"type":28,"value":1580},"# Ya da SQL ile\n",{"type":23,"tag":200,"props":1582,"children":1583},{"class":202,"line":254},[1584,1589,1594],{"type":23,"tag":200,"props":1585,"children":1586},{"style":217},[1587],{"type":28,"value":1588},"SELECT",{"type":23,"tag":200,"props":1590,"children":1591},{"style":268},[1592],{"type":28,"value":1593}," pg_promote",{"type":23,"tag":200,"props":1595,"children":1596},{"style":419},[1597],{"type":28,"value":1598},"();\n",{"type":23,"tag":24,"props":1600,"children":1601},{},[1602],{"type":28,"value":1603},"Uygulama bağlantılarını yeni primary'ye (eski standby) yönlendirin.",{"type":23,"tag":175,"props":1605,"children":1606},{},[],{"type":23,"tag":36,"props":1608,"children":1610},{"id":1609},"sektördeki-en-i̇yi-araçlar",[1611],{"type":28,"value":1612},"Sektördeki En İyi Araçlar",{"type":23,"tag":43,"props":1614,"children":1615},{},[1616,1637],{"type":23,"tag":47,"props":1617,"children":1618},{},[1619],{"type":23,"tag":51,"props":1620,"children":1621},{},[1622,1627,1632],{"type":23,"tag":55,"props":1623,"children":1624},{},[1625],{"type":28,"value":1626},"Araç",{"type":23,"tag":55,"props":1628,"children":1629},{},[1630],{"type":28,"value":1631},"Kullanım",{"type":23,"tag":55,"props":1633,"children":1634},{},[1635],{"type":28,"value":1636},"Ücreti",{"type":23,"tag":76,"props":1638,"children":1639},{},[1640,1661,1681,1701],{"type":23,"tag":51,"props":1641,"children":1642},{},[1643,1651,1656],{"type":23,"tag":83,"props":1644,"children":1645},{},[1646],{"type":23,"tag":156,"props":1647,"children":1648},{},[1649],{"type":28,"value":1650},"Barman",{"type":23,"tag":83,"props":1652,"children":1653},{},[1654],{"type":28,"value":1655},"Merkezi WAL arşivleme, çoklu cluster yönetimi",{"type":23,"tag":83,"props":1657,"children":1658},{},[1659],{"type":28,"value":1660},"Ücretsiz",{"type":23,"tag":51,"props":1662,"children":1663},{},[1664,1672,1677],{"type":23,"tag":83,"props":1665,"children":1666},{},[1667],{"type":23,"tag":156,"props":1668,"children":1669},{},[1670],{"type":28,"value":1671},"pgBackRest",{"type":23,"tag":83,"props":1673,"children":1674},{},[1675],{"type":28,"value":1676},"Paralel yedek, S3 entegrasyonu, delta backup",{"type":23,"tag":83,"props":1678,"children":1679},{},[1680],{"type":28,"value":1660},{"type":23,"tag":51,"props":1682,"children":1683},{},[1684,1692,1697],{"type":23,"tag":83,"props":1685,"children":1686},{},[1687],{"type":23,"tag":156,"props":1688,"children":1689},{},[1690],{"type":28,"value":1691},"repmgr",{"type":23,"tag":83,"props":1693,"children":1694},{},[1695],{"type":28,"value":1696},"Otomatik failover yönetimi",{"type":23,"tag":83,"props":1698,"children":1699},{},[1700],{"type":28,"value":1660},{"type":23,"tag":51,"props":1702,"children":1703},{},[1704,1712,1717],{"type":23,"tag":83,"props":1705,"children":1706},{},[1707],{"type":23,"tag":156,"props":1708,"children":1709},{},[1710],{"type":28,"value":1711},"Patroni",{"type":23,"tag":83,"props":1713,"children":1714},{},[1715],{"type":28,"value":1716},"Kubernetes-native HA, etcd\u002Fconsul ile",{"type":23,"tag":83,"props":1718,"children":1719},{},[1720],{"type":28,"value":1660},{"type":23,"tag":24,"props":1722,"children":1723},{},[1724,1726,1730,1732,1736],{"type":28,"value":1725},"Production ortamlar için ",{"type":23,"tag":156,"props":1727,"children":1728},{},[1729],{"type":28,"value":1671},{"type":28,"value":1731}," + ",{"type":23,"tag":156,"props":1733,"children":1734},{},[1735],{"type":28,"value":1711},{"type":28,"value":1737}," kombinasyonunu öneriyoruz.",{"type":23,"tag":175,"props":1739,"children":1740},{},[],{"type":23,"tag":36,"props":1742,"children":1744},{"id":1743},"yedekleme-sağlık-kontrol-listesi",[1745],{"type":28,"value":1746},"Yedekleme Sağlık Kontrol Listesi",{"type":23,"tag":24,"props":1748,"children":1749},{},[1750],{"type":28,"value":1751},"Yedek altyapınızı kurarken şu soruların yanıtı \"evet\" olmalı:",{"type":23,"tag":1753,"props":1754,"children":1757},"ul",{"className":1755},[1756],"contains-task-list",[1758,1771,1788,1797,1806,1815],{"type":23,"tag":1759,"props":1760,"children":1763},"li",{"className":1761},[1762],"task-list-item",[1764,1769],{"type":23,"tag":1765,"props":1766,"children":1768},"input",{"disabled":335,"type":1767},"checkbox",[],{"type":28,"value":1770}," Her gece base backup alınıyor mu?",{"type":23,"tag":1759,"props":1772,"children":1774},{"className":1773},[1762],[1775,1778,1780,1786],{"type":23,"tag":1765,"props":1776,"children":1777},{"disabled":335,"type":1767},[],{"type":28,"value":1779}," WAL arşivleme aktif ve boşluk yok mu? (",{"type":23,"tag":92,"props":1781,"children":1783},{"className":1782},[],[1784],{"type":28,"value":1785},"archive_status",{"type":28,"value":1787}," kontrol et)",{"type":23,"tag":1759,"props":1789,"children":1791},{"className":1790},[1762],[1792,1795],{"type":23,"tag":1765,"props":1793,"children":1794},{"disabled":335,"type":1767},[],{"type":28,"value":1796}," Yedekler farklı bir lokasyonda (off-site) mı?",{"type":23,"tag":1759,"props":1798,"children":1800},{"className":1799},[1762],[1801,1804],{"type":23,"tag":1765,"props":1802,"children":1803},{"disabled":335,"type":1767},[],{"type":28,"value":1805}," Aylık restore testi yapılıyor mu?",{"type":23,"tag":1759,"props":1807,"children":1809},{"className":1808},[1762],[1810,1813],{"type":23,"tag":1765,"props":1811,"children":1812},{"disabled":335,"type":1767},[],{"type":28,"value":1814}," Standby replikasyon gecikmesi izleniyor mu?",{"type":23,"tag":1759,"props":1816,"children":1818},{"className":1817},[1762],[1819,1822],{"type":23,"tag":1765,"props":1820,"children":1821},{"disabled":335,"type":1767},[],{"type":28,"value":1823}," Failover prosedürü test edildi mi?",{"type":23,"tag":175,"props":1825,"children":1826},{},[],{"type":23,"tag":24,"props":1828,"children":1829},{},[1830,1832,1839],{"type":28,"value":1831},"PostgreSQL yedekleme altyapısı kurulumu, mevcut yapının PITR'a geçişi veya replikasyon sorunlarınız için ",{"type":23,"tag":1833,"props":1834,"children":1836},"a",{"href":1835},"\u002Filetisim",[1837],{"type":28,"value":1838},"teknik görüşme talep edebilirsiniz",{"type":28,"value":1840},".",{"type":23,"tag":1842,"props":1843,"children":1844},"style",{},[1845],{"type":28,"value":1846},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":213,"depth":213,"links":1848},[1849,1850,1854,1858,1864,1865],{"id":38,"depth":213,"text":41},{"id":180,"depth":213,"text":183,"children":1851},[1852,1853],{"id":488,"depth":228,"text":491},{"id":570,"depth":228,"text":573},{"id":735,"depth":213,"text":738,"children":1855},[1856,1857],{"id":753,"depth":228,"text":756},{"id":865,"depth":228,"text":868},{"id":1072,"depth":213,"text":1075,"children":1859},[1860,1861,1862,1863],{"id":1083,"depth":228,"text":1086},{"id":1154,"depth":228,"text":1157},{"id":1349,"depth":228,"text":1352},{"id":1522,"depth":228,"text":1525},{"id":1609,"depth":213,"text":1612},{"id":1743,"depth":213,"text":1746},"markdown","content:blog:postgresql-yedekleme-streaming-replication-wal.md","content","blog\u002Fpostgresql-yedekleme-streaming-replication-wal.md","blog\u002Fpostgresql-yedekleme-streaming-replication-wal","md",1781618406787]