[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en: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","Database","","mysql-replication-scaling","Mysql Replication Scaling","en",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,"In MySQL replication, what does the source server actually send to a replica so it can reproduce the same changes?",[135,138,141,144],{"key":136,"text":137},"a","A live TCP stream of raw InnoDB buffer pool pages",{"key":139,"text":140},"b","A stream of binary log (binlog) events describing the changes that happened on the source",{"key":142,"text":143},"c","A nightly compressed copy of the entire data directory",{"key":145,"text":146},"d","A set of `SELECT` results that the replica replays as `INSERT` statements","MySQL replication is binlog-based: the source writes every change (or the resulting row changes, depending on format) to its binary log, and replicas read that log via a replication I\u002FO thread, store it locally as a relay log, and apply it with a SQL\u002Fapply thread. There is no raw page streaming and no periodic full-directory copy involved in normal replication.",{"id":149,"topic":9,"difficulty":150,"body":151,"options":152,"correct_key":142,"explanation":161},"019f8780-5f2f-742f-b9f6-42f3d7032d53",2,"`binlog_format` can be set to `STATEMENT`, `ROW`, or `MIXED`. What does `ROW` format actually record in the binary log for an `UPDATE`?",[153,155,157,159],{"key":136,"text":154},"The exact SQL text of the `UPDATE` statement, to be re-executed as-is on the replica",{"key":139,"text":156},"Only the primary key of the affected row, leaving the replica to look up the new values itself",{"key":142,"text":158},"The before\u002Fafter images of the actual rows that changed",{"key":145,"text":160},"A checksum of the affected page, used only to verify replica data integrity","Row-based replication (RBR) logs the actual data changes — the row's before image (for UPDATE\u002FDELETE) and after image — instead of the SQL statement. This makes replication deterministic even for statements that could behave differently on source and replica (e.g. those using `NOW()`, `RAND()`, or triggers with side effects), unlike statement-based replication which logs and re-executes the SQL text itself.",{"id":163,"topic":9,"difficulty":150,"body":164,"options":165,"correct_key":136,"explanation":174},"019f8780-5f2f-7c0e-808d-5eec579e5186","A developer writes a stored routine that calls `UUID()` to generate a value inserted into a table, and the server is running `binlog_format=STATEMENT`. Why is this risky for replication?",[166,168,170,172],{"key":136,"text":167},"`UUID()` is non-deterministic, so re-executing the same SQL statement on the replica could generate a different value than what was inserted on the source",{"key":139,"text":169},"`UUID()` cannot be used inside stored routines at all under statement-based replication and the statement will simply be rejected",{"key":142,"text":171},"Statement-based replication only supports numeric column types, so a UUID string column breaks replication",{"key":145,"text":173},"It is not risky; MySQL automatically detects `UUID()` and converts the statement to row-based on the fly regardless of `binlog_format`","Statement-based replication (SBR) re-runs the logged SQL on the replica, so any non-deterministic function (`UUID()`, `RAND()`, `NOW()` in some contexts, etc.) can produce different results on source and replica, causing data drift. This is exactly why MySQL introduced row-based replication and why `MIXED` format automatically switches to row-based logging for statements it detects as unsafe.",{"id":176,"topic":9,"difficulty":150,"body":177,"options":178,"correct_key":145,"explanation":187},"019f8780-5f30-7cb2-b560-56c1e39ced82","In modern MySQL replication terminology (8.0.23+), which command shows a replica's replication status, including how far behind it is from the source?",[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` (the modern name for the older `SHOW SLAVE STATUS`, both still supported) reports the replica's I\u002FO and SQL thread state, the source it is connected to, and `Seconds_Behind_Source` (formerly `Seconds_Behind_Master`), which indicates replication lag. `SHOW ENGINE INNODB STATUS` and `SHOW PROCESSLIST` are general-purpose diagnostics unrelated to replication status specifically.",{"id":189,"topic":9,"difficulty":150,"body":190,"options":191,"correct_key":142,"explanation":200},"019f8780-5f31-74c0-8bc7-1f9900917ab1","What is the main purpose of GTID (Global Transaction Identifier) based replication compared to classic file\u002Fposition-based replication?",[192,194,196,198],{"key":136,"text":193},"GTIDs remove the need for a binary log entirely, since transactions are tracked in a separate metadata table",{"key":139,"text":195},"GTIDs make replication synchronous by default instead of asynchronous",{"key":142,"text":197},"Every transaction gets a globally unique identifier, so a replica can be pointed at a new source and resume correctly without manually specifying a binlog file and position",{"key":145,"text":199},"GTIDs are only used to speed up `mysqldump` exports, not related to replica failover","With GTID-based replication (`GTID_MODE=ON`), each transaction is tagged with a unique ID (`source_uuid:transaction_id`). When repointing a replica to a new source (e.g. during failover), MySQL can automatically determine which transactions are missing by comparing GTID sets, instead of requiring an operator to manually track and specify the exact binlog file name and byte offset as in classic positional replication.",{"id":202,"topic":9,"difficulty":132,"body":203,"options":204,"correct_key":136,"explanation":213},"019f8780-5f31-7bef-8398-0b7c277d8529","By default, when a source commits a transaction and sends it to replicas, does it wait for any replica to confirm receipt before returning success to the client?",[205,207,209,211],{"key":136,"text":206},"No — default MySQL replication is asynchronous, so the source commits and returns success without waiting for any replica",{"key":139,"text":208},"Yes — the source always waits for every replica to apply the transaction before committing",{"key":142,"text":210},"Yes — the source waits for exactly one replica to acknowledge before committing, by default",{"key":145,"text":212},"It depends on the storage engine of the replicated tables, not on any replication setting","Standard (asynchronous) MySQL replication does not require any replica acknowledgment: the source commits locally and returns success to the client, then sends binlog events to replicas independently. This gives the best write latency but means a crash right after commit can lose transactions that never reached any replica — which is exactly the gap semi-synchronous replication addresses.",{"fields":215,"seniorities":394,"interview_shapes":395,"locales":400,"oauth":402,"question_count":405,"coach_enabled":406,"jd_match_enabled":406},[216,241,261,278,302,315,324,343,365,375,381,388],{"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":316,"name_en":6,"sort":317,"specializations":318},"Veritabanı",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,372],{"key":221,"name":222,"field":366},{"key":373,"name":374,"field":366},"test-automation","Test Automation",{"key":376,"name_tr":377,"name_en":377,"sort":378,"specializations":379},"data-engineer","Data Engineer",10,[380],{"key":221,"name":222,"field":376},{"key":382,"name_tr":383,"name_en":384,"sort":385,"specializations":386},"game-dev","Oyun Geliştirme","Game Development",11,[387],{"key":221,"name":222,"field":382},{"key":389,"name_tr":390,"name_en":390,"sort":391,"specializations":392},"ml-engineer","ML Engineer",12,[393],{"key":221,"name":222,"field":389},[14,15,16],{"junior":396,"mid":398,"senior":399},{"questions":397,"median_sec":3},20,{"questions":397,"median_sec":3},{"questions":397,"median_sec":3},[401,10],"tr",[403,404],"google","github",22200,true]