{"id":4709,"date":"2026-06-14T19:31:06","date_gmt":"2026-06-14T19:31:06","guid":{"rendered":"https:\/\/cloudsave.app\/?p=4709"},"modified":"2026-06-15T15:37:31","modified_gmt":"2026-06-15T15:37:31","slug":"sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz","status":"publish","type":"post","link":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/","title":{"rendered":"Sessiz Katil: Felaket Gelmeden \u00d6nce Bozuk Veritaban\u0131 Yedeklerini Nas\u0131l Tespit Edersiniz"},"content":{"rendered":"<p>Veritaban\u0131 y\u00f6netimi ve site g\u00fcvenilirli\u011fi m\u00fchendisli\u011finin y\u00fcksek riskli d\u00fcnyas\u0131nda, iyi bilinen bir aksiyom vard\u0131r: <em>Schr\u00f6dinger\u2019in Yede\u011fi<\/em>. Herhangi bir yede\u011fin durumu, onu geri y\u00fcklemeye \u00e7al\u0131\u015fana kadar bilinmez. O ana kadar, hem m\u00fckemmel \u015fekilde \u00e7al\u0131\u015f\u0131r durumda hem de tamamen bozulmu\u015f olma kuantum durumunda var olur.<\/p>\n<p>DevOps m\u00fchendisleri ve veritaban\u0131 y\u00f6neticileri (DBA&#8217;lar) i\u00e7in, aktif bir olay s\u0131ras\u0131nda kritik bir veritaban\u0131 yede\u011finin bozuk oldu\u011funu ke\u015ffetmek, en b\u00fcy\u00fck kabus senaryosudur. Bu durum, rutin bir kurtarma i\u015flemini felaketle sonu\u00e7lanan bir veri kayb\u0131 olay\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fcn bu &#8220;sessiz katili&#8221;, yedekleme i\u015fleri temel y\u00fck (payload) tehlikeye girmi\u015f olsa bile s\u0131kl\u0131kla ba\u015far\u0131l\u0131 bir <code>Exit Code 0<\/code> raporlad\u0131\u011f\u0131 i\u00e7in genellikle fark edilmez.<\/p>\n<p>Bu kapsaml\u0131 rehberde, yedekleme bozulmas\u0131n\u0131n anatomisini inceleyecek, veritaban\u0131na \u00f6zg\u00fc do\u011frulama tekniklerini ke\u015ffedecek ve \u00fcretim ortamlar\u0131 i\u00e7in otomatik, kur\u015fun ge\u00e7irmez geri y\u00fckleme hatlar\u0131n\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 g\u00f6sterece\u011fiz.<\/p>\n<h2>Yedekleme Bozulmas\u0131n\u0131n Anatomisi<\/h2>\n<p>Bozulmay\u0131 tespit etmek i\u00e7in \u00f6nce nas\u0131l meydana geldi\u011fini anlaman\u0131z gerekir. Yedekleme bozulmas\u0131 genellikle iki kategoriye ayr\u0131l\u0131r: fiziksel (altyap\u0131 d\u00fczeyi) ve mant\u0131ksal (uygulama d\u00fczeyi).<\/p>\n<h3>Fiziksel Bozulma<\/h3>\n<p>Fiziksel bozulma, depolama ortam\u0131ndaki ger\u00e7ek bitler de\u011fi\u015fti\u011finde meydana gelir. Bu, kaynak diskten okuma i\u015flemi s\u0131ras\u0131nda, a\u011f \u00fczerinden iletim s\u0131ras\u0131nda veya hedef depolama alan\u0131nda hareketsiz dururken ger\u00e7ekle\u015febilir.<br \/>\n*   <strong>Bit \u00c7\u00fcr\u00fcmesi (Bit Rot):<\/strong> Depolama ortam\u0131n\u0131n kademeli olarak bozulmas\u0131, bitleri sessizce tersine \u00e7evirebilir.<br \/>\n*   <strong>\u0130letim Hatalar\u0131:<\/strong> TCP&#8217;nin sa\u011flama toplamlar\u0131 (checksum) olsa da, bunlar\u0131n olduk\u00e7a zay\u0131f (16-bit) oldu\u011fu bilinmektedir. Y\u00fcksek verimli ortamlar, TCP&#8217;nin yakalayamad\u0131\u011f\u0131 sessiz veri bozulmalar\u0131n\u0131 kablo \u00fczerinde ya\u015fayabilir.<br \/>\n*   <strong>Depolama Denetleyicisi Hatalar\u0131:<\/strong> RAID denetleyicilerindeki veya SAN yap\u0131lar\u0131ndaki donan\u0131m hatalar\u0131, i\u015fletim sistemine ba\u015far\u0131 raporu verirken \u00e7\u00f6p veri yazabilir.<\/p>\n<h3>Mant\u0131ksal Bozulma<\/h3>\n<p>Mant\u0131ksal bozulma, yedekleme dosyas\u0131n\u0131n kendisi tamamen sa\u011flam olmas\u0131na ra\u011fmen i\u00e7indeki verilerin bozuk olmas\u0131 nedeniyle muhtemelen daha tehlikelidir.<br \/>\n*   <strong>\u00c7\u00f6p Girer, \u00c7\u00f6p \u00c7\u0131kar (GIGO):<\/strong> Canl\u0131 veritaban\u0131n\u0131zda bozuk bir dizin veya y\u0131rt\u0131k bir sayfa varsa, yedekleme arac\u0131n\u0131z bu bozuk sayfay\u0131 sadakatle kopyalayabilir. Yedekleme i\u015fi ba\u015far\u0131l\u0131 olur, ancak geri y\u00fckleme ba\u015far\u0131s\u0131z olur veya bozuk bir veritaban\u0131 ortaya \u00e7\u0131kar.<br \/>\n*   <strong>Tamamlanmam\u0131\u015f \u0130\u015flemler:<\/strong> Veritaban\u0131 G\/\u00c7&#8217;sini d\u00fczg\u00fcn bir \u015fekilde dondurmadan (\u00f6rne\u011fin, MySQL&#8217;de <code>FLUSH TABLES WITH READ LOCK<\/code> kullanmadan) al\u0131nan dosya sistemi d\u00fczeyindeki anl\u0131k g\u00f6r\u00fcnt\u00fcler, y\u0131rt\u0131k sayfalara ve kurtar\u0131lamaz durumlara neden olur.<\/p>\n<h2>Proaktif Tespit: Sa\u011flama Toplamlar\u0131 ve Kriptografik Hashing<\/h2>\n<p>Fiziksel bozulmaya kar\u015f\u0131 ilk savunma hatt\u0131 kriptografik do\u011frulamad\u0131r. Dosya boyutlar\u0131na veya de\u011fi\u015ftirilme tarihlerine g\u00fcvenmek yetersizdir.<\/p>\n<h3>Veritaban\u0131 D\u00fczeyinde Sa\u011flama Toplamlar\u0131n\u0131 Etkinle\u015ftirme<\/h3>\n<p>Modern ili\u015fkisel veritaban\u0131 y\u00f6netim sistemleri (RDBMS), sayfa d\u00fczeyinde sa\u011flama toplamlar\u0131n\u0131 destekler. Etkinle\u015ftirildi\u011finde, veritaban\u0131 her sayfay\u0131 diske yazmadan \u00f6nce bir sa\u011flama toplam\u0131 hesaplar. Sayfa okundu\u011funda (bir sorgu veya yedekleme i\u015flemi taraf\u0131ndan), sa\u011flama toplam\u0131 do\u011frulan\u0131r.<\/p>\n<p><strong>PostgreSQL<\/strong> i\u00e7in, k\u00fcme ba\u015flatma s\u0131ras\u0131nda veri sa\u011flama toplamlar\u0131n\u0131 etkinle\u015ftirebilirsiniz:<\/p>\n<pre><code class=\"language-bash\"># Sa\u011flama toplamlar\u0131 etkinle\u015ftirilmi\u015f yeni bir PostgreSQL k\u00fcmesi ba\u015flat\u0131n\ninitdb --data-checksums -D \/var\/lib\/postgresql\/data\n<\/code><\/pre>\n<p><em>Not: Mevcut bir PostgreSQL k\u00fcmeniz varsa, bunlar\u0131 \u00e7evrimd\u0131\u015f\u0131 olarak etkinle\u015ftirmek i\u00e7in <code>pg_checksums<\/code> yard\u0131mc\u0131 program\u0131n\u0131 kullanabilirsiniz.<\/em><\/p>\n<p><strong>Microsoft SQL Server<\/strong> i\u00e7in, <code>PAGE_VERIFY<\/code> ayar\u0131n\u0131n <code>CHECKSUM<\/code> olarak ayarland\u0131\u011f\u0131ndan emin olun (modern s\u00fcr\u00fcmlerde varsay\u0131land\u0131r, ancak eski sistemlerde do\u011frulamaya de\u011fer):<\/p>\n<pre><code class=\"language-sql\">ALTER DATABASE [ProductionDB] SET PAGE_VERIFY CHECKSUM;\nGO\n<\/code><\/pre>\n<h3>Yedeklerin Hareketsiz Halde Do\u011frulanmas\u0131<\/h3>\n<p>Yedekleme depolama hedefinize ula\u015ft\u0131\u011f\u0131nda, b\u00fct\u00fcnl\u00fc\u011f\u00fc kriptografik olarak do\u011frulanmal\u0131d\u0131r. CloudSave gibi kurumsal yedekleme platformlar\u0131, iletim s\u0131ras\u0131nda ve hareketsiz haldeyken yedekleme bloklar\u0131n\u0131n SHA-256 hash&#8217;lerini otomatik olarak hesaplar ve do\u011frular. \u00d6zel komut dosyalar\u0131n\u0131 y\u00f6netiyorsan\u0131z, bunu manuel olarak uygulaman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\"># Yedekleme olu\u015fturulduktan sonra SHA-256 hash'i olu\u015fturun\nsha256sum prod_db_backup.tar.gz &gt; prod_db_backup.tar.gz.sha256\n\n# Depolama sunucusundaki hash'i do\u011frulay\u0131n\nsha256sum -c prod_db_backup.tar.gz.sha256\n<\/code><\/pre>\n<h2>Veritaban\u0131na \u00d6zg\u00fc Do\u011frulama Teknikleri<\/h2>\n<p>Farkl\u0131 veritaban\u0131 motorlar\u0131, yedekleme yap\u0131lar\u0131n\u0131n b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc do\u011frulamak i\u00e7in yerel ara\u00e7lar sunar.<\/p>\n<h3>PostgreSQL: <code>pg_verifybackup<\/code><\/h3>\n<p>PostgreSQL 13 ile tan\u0131t\u0131lan <code>pg_verifybackup<\/code>, <code>pg_basebackup<\/code> ile al\u0131nan fiziksel yedeklemeler i\u00e7in oyunun kurallar\u0131n\u0131 de\u011fi\u015ftiren bir ara\u00e7t\u0131r. Yedekleme s\u0131ras\u0131nda olu\u015fturulan <code>backup_manifest<\/code> dosyas\u0131n\u0131 okur ve t\u00fcm dosyalar\u0131n mevcut oldu\u011funu ve sa\u011flama toplamlar\u0131n\u0131n e\u015fle\u015fti\u011fini do\u011frular.<\/p>\n<pre><code class=\"language-bash\"># Fiziksel bir temel yedekleme dizinine kar\u015f\u0131 do\u011frulama \u00e7al\u0131\u015ft\u0131r\u0131n\npg_verifybackup \/mnt\/backups\/postgres\/base_backup_20231025\/\n<\/code><\/pre>\n<p>Veri dosyalar\u0131ndan herhangi birinde tek bir bit bile de\u011fi\u015fmi\u015fse, <code>pg_verifybackup<\/code> \u00f6l\u00fcmc\u00fcl bir hata verecek ve izleme sistemlerinizin DBA ekibini an\u0131nda uyarmas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>Microsoft SQL Server: <code>RESTORE VERIFYONLY<\/code><\/h3>\n<p>SQL Server, bir yedekleme dosyas\u0131n\u0131 ger\u00e7ekten geri y\u00fcklemeden fiziksel b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc do\u011frulamak i\u00e7in yerel bir komut sa\u011flar. Yedekleme ba\u015fl\u0131klar\u0131n\u0131 kontrol eder ve sayfa sa\u011flama toplamlar\u0131n\u0131 (yedekleme s\u0131ras\u0131nda etkinle\u015ftirilmi\u015flerse) do\u011frular.<\/p>\n<pre><code class=\"language-sql\">RESTORE VERIFYONLY \nFROM DISK = 'Z:BackupsProdDB_Full.bak' \nWITH CHECKSUM;\n<\/code><\/pre>\n<p><strong>Uyar\u0131:<\/strong> <code>RESTORE VERIFYONLY<\/code> yaln\u0131zca yedekleme dosyas\u0131n\u0131n okunabilir oldu\u011funu ve fiziksel sa\u011flama toplamlar\u0131n\u0131n e\u015fle\u015fti\u011fini onaylar. Mant\u0131ksal b\u00fct\u00fcnl\u00fc\u011f\u00fc <em>garanti etmez<\/em>. Mant\u0131ksal b\u00fct\u00fcnl\u00fc\u011f\u00fc sa\u011flamak i\u00e7in tam bir geri y\u00fckleme yapmal\u0131 ve <code>DBCC CHECKDB<\/code> \u00e7al\u0131\u015ft\u0131rmal\u0131s\u0131n\u0131z.<\/p>\n<h3>MySQL \/ InnoDB: Percona XtraBackup<\/h3>\n<p>MySQL ortamlar\u0131 i\u00e7in fiziksel yedeklemeler genellikle Percona XtraBackup taraf\u0131ndan ger\u00e7ekle\u015ftirilir. Yedekleme i\u015flemi dosyalar\u0131n kopyalanmas\u0131ndan olu\u015fur, ancak i\u015flem g\u00fcnl\u00fckleri (redo logs) uygulanana kadar yedekleme tutarl\u0131 de\u011fildir. <code>--prepare<\/code> a\u015famas\u0131, yerle\u015fik bir b\u00fct\u00fcnl\u00fck kontrol\u00fc g\u00f6revi g\u00f6r\u00fcr.<\/p>\n<pre><code class=\"language-bash\"># Yede\u011fi haz\u0131rlamak redo log'lar\u0131n\u0131 uygular. \n# Yedek bozuksa, bu ad\u0131m ba\u015far\u0131s\u0131z olur.\nxtrabackup --prepare --target-dir=\/data\/backups\/mysql\/\n<\/code><\/pre>\n<h2>Alt\u0131n Standart: Otomatik Geri Y\u00fckleme Testi<\/h2>\n<p>Sa\u011flama toplamlar\u0131 ve do\u011frulama komutlar\u0131 gereklidir, ancak yeterli de\u011fildir. Bir yede\u011fin ge\u00e7erli oldu\u011funu kesin olarak kan\u0131tlaman\u0131n tek yolu onu geri y\u00fcklemektir. Modern DevOps ortamlar\u0131nda bu s\u00fcre\u00e7 tamamen otomatikle\u015ftirilmelidir.<\/p>\n<p>Yedekleri kod olarak ele alarak, veritaban\u0131 geri y\u00fcklemeleriniz i\u00e7in bir CI\/CD hatt\u0131 olu\u015fturabilirsiniz. Bu hat, ge\u00e7ici altyap\u0131 sa\u011flamal\u0131, geri y\u00fcklemeyi y\u00fcr\u00fctmeli, do\u011frulama sorgular\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmal\u0131 ve ortam\u0131 temizlemelidir.<\/p>\n<h3>Otomatik Geri Y\u00fckleme Hatt\u0131 Olu\u015fturma<\/h3>\n<p>A\u015fa\u011f\u0131da, bir PostgreSQL mant\u0131ksal d\u00f6k\u00fcm\u00fcn\u00fc do\u011frulamak i\u00e7in cron i\u015fi veya bir CI \u00e7al\u0131\u015ft\u0131r\u0131c\u0131s\u0131 (GitLab CI veya GitHub Actions gibi) taraf\u0131ndan g\u00fcnl\u00fck olarak tetiklenebilecek bir Bash beti\u011fi \u00f6rne\u011fi bulunmaktad\u0131r.<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\nset -e\n\nBACKUP_FILE=&quot;\/mnt\/storage\/prod_db_latest.dump&quot;\nDB_NAME=&quot;prod_db&quot;\nCONTAINER_NAME=&quot;pg_restore_test&quot;\n\necho &quot;[INFO] Otomatik Geri Y\u00fckleme Testi Ba\u015flat\u0131l\u0131yor...&quot;\n\n# 1. Ge\u00e7ici bir PostgreSQL konteyneri \u00e7al\u0131\u015ft\u0131r\u0131n\ndocker run --name $CONTAINER_NAME \n  -e POSTGRES_PASSWORD=testpass \n  -d postgres:15\n\n# PostgreSQL'in haz\u0131r olmas\u0131n\u0131 bekleyin\necho &quot;[INFO] Veritaban\u0131n\u0131n ba\u015flat\u0131lmas\u0131 bekleniyor...&quot;\nuntil docker exec $CONTAINER_NAME pg_isready -U postgres; do\n  sleep 2\ndone\n\n# 2. Hedef veritaban\u0131n\u0131 olu\u015fturun\ndocker exec $CONTAINER_NAME psql -U postgres -c &quot;CREATE DATABASE $DB_NAME;&quot;\n\n# 3. Geri y\u00fcklemeyi ger\u00e7ekle\u015ftirin\necho &quot;[INFO] Yedek geri y\u00fckleniyor...&quot;\ndocker cp $BACKUP_FILE $CONTAINER_NAME:\/tmp\/backup.dump\ndocker exec $CONTAINER_NAME pg_restore -U postgres -d $DB_NAME -1 \/tmp\/backup.dump\n\n# 4. Mant\u0131ksal Do\u011frulama Sorgular\u0131n\u0131 \u00c7al\u0131\u015ft\u0131r\u0131n\necho &quot;[INFO] Do\u011frulama sorgular\u0131 \u00e7al\u0131\u015ft\u0131r\u0131l\u0131yor...&quot;\n# Kullan\u0131c\u0131lar tablosunda 10.000'den fazla kay\u0131t olup olmad\u0131\u011f\u0131n\u0131 kontrol edin\nUSER_COUNT=$(docker exec $CONTAINER_NAME psql -U postgres -d $DB_NAME -t -c &quot;SELECT COUNT(*) FROM users;&quot;)\n\nif [ &quot;$USER_COUNT&quot; -lt 10000 ]; then\n    echo &quot;[ERROR] Mant\u0131ksal do\u011frulama ba\u015far\u0131s\u0131z oldu. Beklenen &gt;10000 kullan\u0131c\u0131, bulunan $USER_COUNT&quot;\n    # Buradan PagerDuty \/ Slack uyar\u0131s\u0131 tetikleyin\n    exit 1\nelse\n    echo &quot;[SUCCESS] Mant\u0131ksal do\u011frulama ba\u015far\u0131l\u0131. Kullan\u0131c\u0131 say\u0131s\u0131: $USER_COUNT&quot;\nfi\n\n# 5. Ge\u00e7ici ortam\u0131 temizleyin\necho &quot;[INFO] Temizlik yap\u0131l\u0131yor...&quot;\ndocker rm -f $CONTAINER_NAME\n\necho &quot;[INFO] Otomatik Geri Y\u00fckleme Testi Ba\u015far\u0131yla Tamamland\u0131.&quot;\n<\/code><\/pre>\n<h3>Neleri Do\u011frulamal\u0131s\u0131n\u0131z?<\/h3>\n<p>Otomatik geri y\u00fckleme testi yaparken, sadece veritaban\u0131n\u0131n ba\u015flay\u0131p ba\u015flamad\u0131\u011f\u0131n\u0131 kontrol etmeyin. Uygulamaya \u00f6zel do\u011frulama sorgular\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<br \/>\n1.  <strong>Sat\u0131r Say\u0131lar\u0131:<\/strong> Temel tablolar\u0131n beklenen sat\u0131r say\u0131lar\u0131na sahip oldu\u011fundan emin olun (\u00f6rne\u011fin, <code>users<\/code> tablosu bo\u015f olmamal\u0131d\u0131r).<br \/>\n2.  <strong>G\u00fcncel Veriler:<\/strong> Yede\u011fin eski olmad\u0131\u011f\u0131ndan emin olmak i\u00e7in son 24 saat i\u00e7inde olu\u015fturulan kay\u0131tlar\u0131 sorgulay\u0131n.<br \/>\n3.  <strong>Referans B\u00fct\u00fcnl\u00fc\u011f\u00fc:<\/strong> Mant\u0131ksal bozulmay\u0131 g\u00f6steren yetim yabanc\u0131 anahtarlar\u0131 (orphaned foreign keys) kontrol etmek i\u00e7in betikler \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n<h2>Yedekleme Anomalileri \u0130\u00e7in \u0130zleme ve Uyar\u0131<\/h2>\n<p>Felaket ger\u00e7ekle\u015fmeden \u00f6nce bozulmay\u0131 tespit etmek, g\u00fc\u00e7l\u00fc bir g\u00f6zlemlenebilirlik gerektirir. \u0130kili ba\u015far\u0131\/ba\u015far\u0131s\u0131zl\u0131k durumlar\u0131n\u0131n \u00f6tesinde, anomalileri tespit etmek i\u00e7in yedekleme i\u015flerinizin meta verilerini izlemelisiniz.<\/p>\n<h3>Sezgisel \u0130zleme<\/h3>\n<p>Yedekleme meta verilerinizi Prometheus&#8217;a entegre edin ve Grafana ile g\u00f6rselle\u015ftirin. A\u015fa\u011f\u0131daki sezgisel y\u00f6ntemler i\u00e7in uyar\u0131lar ayarlay\u0131n:<br \/>\n*   <strong>Ani Boyut D\u00fc\u015f\u00fc\u015fleri:<\/strong> G\u00fcnl\u00fck yede\u011finiz s\u00fcrekli 500GB ise ve bug\u00fcnk\u00fc yedek 50MB ise, i\u015f ba\u015far\u0131yla tamamlanm\u0131\u015f olabilir (Exit Code 0), ancak muhtemelen bo\u015f bir \u015femay\u0131 yedeklemi\u015ftir.<br \/>\n*   <strong>S\u00fcre Anomalileri:<\/strong> Normalde 2 saat s\u00fcren bir yedekleme 5 dakikada biterse, bir \u015feyler atlanm\u0131\u015f demektir. Tersine, 10 saat s\u00fcrerse, bozulmaya yol a\u00e7abilecek disk G\/\u00c7 bozulmas\u0131 ya\u015f\u0131yor olabilirsiniz.<br \/>\n*   <strong>WAL\/Ar\u015fiv G\u00fcnl\u00fc\u011f\u00fc Birikimi:<\/strong> Veritaban\u0131n\u0131z Yazma \u00d6ncesi G\u00fcnl\u00fckler (WAL) olu\u015fturuyor ancak yedekleme sistemi bunlar\u0131 yeterince h\u0131zl\u0131 ar\u015fivlemiyorsa, Noktasal Kurtarma (PITR) zincirinizde bir bo\u015fluk riskiyle kar\u015f\u0131 kar\u015f\u0131ya kal\u0131rs\u0131n\u0131z.<\/p>\n<h2>B\u00fct\u00fcnl\u00fck Kontrolleri ile 3-2-1 Kural\u0131n\u0131 Uygulama<\/h2>\n<p>End\u00fcstri standard\u0131 olan 3-2-1 yedekleme kural\u0131 (3 kopya veri, 2 farkl\u0131 ortam, 1 kurum d\u0131\u015f\u0131), yaln\u0131zca t\u00fcm kopyalar do\u011fruland\u0131\u011f\u0131nda etkilidir.<\/p>\n<p>CloudSave gibi kurumsal bir \u00e7\u00f6z\u00fcmden yararlanmak, operasyonel y\u00fck\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. Her veritaban\u0131 d\u00fc\u011f\u00fcm\u00fc i\u00e7in karma\u015f\u0131k bash betikleri yazmak ve s\u00fcrd\u00fcrmek yerine, CloudSave 3-2-1 ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc otomatikle\u015ftirmek i\u00e7in do\u011frudan altyap\u0131n\u0131zla entegre olur. Fidye yaz\u0131l\u0131mlar\u0131na kar\u015f\u0131 koruma sa\u011flayan de\u011fi\u015ftirilemez (immutable) depolama sunar ve yerle\u015fik, otomatik geri y\u00fckleme do\u011frulama programlar\u0131na sahiptir. CloudSave, izole edilmi\u015f sanal alan ortamlar\u0131n\u0131 otomatik olarak ba\u015flatabilir, yede\u011fi ba\u011flayabilir, \u00f6zel SQL do\u011frulama betiklerinizi \u00e7al\u0131\u015ft\u0131rabilir ve sa\u011fl\u0131k durumunu merkezi panonuza geri bildirebilir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Bozuk veritaban\u0131 yedekleri, i\u015fletmeleri yok edebilecek sessiz bir katildir. Sadece bir yedekleme beti\u011finin <code>Exit Code 0<\/code> de\u011ferine g\u00fcvenmek tehlikeli bir kumard\u0131r.<br \/>\n\u00dcretim ortamlar\u0131n\u0131z\u0131 ger\u00e7ekten korumak i\u00e7in derinlemesine bir savunma stratejisi benimsemelisiniz:<br \/>\n1.  Veritaban\u0131 motorunuzda sayfa d\u00fczeyinde sa\u011flama toplamlar\u0131n\u0131 etkinle\u015ftirin.<br \/>\n2.  Yedekleme olu\u015fturulduktan hemen sonra yerel do\u011frulama ara\u00e7lar\u0131n\u0131 (<code>pg_verifybackup<\/code>, <code>RESTORE VERIFYONLY<\/code>) kullan\u0131n.<br \/>\n3.  Yedekleme meta verilerini (boyut, s\u00fcre) sezgisel anomaliler i\u00e7in izleyin.<br \/>\n4.  G\u00fcnl\u00fck operasyonel hatt\u0131n\u0131z\u0131n bir par\u00e7as\u0131 olarak otomatik, ge\u00e7ici geri y\u00fckleme testini uygulay\u0131n.<\/p>\n<p>Pasif bir &#8220;kur ve unut&#8221; yedekleme zihniyetinden aktif bir &#8220;s\u00fcrekli geri y\u00fckleme do\u011frulamas\u0131&#8221; modeline ge\u00e7erek, felaket ka\u00e7\u0131n\u0131lmaz olarak ger\u00e7ekle\u015fti\u011finde verilerinizin haz\u0131r, g\u00fcvenilir ve tamamen kurtar\u0131labilir oldu\u011fundan emin olursunuz.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>** Discover how DevOps engineers and DBAs can detect corrupted database backups before disaster strikes. Learn advanced techniques for PostgreSQL, SQL Server, and MySQL, including automated restore testing and checksum validation.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Detect Corrupted Database Backups Before Disaster","rank_math_description":"** Discover how DevOps engineers and DBAs can detect corrupted database backups before disaster strikes. Learn advanced techniques for PostgreSQL, SQL Server, and MySQL, including automated restore testing and checksum validation.","rank_math_focus_keyword":"corrupted database backups","footnotes":""},"categories":[735],"tags":[3498,3499,3500,736,1200,2437,3501],"class_list":["post-4709","post","type-post","status-publish","format-standard","hentry","category-database-backup","tag-backup-testing","tag-corrupted-backups","tag-data-integrity","tag-data-loss-prevention","tag-database-administration","tag-devops","tag-restore-testing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.7 (Yoast SEO v27.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Detect Corrupted Database Backups Before Disaster<\/title>\n<meta name=\"description\" content=\"** Discover how DevOps engineers and DBAs can detect corrupted database backups before disaster strikes. Learn advanced techniques for PostgreSQL, SQL Server, and MySQL, including automated restore testing and checksum validation.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sessiz Katil: Felaket Gelmeden \u00d6nce Bozuk Veritaban\u0131 Yedeklerini Nas\u0131l Tespit Edersiniz\" \/>\n<meta property=\"og:description\" content=\"** Discover how DevOps engineers and DBAs can detect corrupted database backups before disaster strikes. Learn advanced techniques for PostgreSQL, SQL Server, and MySQL, including automated restore testing and checksum validation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/\" \/>\n<meta property=\"og:site_name\" content=\"CloudSave\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-14T19:31:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-15T15:37:31+00:00\" \/>\n<meta name=\"author\" content=\"shervinrv\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"shervinrv\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/knowledge-base\\\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/knowledge-base\\\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\\\/\"},\"author\":{\"name\":\"shervinrv\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\"},\"headline\":\"Sessiz Katil: Felaket Gelmeden \u00d6nce Bozuk Veritaban\u0131 Yedeklerini Nas\u0131l Tespit Edersiniz\",\"datePublished\":\"2026-06-14T19:31:06+00:00\",\"dateModified\":\"2026-06-15T15:37:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/knowledge-base\\\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\\\/\"},\"wordCount\":1631,\"publisher\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\"},\"keywords\":[\"backup testing\",\"corrupted backups\",\"data integrity\",\"data loss prevention\",\"Database Administration\",\"devops\",\"restore testing\"],\"articleSection\":[\"Database Backup\"],\"inLanguage\":\"tr\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/knowledge-base\\\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\\\/\",\"url\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/knowledge-base\\\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\\\/\",\"name\":\"Detect Corrupted Database Backups Before Disaster\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/#website\"},\"datePublished\":\"2026-06-14T19:31:06+00:00\",\"dateModified\":\"2026-06-15T15:37:31+00:00\",\"description\":\"** Discover how DevOps engineers and DBAs can detect corrupted database backups before disaster strikes. Learn advanced techniques for PostgreSQL, SQL Server, and MySQL, including automated restore testing and checksum validation.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/knowledge-base\\\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cloudsave.app\\\/tr\\\/knowledge-base\\\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/knowledge-base\\\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sessiz Katil: Felaket Gelmeden \u00d6nce Bozuk Veritaban\u0131 Yedeklerini Nas\u0131l Tespit Edersiniz\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/#website\",\"url\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/\",\"name\":\"CloudSave\",\"description\":\"CloudSave\",\"publisher\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\",\"name\":\"shervinrv\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\",\"url\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\",\"contentUrl\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\",\"width\":859,\"height\":150,\"caption\":\"shervinrv\"},\"logo\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\"},\"sameAs\":[\"http:\\\/\\\/cloudsave.app\"],\"url\":\"https:\\\/\\\/cloudsave.app\\\/tr\\\/knowledge-base\\\/author\\\/shervinrv\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Detect Corrupted Database Backups Before Disaster","description":"** Discover how DevOps engineers and DBAs can detect corrupted database backups before disaster strikes. Learn advanced techniques for PostgreSQL, SQL Server, and MySQL, including automated restore testing and checksum validation.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/","og_locale":"tr_TR","og_type":"article","og_title":"Sessiz Katil: Felaket Gelmeden \u00d6nce Bozuk Veritaban\u0131 Yedeklerini Nas\u0131l Tespit Edersiniz","og_description":"** Discover how DevOps engineers and DBAs can detect corrupted database backups before disaster strikes. Learn advanced techniques for PostgreSQL, SQL Server, and MySQL, including automated restore testing and checksum validation.","og_url":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/","og_site_name":"CloudSave","article_published_time":"2026-06-14T19:31:06+00:00","article_modified_time":"2026-06-15T15:37:31+00:00","author":"shervinrv","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"shervinrv","Tahmini okuma s\u00fcresi":"10 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/#article","isPartOf":{"@id":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/"},"author":{"name":"shervinrv","@id":"https:\/\/cloudsave.app\/tr\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d"},"headline":"Sessiz Katil: Felaket Gelmeden \u00d6nce Bozuk Veritaban\u0131 Yedeklerini Nas\u0131l Tespit Edersiniz","datePublished":"2026-06-14T19:31:06+00:00","dateModified":"2026-06-15T15:37:31+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/"},"wordCount":1631,"publisher":{"@id":"https:\/\/cloudsave.app\/tr\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d"},"keywords":["backup testing","corrupted backups","data integrity","data loss prevention","Database Administration","devops","restore testing"],"articleSection":["Database Backup"],"inLanguage":"tr"},{"@type":"WebPage","@id":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/","url":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/","name":"Detect Corrupted Database Backups Before Disaster","isPartOf":{"@id":"https:\/\/cloudsave.app\/tr\/#website"},"datePublished":"2026-06-14T19:31:06+00:00","dateModified":"2026-06-15T15:37:31+00:00","description":"** Discover how DevOps engineers and DBAs can detect corrupted database backups before disaster strikes. Learn advanced techniques for PostgreSQL, SQL Server, and MySQL, including automated restore testing and checksum validation.","breadcrumb":{"@id":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/cloudsave.app\/tr\/knowledge-base\/sessiz-katil-felaket-gelmeden-%c3%b6nce-bozuk-veritaban%c4%b1-yedeklerini-nas%c4%b1l-tespit-edersiniz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudsave.app\/tr\/"},{"@type":"ListItem","position":2,"name":"Sessiz Katil: Felaket Gelmeden \u00d6nce Bozuk Veritaban\u0131 Yedeklerini Nas\u0131l Tespit Edersiniz"}]},{"@type":"WebSite","@id":"https:\/\/cloudsave.app\/tr\/#website","url":"https:\/\/cloudsave.app\/tr\/","name":"CloudSave","description":"CloudSave","publisher":{"@id":"https:\/\/cloudsave.app\/tr\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudsave.app\/tr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/cloudsave.app\/tr\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d","name":"shervinrv","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png","url":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png","contentUrl":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png","width":859,"height":150,"caption":"shervinrv"},"logo":{"@id":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png"},"sameAs":["http:\/\/cloudsave.app"],"url":"https:\/\/cloudsave.app\/tr\/knowledge-base\/author\/shervinrv\/"}]}},"_links":{"self":[{"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/posts\/4709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/comments?post=4709"}],"version-history":[{"count":2,"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/posts\/4709\/revisions"}],"predecessor-version":[{"id":5775,"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/posts\/4709\/revisions\/5775"}],"wp:attachment":[{"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/media?parent=4709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/categories?post=4709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudsave.app\/tr\/wp-json\/wp\/v2\/tags?post=4709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}