{"id":1540,"date":"2025-11-08T17:36:38","date_gmt":"2025-11-08T14:36:38","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/mysqlde-sifir-kesinti-sema-degisiklikleri-gh-ost-ve-pt-online-schema-change-ile-blue-green-nasil-kurulur\/"},"modified":"2025-11-08T17:36:38","modified_gmt":"2025-11-08T14:36:38","slug":"mysqlde-sifir-kesinti-sema-degisiklikleri-gh-ost-ve-pt-online-schema-change-ile-blue-green-nasil-kurulur","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/mysqlde-sifir-kesinti-sema-degisiklikleri-gh-ost-ve-pt-online-schema-change-ile-blue-green-nasil-kurulur\/","title":{"rendered":"MySQL\u2019de S\u0131f\u0131r Kesinti \u015eema De\u011fi\u015fiklikleri: gh-ost ve pt-online-schema-change ile Blue\/Green Nas\u0131l Kurulur?"},"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=\"#Hic_tablo_degistirirken_terlediginiz_oldu_mu\"><span class=\"toc_number toc_depth_1\">1<\/span> Hi\u00e7 tablo de\u011fi\u015ftirirken terledi\u011finiz oldu mu?<\/a><\/li><li><a href=\"#Sema_degisikligi_neden_can_yakar_Kucuk_bir_aynaya_bakis\"><span class=\"toc_number toc_depth_1\">2<\/span> \u015eema de\u011fi\u015fikli\u011fi neden can yakar? K\u00fc\u00e7\u00fck bir aynaya bak\u0131\u015f<\/a><\/li><li><a href=\"#BlueGreen_Degisikligi_guvenli_bir_oyun_alaninda_buyutmek\"><span class=\"toc_number toc_depth_1\">3<\/span> Blue\/Green: De\u011fi\u015fikli\u011fi g\u00fcvenli bir oyun alan\u0131nda b\u00fcy\u00fctmek<\/a><\/li><li><a href=\"#pt-online-schema-change_Tetikleyicilerle_yumusak_dosdogru_adimlar\"><span class=\"toc_number toc_depth_1\">4<\/span> pt-online-schema-change: Tetikleyicilerle yumu\u015fak dosdo\u011fru ad\u0131mlar<\/a><\/li><li><a href=\"#gh-ost_Binlogu_dinleyip_golgeyle_dans_eden_usta\"><span class=\"toc_number toc_depth_1\">5<\/span> gh-ost: Binlog\u2019u dinleyip g\u00f6lgeyle dans eden usta<\/a><\/li><li><a href=\"#Peki_BlueGreen_ile_ikisini_nasil_sahneye_cikaririm\"><span class=\"toc_number toc_depth_1\">6<\/span> Peki Blue\/Green ile ikisini nas\u0131l sahneye \u00e7\u0131kar\u0131r\u0131m?<\/a><\/li><li><a href=\"#Ufak_ama_kritik_pufler_Geri_donus_fren_pedali_ve_nabiz\"><span class=\"toc_number toc_depth_1\">7<\/span> Ufak ama kritik p\u00fcfler: Geri d\u00f6n\u00fc\u015f, fren pedal\u0131 ve nab\u0131z<\/a><\/li><li><a href=\"#Gercek_bir_senaryo_Siparis_tablosuna_sutun_eklerken_tansiyonu_dusurmek\"><span class=\"toc_number toc_depth_1\">8<\/span> Ger\u00e7ek bir senaryo: Sipari\u015f tablosuna s\u00fctun eklerken tansiyonu d\u00fc\u015f\u00fcrmek<\/a><\/li><li><a href=\"#Sik_dusulen_cukurlar_Kucuk_uyarilar_buyuk_rahatlik\"><span class=\"toc_number toc_depth_1\">9<\/span> S\u0131k d\u00fc\u015f\u00fclen \u00e7ukurlar: K\u00fc\u00e7\u00fck uyar\u0131lar b\u00fcy\u00fck rahatl\u0131k<\/a><\/li><li><a href=\"#Gozun_arkada_kalmasin_Dogrulama_ve_gorunurluk\"><span class=\"toc_number toc_depth_1\">10<\/span> G\u00f6z\u00fcn arkada kalmas\u0131n: Do\u011frulama ve g\u00f6r\u00fcn\u00fcrl\u00fck<\/a><\/li><li><a href=\"#Kapanis_Semayi_buyuturken_kalbi_yormamak\"><span class=\"toc_number toc_depth_1\">11<\/span> Kapan\u0131\u015f: \u015eemay\u0131 b\u00fcy\u00fct\u00fcrken kalbi yormamak<\/a><\/li><\/ul><\/div>\n<h2 id=\"section-1\"><span id=\"Hic_tablo_degistirirken_terlediginiz_oldu_mu\">Hi\u00e7 tablo de\u011fi\u015ftirirken terledi\u011finiz oldu mu?<\/span><\/h2>\n<p>Bir \u00f6\u011fle aras\u0131nda, m\u00fc\u015fteri hizmetlerinden gelen bir notla ba\u015flayan o me\u015fhur g\u00fcnlerden biriydi. \u201cSipari\u015f listesinde teslimat zaman\u0131n\u0131 g\u00f6remiyoruz, acil bir s\u00fctun ekleyebilir miyiz?\u201d Basit duruyor, de\u011fil mi? Ben de bir zamanlar \u201cHemen ALTER atal\u0131m, ne olacak ki?\u201d diyenlerdendim. Sonra \u00fcretimde kilitlenen bir tablo, artan yan\u0131t s\u00fcreleri ve telefonla arayan ekip arkada\u015flar\u0131\u2026 \u0130\u015fte o an anlad\u0131m: Veritaban\u0131 \u015fema de\u011fi\u015fikli\u011fi, trafi\u011fin tam ortas\u0131nda \u015ferit de\u011fi\u015ftirmeye benziyor. Aynaya bakmadan olmaz.<\/p>\n<p>Bu yaz\u0131da, <strong>MySQL\u2019de s\u0131f\u0131r kesinti \u015fema de\u011fi\u015fiklikleri<\/strong> i\u00e7in iki sihirli anahtardan bahsedece\u011fim: <strong>pt-online-schema-change<\/strong> ve <strong>gh-ost<\/strong>. \u0130kisini de y\u0131llard\u0131r farkl\u0131 trafik desenlerinde, farkl\u0131 ac\u0131lar \u00e7ekerek deneyimledim. Ayr\u0131ca bu de\u011fi\u015fiklikleri daha g\u00fcvenli hale getiren <strong>Blue\/Green<\/strong> stratejisini ad\u0131m ad\u0131m anlataca\u011f\u0131m. Mesela \u015f\u00f6yle d\u00fc\u015f\u00fcn\u00fcn: Canl\u0131 ortam (Blue) trafi\u011fi al\u0131rken, yeni \u015femay\u0131 Green\u2019de haz\u0131rl\u0131yor, be\u011fenirseniz d\u00fc\u011fmeye bas\u0131p trafi\u011fi oraya kayd\u0131r\u0131yorsunuz. Bu sayede kesinti ya\u015fatmadan, tedirginlik seviyesini d\u00fc\u015f\u00fcrerek ilerliyorsunuz. Haz\u0131rsan\u0131z, yola sakin sakin \u00e7\u0131kal\u0131m.<\/p>\n<h2 id=\"section-2\"><span id=\"Sema_degisikligi_neden_can_yakar_Kucuk_bir_aynaya_bakis\">\u015eema de\u011fi\u015fikli\u011fi neden can yakar? K\u00fc\u00e7\u00fck bir aynaya bak\u0131\u015f<\/span><\/h2>\n<p>MySQL\u2019de klasik bir ALTER, tabloyu anl\u0131k da olsa kilitleyebilir. K\u00fc\u00e7\u00fck bir tabloda g\u00f6z bile k\u0131rpmazs\u0131n\u0131z, ama trafik y\u00fcksekse o tek g\u00f6z k\u0131rpma birden bire sayfalar\u0131n ge\u00e7 gelmesine d\u00f6n\u00fc\u015f\u00fcr. \u00dcstelik i\u015f yaln\u0131zca kilitle de\u011fil; uzun s\u00fcren i\u015flemler, arka planda artan sorgu kuyruklar\u0131 ve uygulama taraf\u0131nda zaman a\u015f\u0131m\u0131 olarak geri d\u00f6ner. Bir de bu i\u015fler genellikle \u201ck\u00fc\u00e7\u00fck bir ekleme\u201d niyetiyle ba\u015flar, sonra geceye sarkar.<\/p>\n<p>Benim i\u00e7in k\u0131r\u0131lma noktas\u0131, \u201cBu i\u015fi trafik akarken nas\u0131l yumu\u015fat\u0131r\u0131z?\u201d sorusu oldu. Cevap, veriyi bir g\u00f6lge tabloda kopyalarken canl\u0131 ak\u0131\u015f\u0131 yak\u0131ndan izlemekten ge\u00e7iyor. <strong>pt-online-schema-change<\/strong> ve <strong>gh-ost<\/strong> tam burada devreye giriyor. Biri tabloya <strong>tetikleyici<\/strong> koyup de\u011fi\u015fen sat\u0131rlar\u0131 yeni tabloya ta\u015f\u0131rken, di\u011feri <strong>binlog<\/strong> ak\u0131\u015f\u0131n\u0131 dinleyerek hareket ediyor. Mekanikler farkl\u0131 ama hedef ayn\u0131: Kullan\u0131c\u0131lar\u0131n fark etmeyece\u011fi kadar sars\u0131nt\u0131s\u0131z bir ge\u00e7i\u015f.<\/p>\n<h2 id=\"section-3\"><span id=\"BlueGreen_Degisikligi_guvenli_bir_oyun_alaninda_buyutmek\">Blue\/Green: De\u011fi\u015fikli\u011fi g\u00fcvenli bir oyun alan\u0131nda b\u00fcy\u00fctmek<\/span><\/h2>\n<p>Blue\/Green\u2019i bir mutfak ve servis benzetmesiyle anlatmay\u0131 seviyorum. Blue, h\u00e2lihaz\u0131rda servis veren mutfak. Green ise yeni men\u00fcy\u00fc haz\u0131rlad\u0131\u011f\u0131n\u0131z test tezgah\u0131. Green\u2019de yeme\u011fi pi\u015firir, tad\u0131na bakar, masalara akacak \u015fekilde son dokunu\u015flar\u0131 yapars\u0131n\u0131z. Sonra tek bir hamleyle servis kap\u0131s\u0131n\u0131 Green\u2019e a\u00e7ars\u0131n\u0131z. MySQL taraf\u0131nda bu, genellikle <strong>ayr\u0131 bir kopyada<\/strong> (replica ya da yeni bir d\u00fc\u011f\u00fcm) \u015femay\u0131 b\u00fcy\u00fctmek, index eklemek, s\u00fctunlar\u0131 d\u00fczenlemek ve veri uyumunu test etmek demek.<\/p>\n<p>Bu yakla\u015f\u0131m\u0131n en sevdi\u011fim yan\u0131, geri d\u00f6n\u00fc\u015f yolunun hep a\u00e7\u0131k olmas\u0131. Bir \u015fey ho\u015funuza gitmezse, Blue orada duruyor. Trafi\u011fi hemen geri al\u0131rs\u0131n\u0131z. B\u00fcy\u00fck de\u011fi\u015fikliklerde ve \u00f6zellikle yo\u011fun saatlerde, bu zihinsel g\u00fcvenlik a\u011f\u0131 ekipteki tansiyonu ciddi d\u00fc\u015f\u00fcr\u00fcyor. Tek dikkat noktas\u0131, Blue ile Green\u2019in veride ayr\u0131\u015fmamas\u0131n\u0131 sa\u011flamak. Bu y\u00fczden replikasyonun sa\u011fl\u0131kl\u0131 oldu\u011fundan emin olman\u0131z, kesim an\u0131nda da h\u0131zl\u0131 bir do\u011frulama yapman\u0131z \u015fart.<\/p>\n<h2 id=\"section-4\"><span id=\"pt-online-schema-change_Tetikleyicilerle_yumusak_dosdogru_adimlar\">pt-online-schema-change: Tetikleyicilerle yumu\u015fak dosdo\u011fru ad\u0131mlar<\/span><\/h2>\n<p>\u0130lk g\u00f6z a\u011fr\u0131lar\u0131mdan biri <strong>pt-online-schema-change<\/strong>. Onu bir veri marangozu gibi d\u00fc\u015f\u00fcnebiliriz: Eski masan\u0131n yan\u0131na yeni bir masa kuruyor, tahtalar\u0131 tek tek ta\u015f\u0131yor, bu s\u0131rada masaya gelen yeni k\u0131r\u0131nt\u0131lar\u0131 da unutmuyor. Nas\u0131l? Tabloya tetikleyiciler ekleyerek, canl\u0131 yaz\u0131lan her \u015feyi yeni tabloya da i\u015fler. Ard\u0131ndan k\u00fc\u00e7\u00fck par\u00e7alara b\u00f6lerek mevcut sat\u0131rlar\u0131 ta\u015f\u0131r. Sonunda \u015f\u0131k bir isim de\u011fi\u015fikli\u011fiyle yeni tabloyu eskisinin yerine koyar.<\/p>\n<p>Komut olarak genellikle \u015fu tatta \u00e7a\u011f\u0131r\u0131yorum. A\u015f\u0131r\u0131 teknik olmadan, hissiyat vermek i\u00e7in bir \u00f6rnek:<\/p>\n<p><code>pt-online-schema-change --alter \"ADD COLUMN delivered_at DATETIME NULL\" D=mydb,t=orders --execute --max-load Threads_running=20 --critical-load Threads_running=50 --chunk-time 0.5 --statistics<\/code><\/p>\n<p>Burada <strong>chunk-time<\/strong> ile ta\u015f\u0131ma h\u0131z\u0131n\u0131 nefes nefese olmayacak \u015fekilde ayarlar, <strong>max-load<\/strong> ile de veritaban\u0131 yoruldu\u011funda frene basmas\u0131n\u0131 s\u00f6ylerim. Tetikleyiciler sayesinde canl\u0131 yaz\u0131lar yeni tabloya da d\u00fc\u015fer, b\u00f6ylece geride veri kalmaz. G\u00fczel yan\u0131, uygulama fark etmeden arka planda ta\u015f\u0131man\u0131n s\u00fcrmesidir. Dezavantaj dedi\u011fim k\u0131s\u0131m ise tetikleyici y\u00fck\u00fc. Trafi\u011finiz \u00e7ok yo\u011fun ve kritikse, tetikleyicilerin yaratt\u0131\u011f\u0131 ekstra dokunu\u015fu hesaba katmak gerekir. Bir de, tabloda zaten tetikleyiciler varsa ayr\u0131 bir \u00f6zen ister.<\/p>\n<p>\u015eunu da ekleyeyim: Yabanc\u0131 anahtarlar, b\u00fcy\u00fck metin alanlar\u0131 ve devasa index de\u011fi\u015fiklikleri s\u0131ras\u0131nda sab\u0131rl\u0131 olmakta fayda var. Ufak bir kuru prova i\u00e7in ben her zaman staging\u2019de k\u0131sa bir tablo kopyas\u0131yla deneme yapar\u0131m. Ta\u015f\u0131man\u0131n ritmini orada bulur, canl\u0131ya \u00f6yle ge\u00e7erim. Belgeleri okurken \u00f6zellikle <a href=\"https:\/\/www.percona.com\/doc\/percona-toolkit\/LATEST\/pt-online-schema-change.html\" rel=\"nofollow noopener\" target=\"_blank\">pt-online-schema-change belgeleri<\/a> i\u00e7indeki uyar\u0131lar\u0131 g\u00f6zlerim; y\u0131llar i\u00e7inde iyi p\u00fcf noktalar\u0131 birikti.<\/p>\n<h2 id=\"section-5\"><span id=\"gh-ost_Binlogu_dinleyip_golgeyle_dans_eden_usta\">gh-ost: Binlog\u2019u dinleyip g\u00f6lgeyle dans eden usta<\/span><\/h2>\n<p><strong>gh-ost<\/strong> ile ilk tan\u0131\u015ft\u0131\u011f\u0131mda hissetti\u011fim \u015fey \u015fuydu: \u201cBu ara\u00e7, kalabal\u0131\u011f\u0131n ritmini dinleyip ona g\u00f6re ad\u0131m at\u0131yor.\u201d Tetikleyici yerine <strong>binlog<\/strong> ak\u0131\u015f\u0131n\u0131 izleyerek de\u011fi\u015fiklikleri yakal\u0131yor. Canl\u0131 tabloya yaz\u0131lan her yeni kay\u0131t veya g\u00fcncelleme, binlog\u2019dan okunup g\u00f6lge tabloya i\u015fleniyor. B\u00f6ylece uygulama sorgular\u0131na fazladan tetikleyici y\u00fck\u00fc bindirmeden ilerleyebiliyorsunuz. Trafi\u011fin temposuna kulak verip, gerekirse kendini yava\u015flatabiliyor.<\/p>\n<p>Benim s\u0131k kulland\u0131\u011f\u0131m yal\u0131n bir \u00e7a\u011fr\u0131 \u00f6rne\u011fi \u015f\u00f6yle:<\/p>\n<p><code>gh-ost --host=db-primary --database=mydb --table=orders <br \/>  --alter=\"ADD COLUMN delivered_at DATETIME NULL\" <br \/>  --cut-over=default --max-lag-millis=1500 --execute<\/code><\/p>\n<p>Burada <strong>max-lag-millis<\/strong> ile replikasyon gecikmesine sayg\u0131 duymas\u0131n\u0131, <strong>cut-over<\/strong> ile de kesim an\u0131n\u0131 nas\u0131l y\u00f6netece\u011fini belirliyorsunuz. Binlog bazl\u0131 ilerledi\u011fi i\u00e7in \u00f6zellikle <strong>RBR<\/strong> (row-based) bi\u00e7imini seviyor; ortam\u0131n\u0131zda bu ayar\u0131 kontrol etmek iyi bir fikir. Ben genellikle <a href=\"https:\/\/github.com\/github\/gh-ost\" rel=\"nofollow noopener\" target=\"_blank\">gh-ost deposundaki kullan\u0131m \u00f6rnekleri ve notlar<\/a> aras\u0131ndan senaryoma en yak\u0131n bayraklar\u0131 se\u00e7erim. \u015eunu da unutmay\u0131n: gh-ost, etkisini zeki bir \u015feklide yayar ama tamamen g\u00f6r\u00fcnmez de\u011fil. B\u00fcy\u00fck koltuklar\u0131 bir odadan di\u011ferine ta\u015f\u0131rken \u00e7\u0131kard\u0131\u011f\u0131n\u0131z k\u00fc\u00e7\u00fck sesler gibi, sistemde izlerini g\u00f6r\u00fcrs\u00fcn\u00fcz; bu normal.<\/p>\n<h2 id=\"section-6\"><span id=\"Peki_BlueGreen_ile_ikisini_nasil_sahneye_cikaririm\">Peki Blue\/Green ile ikisini nas\u0131l sahneye \u00e7\u0131kar\u0131r\u0131m?<\/span><\/h2>\n<p>En sevdi\u011fim kurgu \u015f\u00f6yle i\u015fliyor. \u00d6nce Green taraf\u0131n\u0131 ayarl\u0131yorum: Taze bir kopya, Blue\u2019yu huzurla takip ediyor. Bu bir replica olabilir ya da yeni bir d\u00fc\u011f\u00fcm. Sonra Green\u2019de \u015fema de\u011fi\u015fikli\u011fini \u00e7al\u0131\u015ft\u0131r\u0131yorum. E\u011fer Green, Blue\u2019dan replike oluyorsa ve ben gh-ost kullan\u0131yorsam, Green\u2019in kendi \u00fczerinde g\u00f6lge tabloyu b\u00fcy\u00fct\u00fcrken Blue\u2019nun ak\u0131\u015f\u0131n\u0131 da binlog ile yakal\u0131yorum. pt-online-schema-change tercih ediyorsam, Green\u2019de tetikleyicilerle ta\u015f\u0131ma yap\u0131yorum. \u0130kisi de bitti\u011finde, Green\u2019in verisini h\u0131zl\u0131ca kokluyorum: Sat\u0131r say\u0131lar\u0131 tutuyor mu, kritik raporlar makul m\u00fc, sorgu plan\u0131 u\u00e7mu\u015f mu?<\/p>\n<p>Sonra geliyor \u201ckesim an\u0131\u201d. Burada bir anda tozu dumana katmaya gerek yok. Uygulaman\u0131n veritaban\u0131na ba\u011fland\u0131\u011f\u0131 yeri tek bir hamleyle Green\u2019e \u00e7eviriyorum. Bunu yapan bir <strong>ba\u011flant\u0131 katman\u0131<\/strong> varsa i\u015finiz kolay; yoksa uygulamay\u0131 ufak bir konfig\u00fcrasyon de\u011fi\u015fikli\u011fiyle yeni d\u00fc\u011f\u00fcme y\u00f6nlendirmek de olur. DNS ile yapanlar\u0131 da g\u00f6rd\u00fcm, ama ben genellikle k\u0131sa ya\u015fayan ba\u011flant\u0131lar\u0131n oldu\u011fu bir uygulamada, ba\u011flant\u0131 havuzu ayar\u0131n\u0131 g\u00fcncellemeyi tercih ediyorum. \u015eu kadar\u0131n\u0131 s\u00f6yleyeyim: Haz\u0131rl\u0131k iyi ise, kesim \u00e2n\u0131 tek bir nefes gibi ge\u00e7iyor.<\/p>\n<p>Green\u2019den memnunsan\u0131z, bir s\u00fcre Blue\u2019yu da hayatta tutup can yele\u011fi gibi \u00fczerinizde ta\u015f\u0131y\u0131n. Hani olur da bir raporda beklenmedik bir sapma yakalars\u0131n\u0131z, geriye d\u00f6n\u00fc\u015f\u00fcn\u00fcz net olsun. Bu k\u0131sa \u201cg\u00f6zlem s\u00fcresi\u201d, ekibin omuzlar\u0131n\u0131 indiriyor.<\/p>\n<h2 id=\"section-7\"><span id=\"Ufak_ama_kritik_pufler_Geri_donus_fren_pedali_ve_nabiz\">Ufak ama kritik p\u00fcfler: Geri d\u00f6n\u00fc\u015f, fren pedal\u0131 ve nab\u0131z<\/span><\/h2>\n<p>Ne yap\u0131yorsan\u0131z yap\u0131n, geri d\u00f6n\u00fc\u015f\u00fcn\u00fcz\u00fc daha ilk dakikada tasarlay\u0131n. pt-online-schema-change, kesimden \u00f6nce eski tabloyu g\u00fcvenle kenara al\u0131r. gh-ost da benzer \u015fekilde \u201ceski kap\u0131y\u0131\u201d hemen k\u0131rmaz. Yani problem hissederseniz tek bir ad\u0131mla eski h\u00e2le d\u00f6nebilmeli ve bunu daha \u00f6nceden prova etmi\u015f olmal\u0131s\u0131n\u0131z. Ben pratikte \u015fu yakla\u015f\u0131m\u0131 seviyorum: Kesimden sonra belirledi\u011finiz k\u0131sa zaman penceresinde, en kritik kullan\u0131mlar\u0131 h\u0131zl\u0131ca test eden k\u00fc\u00e7\u00fck bir kontrol listesi \u00e7al\u0131\u015ft\u0131r\u0131n. \u00d6deme ak\u0131\u015f\u0131, rapor sayfas\u0131, admin panelde bir arama\u2026 \u00dc\u00e7 be\u015f dakika bile paha bi\u00e7ilemez.<\/p>\n<p>\u0130kinci konu, fren pedal\u0131. Her iki ara\u00e7ta da \u201c\u00e7ok h\u0131zland\u0131m, nefesleneyim\u201d diyebilece\u011finiz bayraklar var. pt-online-schema-change i\u00e7in <strong>&#8211;max-load<\/strong>, <strong>&#8211;critical-load<\/strong> gibi; gh-ost i\u00e7in <strong>&#8211;max-lag-millis<\/strong> gibi. Bunlar birer g\u00fcvenlik kemeri. Trafik art\u0131nca araca \u201cdur, s\u0131k\u0131\u015f\u0131yoruz\u201d demenizi sa\u011flar. \u00dc\u00e7\u00fcnc\u00fc konu ise nab\u0131z: Uygulama tepkileri, sorgu s\u00fcreleri, veritaban\u0131 bekleme s\u00fcreleri. E\u011fer merkezi izlemeniz yoksa, yola \u00e7\u0131kmadan \u00f6nce k\u00fc\u00e7\u00fck bir pano kurun. Canl\u0131 ortamlarda, basit grafikleri bile sevgiyle anars\u0131n\u0131z.<\/p>\n<p>Y\u00fcksek eri\u015filebilirlik konular\u0131n\u0131 kurcalarken, <a href=\"https:\/\/www.dchost.com\/blog\/yedekten-oteyi-konusalim-mariadb-galera-cluster-ve-mysql-group-replication-ile-kesintisizlige-sicak-bir-yolculuk\/\">MariaDB Galera ve MySQL Group Replication ile kesintisizli\u011fe s\u0131cak bir yolculuk<\/a> yaz\u0131mda anlatt\u0131\u011f\u0131m fikirlerin burada \u00e7ok i\u015fe yarad\u0131\u011f\u0131n\u0131 g\u00f6rd\u00fcm. Oradaki d\u00fc\u015f\u00fcnce, d\u00fc\u011f\u00fcmler aras\u0131 g\u00fcvenli ge\u00e7i\u015fi m\u00fcmk\u00fcn k\u0131l\u0131yor; burada da ayn\u0131 rahatl\u0131\u011f\u0131 midenizde hissediyorsunuz.<\/p>\n<h2 id=\"section-8\"><span id=\"Gercek_bir_senaryo_Siparis_tablosuna_sutun_eklerken_tansiyonu_dusurmek\">Ger\u00e7ek bir senaryo: Sipari\u015f tablosuna s\u00fctun eklerken tansiyonu d\u00fc\u015f\u00fcrmek<\/span><\/h2>\n<p>Gelin en ba\u015ftaki hik\u00e2yeyi toparlayal\u0131m. \u201corders\u201d tablosuna <strong>delivered_at<\/strong> s\u00fctunu eklenecek. Trafik g\u00fcnd\u00fcz yo\u011fun, gece nispeten sakin. Ekip olarak bir Green kopya haz\u0131rl\u0131yoruz. Bu kopya, Blue\u2019yu takip eden bir replica. Replikasyonun sa\u011fl\u0131kl\u0131 oldu\u011funu g\u00f6rd\u00fckten sonra, Green\u2019de gh-ost\u2019u \u00e7al\u0131\u015ft\u0131r\u0131yorum. Bayraklar \u00f6l\u00e7\u00fcl\u00fc, replikasyon gecikmesine sayg\u0131l\u0131 bir ayar. Bu arada uygulama Blue\u2019dan yazmaya devam ediyor. gh-ost, binlog ak\u0131\u015f\u0131n\u0131 dinleyerek yeni s\u00fctunu olan g\u00f6lge tabloyu besliyor.<\/p>\n<p>Ta\u015f\u0131ma tamamlan\u0131nca Green\u2019de h\u0131zl\u0131 bir kontrol yap\u0131yorum. Kritik sorgular\u0131n plan\u0131 fena de\u011fil, say\u0131lar tutuyor, raporlar makul. Ekip ayn\u0131 anda uygulaman\u0131n ba\u011flant\u0131 ayar\u0131n\u0131 Green\u2019e \u00e7eviriyor. Bir iki dakika g\u00f6zlemlemede kal\u0131yoruz. Beklenmedik bir a\u011fr\u0131 yok. Ertesi g\u00fcn\u00fcn sabah\u0131nda, Blue\u2019yu da ufak bir temizlikle kapat\u0131yoruz. Buradaki temel kazan\u0131m \u015fu: Kimsenin hissetmedi\u011fi bir operasyonla, d\u00fc\u015f\u00fck riskle yeni bir \u015femaya ge\u00e7tik. Bu \u00f6zg\u00fcven bir sonraki de\u011fi\u015fikli\u011fin kap\u0131s\u0131n\u0131 aral\u0131yor.<\/p>\n<h2 id=\"section-9\"><span id=\"Sik_dusulen_cukurlar_Kucuk_uyarilar_buyuk_rahatlik\">S\u0131k d\u00fc\u015f\u00fclen \u00e7ukurlar: K\u00fc\u00e7\u00fck uyar\u0131lar b\u00fcy\u00fck rahatl\u0131k<\/span><\/h2>\n<p>Deneyimlerimden birka\u00e7 nokta, akl\u0131n\u0131z\u0131n bir kenar\u0131nda dursun. Tabloda h\u00e2lihaz\u0131rda tetikleyici varsa, pt-online-schema-change ile \u00e7ak\u0131\u015fmalar ya\u015fanabilir; \u00f6nce dikkatlice okuman\u0131z, bazen de farkl\u0131 bir y\u00f6ntem se\u00e7meniz gerekebilir. gh-ost i\u00e7in binlog bi\u00e7iminin uygun oldu\u011fundan emin olun; baz\u0131 ortamlarda politikalar gere\u011fi ayar de\u011fi\u015fikli\u011fi yapam\u0131yorsunuz, o zaman plan\u0131 sadele\u015ftirmek gerekir. Uzun s\u00fcren transaction\u2019lar, ta\u015f\u0131ma s\u0131ras\u0131nda sizi bekletebilir; bu y\u00fczden kampanya d\u00f6neminde ya da rapor ak\u0131\u015flar\u0131n\u0131n yo\u011fun oldu\u011fu saatlerde de\u011fi\u015fikli\u011fi ba\u015flatmamay\u0131 severim.<\/p>\n<p>Bir de \u201cmetadata lock\u201d denilen k\u00fc\u00e7\u00fck ama etkili can s\u0131k\u0131c\u0131 anlar var. Her \u015fey yolunda giderken, masan\u0131n kenar\u0131na tak\u0131lan bir ceket gibi bir anda tak\u0131labilirsiniz. Prova s\u0131ras\u0131nda bu kilitleri tetikleyen ak\u0131\u015flar\u0131 g\u00f6r\u00fcrseniz, saat se\u00e7iminizi de\u011fi\u015ftirin. <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-online-ddl-operations.html\" rel=\"nofollow noopener\" target=\"_blank\">MySQL\u2019in \u00e7evrimi\u00e7i DDL notlar\u0131<\/a> gibi rehberler, nereye basarsan\u0131z iz \u00e7\u0131kaca\u011f\u0131n\u0131 kaba hatlar\u0131yla anlat\u0131r; okuyup i\u00e7inizi rahatlat\u0131n.<\/p>\n<h2 id=\"section-10\"><span id=\"Gozun_arkada_kalmasin_Dogrulama_ve_gorunurluk\">G\u00f6z\u00fcn arkada kalmas\u0131n: Do\u011frulama ve g\u00f6r\u00fcn\u00fcrl\u00fck<\/span><\/h2>\n<p>Kesimden \u00f6nce ve sonra minik bir do\u011frulama rit\u00fceli olu\u015fturun. Sat\u0131r say\u0131lar\u0131 tutuyor mu, kritik sayfalarda tepki normal mi, hata kay\u0131tlar\u0131nda yeni bir koku var m\u0131? E\u011fer log\u2019lar\u0131n\u0131z ve grafikleriniz derli topluysa, bu kontrol 5-10 dakikada biter. Yoksa, en az\u0131ndan uygulama hatalar\u0131n\u0131 toplayan k\u00fc\u00e7\u00fck bir g\u00f6r\u00fcn\u00fcm i\u015finizi g\u00f6r\u00fcr. Ben genellikle ta\u015f\u0131ma s\u00fcresince birka\u00e7 uyar\u0131 e\u015fi\u011fi kurar\u0131m: Sorgu s\u00fcresi belirli bir e\u015fi\u011fi ge\u00e7erse, replikasyon gecikmesi artarsa ya da ba\u011flant\u0131 havuzu a\u015f\u0131r\u0131 kullan\u0131ma giderse haberim olur. Bu k\u00fc\u00e7\u00fck sinyaller, operasyon boyunca size arkada\u015fl\u0131k eder.<\/p>\n<p>Bu arada, izleme ve g\u00fcnl\u00fckleri d\u00fczenlemek istiyorsan\u0131z, benzer ruhla yazd\u0131\u011f\u0131m di\u011fer rehberler size ilham verebilir. Ara\u00e7lar\u0131n kurulumu ayr\u0131 bir d\u00fcnya ama zihniyet ayn\u0131: Sessiz ve sakin bir s\u00fcr\u00fc\u015f i\u00e7in g\u00f6stergeler \u015fart.<\/p>\n<h2 id=\"section-11\"><span id=\"Kapanis_Semayi_buyuturken_kalbi_yormamak\">Kapan\u0131\u015f: \u015eemay\u0131 b\u00fcy\u00fct\u00fcrken kalbi yormamak<\/span><\/h2>\n<p>Veritaban\u0131nda \u015fema de\u011fi\u015fikli\u011fini canl\u0131da yapmak, ilk bak\u0131\u015fta yutkunmal\u0131k gelebilir. Fakat do\u011fru ara\u00e7larla ve <strong>Blue\/Green<\/strong> zihniyetiyle, bunu g\u00fcnl\u00fck rutinin bir par\u00e7as\u0131 haline getirmek m\u00fcmk\u00fcn. <strong>pt-online-schema-change<\/strong> tetikleyicilerle, <strong>gh-ost<\/strong> ise binlog\u2019dan beslenerek g\u00f6lge tabloyu b\u00fcy\u00fct\u00fcr. \u0130kisiyle de defalarca sakin sakin ge\u00e7i\u015fler yapt\u0131m. En \u00e7ok i\u015fime yarayan \u00fc\u00e7 \u015fey hep ayn\u0131 oldu: \u00d6nceden prova, keskin bir geri d\u00f6n\u00fc\u015f plan\u0131 ve ta\u015f\u0131ma s\u0131ras\u0131nda sistemi dinleyen ufak bir izleme.<\/p>\n<p>E\u011fer ilk kez deneyecekseniz, k\u00fc\u00e7\u00fck bir tablo ve d\u00fc\u015f\u00fck riskli bir de\u011fi\u015fiklikle ba\u015flay\u0131n. Ritmi orada bulun, sonra b\u00fcy\u00fck ad\u0131mlara ge\u00e7in. Yolculu\u011fun sonunda en sevdi\u011fim c\u00fcmleyi duyars\u0131n\u0131z: \u201cKimse fark etmedi ama b\u00fcy\u00fck bir i\u015fi bitirdik.\u201d Umar\u0131m bu yaz\u0131 zihninizde birka\u00e7 ta\u015f\u0131n yerini de\u011fi\u015ftirir. Sorular\u0131n\u0131z olursa her zamanki gibi buraday\u0131m. Bir sonraki yaz\u0131da g\u00f6r\u00fc\u015f\u00fcr\u00fcz; \u015feman\u0131z a\u00e7\u0131ls\u0131n, kesiminiz sessiz olsun.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Hi\u00e7 tablo de\u011fi\u015ftirirken terledi\u011finiz oldu mu?2 \u015eema de\u011fi\u015fikli\u011fi neden can yakar? K\u00fc\u00e7\u00fck bir aynaya bak\u0131\u015f3 Blue\/Green: De\u011fi\u015fikli\u011fi g\u00fcvenli bir oyun alan\u0131nda b\u00fcy\u00fctmek4 pt-online-schema-change: Tetikleyicilerle yumu\u015fak dosdo\u011fru ad\u0131mlar5 gh-ost: Binlog\u2019u dinleyip g\u00f6lgeyle dans eden usta6 Peki Blue\/Green ile ikisini nas\u0131l sahneye \u00e7\u0131kar\u0131r\u0131m?7 Ufak ama kritik p\u00fcfler: Geri d\u00f6n\u00fc\u015f, fren pedal\u0131 ve nab\u0131z8 Ger\u00e7ek bir senaryo: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1541,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-1540","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\/1540","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=1540"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/1540\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/1541"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=1540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=1540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=1540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}