[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:database\u002Fmysql-replication-scaling":4,"config":214},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":115,"samples":129},"database","Veritabanı","","mysql-replication-scaling","Mysql Replication Scaling","tr",75,2475,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112],{"key":19,"name":20,"count":11},"backup-recovery","Backup Recovery",{"key":22,"name":23,"count":11},"data-modeling","Data Modeling",{"key":25,"name":26,"count":11},"indexing","Indexing",{"key":28,"name":29,"count":11},"mongodb-aggregation","Mongodb Aggregation",{"key":31,"name":32,"count":11},"mongodb-indexes-queries","Mongodb Indexes Queries",{"key":34,"name":35,"count":11},"mongodb-operations","Mongodb Operations",{"key":37,"name":38,"count":11},"mongodb-replication-sharding","Mongodb Replication Sharding",{"key":40,"name":41,"count":11},"mongodb-schema-modeling","Mongodb Schema Modeling",{"key":43,"name":44,"count":11},"mongodb-transactions-consistency","Mongodb Transactions Consistency",{"key":46,"name":47,"count":11},"mysql-indexes","Mysql Indexes",{"key":49,"name":50,"count":11},"mysql-innodb-transactions","Mysql Innodb Transactions",{"key":52,"name":53,"count":11},"mysql-operations","Mysql Operations",{"key":55,"name":56,"count":11},"mysql-query-optimization","Mysql Query Optimization",{"key":8,"name":9,"count":11},{"key":59,"name":60,"count":11},"mysql-types-constraints","Mysql Types Constraints",{"key":62,"name":63,"count":11},"nosql-models","Nosql Models",{"key":65,"name":66,"count":11},"performance-tuning","Performance Tuning",{"key":68,"name":69,"count":11},"pg-indexes","Pg Indexes",{"key":71,"name":72,"count":11},"pg-mvcc-vacuum","Pg Mvcc Vacuum",{"key":74,"name":75,"count":11},"pg-operations","Pg Operations",{"key":77,"name":78,"count":11},"pg-query-planning","Pg Query Planning",{"key":80,"name":81,"count":11},"pg-transactions-locking","Pg Transactions Locking",{"key":83,"name":84,"count":11},"pg-types-constraints","Pg Types Constraints",{"key":86,"name":87,"count":11},"query-optimization","Query Optimization",{"key":89,"name":90,"count":11},"redis-cluster-sharding","Redis Cluster Sharding",{"key":92,"name":93,"count":11},"redis-data-structures","Redis Data Structures",{"key":95,"name":96,"count":11},"redis-expiration-eviction","Redis Expiration Eviction",{"key":98,"name":99,"count":11},"redis-persistence","Redis Persistence",{"key":101,"name":102,"count":11},"redis-replication-sentinel","Redis Replication Sentinel",{"key":104,"name":105,"count":11},"redis-transactions-scripting","Redis Transactions Scripting",{"key":107,"name":108,"count":11},"replication-scaling","Replication Scaling",{"key":110,"name":111,"count":11},"security-access","Security Access",{"key":113,"name":114,"count":11},"transactions-isolation","Transactions Isolation",[116,120,123,126],{"key":117,"name":118,"count":119},"mongodb","MongoDB",450,{"key":121,"name":122,"count":119},"mysql","MySQL",{"key":124,"name":125,"count":119},"postgresql","PostgreSQL",{"key":127,"name":128,"count":119},"redis","Redis",[130,148,162,175,188,201],{"id":131,"topic":9,"difficulty":132,"body":133,"options":134,"correct_key":139,"explanation":147},"019f8780-5f2e-7d5c-ab84-7e413fc9e204",1,"MySQL replikasyonunda, source (ana) sunucu bir replica'nın aynı değişiklikleri uygulayabilmesi için gerçekte ne gönderir?",[135,138,141,144],{"key":136,"text":137},"a","InnoDB buffer pool sayfalarının ham bir TCP akışı",{"key":139,"text":140},"b","Source'ta gerçekleşen değişiklikleri tanımlayan binary log (binlog) olaylarından oluşan bir akış",{"key":142,"text":143},"c","Tüm veri dizininin her gece alınan sıkıştırılmış bir kopyası",{"key":145,"text":146},"d","Replica'nın `INSERT` ifadeleri olarak yeniden oynattığı bir `SELECT` sonuç kümesi","MySQL replikasyonu binlog tabanlıdır: source her değişikliği (ya da formata bağlı olarak sonuç satır değişikliklerini) binary log'una yazar, replica'lar bunu bir replication I\u002FO thread'i ile okuyup yerelde relay log olarak saklar ve bir SQL\u002Fapply thread'iyle uygular. Normal replikasyonda ham sayfa akışı ya da periyodik tam dizin kopyası yoktur.",{"id":149,"topic":9,"difficulty":150,"body":151,"options":152,"correct_key":142,"explanation":161},"019f8780-5f2f-742f-b9f6-42f3d7032d53",2,"`binlog_format`, `STATEMENT`, `ROW` veya `MIXED` olarak ayarlanabilir. Bir `UPDATE` için `ROW` formatı binary log'a gerçekte neyi kaydeder?",[153,155,157,159],{"key":136,"text":154},"`UPDATE` ifadesinin tam SQL metnini, replica'da olduğu gibi yeniden çalıştırılmak üzere",{"key":139,"text":156},"Yalnızca etkilenen satırın primary key'ini, yeni değerleri bulmayı replica'ya bırakarak",{"key":142,"text":158},"SQL ifadesinin kendisi yerine, değişen satırların gerçek önce\u002Fsonra (before\u002Fafter) imajlarını",{"key":145,"text":160},"Yalnızca replica veri bütünlüğünü doğrulamak için kullanılan, etkilenen sayfanın bir checksum'ı","Row-based replication (RBR), SQL ifadesi yerine gerçek veri değişikliklerini — UPDATE\u002FDELETE için satırın önce imajını ve sonra imajını — loglar. Bu, `NOW()`, `RAND()` gibi fonksiyonlar kullanan veya yan etkili trigger'lara sahip ifadelerde bile source ve replica'da farklı davranabilecek durumları deterministik hale getirir; statement-based replikasyon ise SQL metnini loglayıp yeniden çalıştırır.",{"id":163,"topic":9,"difficulty":150,"body":164,"options":165,"correct_key":136,"explanation":174},"019f8780-5f2f-7c0e-808d-5eec579e5186","Bir geliştirici, bir tabloya eklenen değeri üretmek için `UUID()` çağıran bir stored routine yazıyor ve sunucu `binlog_format=STATEMENT` ile çalışıyor. Bu neden replikasyon için risklidir?",[166,168,170,172],{"key":136,"text":167},"`UUID()` deterministik değildir; replica aynı ifadeden farklı bir değer üretebilir",{"key":139,"text":169},"`UUID()`, statement-based replikasyonda stored routine içinde hiç kullanılamaz ve ifade doğrudan reddedilir",{"key":142,"text":171},"Statement-based replikasyon yalnızca sayısal kolon tiplerini destekler, bu yüzden UUID string kolonu replikasyonu bozar",{"key":145,"text":173},"Risk yoktur; MySQL `UUID()`'i otomatik algılar ve `binlog_format` ne olursa olsun ifadeyi anında row-based'e çevirir","Statement-based replikasyon (SBR), loglanan SQL'i replica'da yeniden çalıştırır; bu yüzden `UUID()`, `RAND()`, bazı bağlamlarda `NOW()` gibi deterministik olmayan herhangi bir fonksiyon source ve replica'da farklı sonuçlar üretip veri sapmasına yol açabilir. MySQL'in row-based replikasyonu getirmesinin ve `MIXED` formatın güvensiz bulduğu ifadeleri otomatik olarak row-based loglamaya geçirmesinin tam nedeni budur.",{"id":176,"topic":9,"difficulty":150,"body":177,"options":178,"correct_key":145,"explanation":187},"019f8780-5f30-7cb2-b560-56c1e39ced82","Modern MySQL replikasyon terminolojisinde (8.0.23+), bir replica'nın source'tan ne kadar geride olduğu dahil replikasyon durumunu hangi komut gösterir?",[179,181,183,185],{"key":136,"text":180},"`SHOW ENGINE INNODB STATUS`",{"key":139,"text":182},"`SHOW PROCESSLIST`",{"key":142,"text":184},"`SHOW BINLOG EVENTS`",{"key":145,"text":186},"`SHOW REPLICA STATUS`","`SHOW REPLICA STATUS` (eski `SHOW SLAVE STATUS`'un modern adı, ikisi de hâlâ destekleniyor), replica'nın I\u002FO ve SQL thread durumunu, bağlı olduğu source'u ve replikasyon gecikmesini gösteren `Seconds_Behind_Source` (eski adıyla `Seconds_Behind_Master`) değerini raporlar. `SHOW ENGINE INNODB STATUS` ve `SHOW PROCESSLIST` genel amaçlı diagnostiklerdir, özel olarak replikasyon durumuyla ilgili değildir.",{"id":189,"topic":9,"difficulty":150,"body":190,"options":191,"correct_key":142,"explanation":200},"019f8780-5f31-74c0-8bc7-1f9900917ab1","GTID (Global Transaction Identifier) tabanlı replikasyonun, klasik dosya\u002Fpozisyon tabanlı replikasyona kıyasla temel amacı nedir?",[192,194,196,198],{"key":136,"text":193},"GTID'ler, transaction'lar ayrı bir metadata tablosunda takip edildiği için binary log ihtiyacını tamamen ortadan kaldırır",{"key":139,"text":195},"GTID'ler replikasyonu varsayılan olarak asenkron yerine senkron yapar",{"key":142,"text":197},"Her transaction'a global olarak benzersiz bir kimlik atanır, böylece bir replica yeni bir source'a yönlendirildiğinde binlog dosyasını ve pozisyonunu elle belirtmeye gerek kalmadan doğru şekilde devam edebilir",{"key":145,"text":199},"GTID'ler yalnızca `mysqldump` export'larını hızlandırmak için kullanılır, replica failover'ıyla ilgili değildir","GTID tabanlı replikasyonda (`GTID_MODE=ON`), her transaction benzersiz bir kimlikle (`source_uuid:transaction_id`) etiketlenir. Bir replica yeni bir source'a yönlendirildiğinde (ör. failover sırasında), MySQL GTID kümelerini karşılaştırarak hangi transaction'ların eksik olduğunu otomatik belirleyebilir; klasik pozisyonel replikasyondaki gibi operatörün tam binlog dosya adını ve byte offset'ini elle takip etmesi gerekmez.",{"id":202,"topic":9,"difficulty":132,"body":203,"options":204,"correct_key":136,"explanation":213},"019f8780-5f31-7bef-8398-0b7c277d8529","Varsayılan olarak, bir source bir transaction'ı commit edip replica'lara gönderdiğinde, client'a başarı dönmeden önce herhangi bir replica'nın alındığını onaylamasını bekler mi?",[205,207,209,211],{"key":136,"text":206},"Hayır — varsayılan MySQL replikasyonu asenkrondur, bu yüzden source herhangi bir replica'yı beklemeden commit edip başarı döner",{"key":139,"text":208},"Evet — source, commit etmeden önce her zaman TÜM replica'ların transaction'ı uygulamasını bekler",{"key":142,"text":210},"Evet — source, varsayılan olarak commit etmeden önce tam olarak bir replica'nın onaylamasını bekler",{"key":145,"text":212},"Bu, herhangi bir replikasyon ayarına değil, replike edilen tabloların storage engine'ine bağlıdır","Standart (asenkron) MySQL replikasyonu herhangi bir replica onayı gerektirmez: source yerel olarak commit edip client'a başarı döner, sonra binlog olaylarını replica'lara bağımsız olarak gönderir. Bu en iyi yazma gecikmesini sağlar ama commit'ten hemen sonra bir çökme, hiçbir replica'ya ulaşmamış transaction'ların kaybolmasına yol açabilir — semi-sync replikasyonun tam olarak kapatmaya çalıştığı boşluk budur.",{"fields":215,"seniorities":391,"interview_shapes":392,"locales":397,"oauth":399,"question_count":402,"coach_enabled":403,"jd_match_enabled":403},[216,241,261,278,302,315,324,343,365,372,378,385],{"key":217,"name_tr":218,"name_en":218,"sort":132,"specializations":219},"backend","Backend",[220,223,226,229,232,235,238],{"key":221,"name":222,"field":217},"general","Genel",{"key":224,"name":225,"field":217},"go","Go",{"key":227,"name":228,"field":217},"python","Python",{"key":230,"name":231,"field":217},"java","Java",{"key":233,"name":234,"field":217},"csharp","C#\u002F.NET",{"key":236,"name":237,"field":217},"nodejs","Node.js",{"key":239,"name":240,"field":217},"php","PHP",{"key":242,"name_tr":243,"name_en":243,"sort":150,"specializations":244},"frontend","Frontend",[245,246,249,252,255,258],{"key":221,"name":222,"field":242},{"key":247,"name":248,"field":242},"javascript","JavaScript",{"key":250,"name":251,"field":242},"typescript","TypeScript",{"key":253,"name":254,"field":242},"react","React",{"key":256,"name":257,"field":242},"vue","Vue",{"key":259,"name":260,"field":242},"angular","Angular",{"key":262,"name_tr":263,"name_en":263,"sort":264,"specializations":265},"fullstack","Fullstack",3,[266,267,268,269,270,271,272,273,274,275,276,277],{"key":221,"name":222,"field":262},{"key":224,"name":225,"field":217},{"key":227,"name":228,"field":217},{"key":230,"name":231,"field":217},{"key":233,"name":234,"field":217},{"key":236,"name":237,"field":217},{"key":239,"name":240,"field":217},{"key":247,"name":248,"field":242},{"key":250,"name":251,"field":242},{"key":253,"name":254,"field":242},{"key":256,"name":257,"field":242},{"key":259,"name":260,"field":242},{"key":279,"name_tr":280,"name_en":280,"sort":281,"specializations":282},"devops-cloud","DevOps \u002F Cloud",4,[283,284,287,290,293,296,299],{"key":221,"name":222,"field":279},{"key":285,"name":286,"field":279},"aws","AWS",{"key":288,"name":289,"field":279},"gcp","GCP",{"key":291,"name":292,"field":279},"azure","Azure",{"key":294,"name":295,"field":279},"kubernetes","Kubernetes",{"key":297,"name":298,"field":279},"terraform","Terraform",{"key":300,"name":301,"field":279},"linux","Linux",{"key":303,"name_tr":304,"name_en":304,"sort":305,"specializations":306},"ai-engineer","AI Engineer",5,[307,308,309,312],{"key":221,"name":222,"field":303},{"key":227,"name":228,"field":303},{"key":310,"name":311,"field":303},"llm-rag","LLM\u002FRAG",{"key":313,"name":314,"field":303},"mlops","MLOps",{"key":5,"name_tr":6,"name_en":316,"sort":317,"specializations":318},"Database",6,[319,320,321,322,323],{"key":221,"name":222,"field":5},{"key":124,"name":125,"field":5},{"key":121,"name":122,"field":5},{"key":117,"name":118,"field":5},{"key":127,"name":128,"field":5},{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"mobile","Mobil","Mobile",7,[330,331,334,337,340],{"key":221,"name":222,"field":325},{"key":332,"name":333,"field":325},"ios-swift","iOS (Swift)",{"key":335,"name":336,"field":325},"android-kotlin","Android (Kotlin)",{"key":338,"name":339,"field":325},"flutter","Flutter",{"key":341,"name":342,"field":325},"react-native","React Native",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"security","Güvenlik","Security",8,[349,350,353,356,359,362],{"key":221,"name":222,"field":344},{"key":351,"name":352,"field":344},"appsec","AppSec",{"key":354,"name":355,"field":344},"offensive-pentest","Offensive \u002F Pentest",{"key":357,"name":358,"field":344},"cloud-security","Cloud Security",{"key":360,"name":361,"field":344},"devsecops","DevSecOps",{"key":363,"name":364,"field":344},"blue-team-incident","Blue Team \u002F Incident",{"key":366,"name_tr":367,"name_en":368,"sort":369,"specializations":370},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[371],{"key":221,"name":222,"field":366},{"key":373,"name_tr":374,"name_en":374,"sort":375,"specializations":376},"data-engineer","Data Engineer",10,[377],{"key":221,"name":222,"field":373},{"key":379,"name_tr":380,"name_en":381,"sort":382,"specializations":383},"game-dev","Oyun Geliştirme","Game Development",11,[384],{"key":221,"name":222,"field":379},{"key":386,"name_tr":387,"name_en":387,"sort":388,"specializations":389},"ml-engineer","ML Engineer",12,[390],{"key":221,"name":222,"field":386},[14,15,16],{"junior":393,"mid":395,"senior":396},{"questions":394,"median_sec":3},20,{"questions":394,"median_sec":3},{"questions":394,"median_sec":3},[10,398],"en",[400,401],"google","github",21750,true]