Availability and Scalability
đĸ 9. High Availability & Scalabilityâ
101. What is database clustering?â
Database Clustering āĻšāϞ⧠āĻāĻāĻžāϧāĻŋāĻ āϏāĻžāϧāĻžāϰāĻŖ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϏāĻžāϰā§āĻāĻžāϰāĻā§ (Node) āĻāĻŽāύāĻāĻžāĻŦā§ āĻāĻāϤā§āϰ⧠āϝā§āĻā§āϤ āĻāϰāĻžāϰ āĻāĻāĻāĻŋ āĻĒā§āϰāϝā§āĻā§āϤāĻŋ, āϝāĻžāϤ⧠āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻŦāĻž āĻāĻāĻāĻžāϰā§āϰ āĻāĻžāĻā§ āĻŽāύ⧠āĻšāϝāĻŧ āϝ⧠āϤāĻžāϰāĻž āĻāĻāĻāĻŋ āĻŽāĻžāϤā§āϰ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āϏāĻžāĻĨā§āĻ āϝā§āĻāĻžāϝā§āĻ āĻāϰāĻā§āĨ¤ āĻāĻāĻŋ āĻŽā§āϞāϤ āĻĄāĻžāĻāĻžāĻŦā§āϏāĻā§ āĻšāĻžāĻāϞāĻŋ āĻāĻā§āĻāϞā§āϝāĻžāĻŦāϞ (High Availability - HA) āĻāĻŦāĻ āϏā§āĻā§āϞā§āĻŦāϞ āĻāϰāĻžāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧāĨ¤
āϏāĻšāĻ āĻāĻĨāĻžāϝāĻŧ, āĻāĻāĻāĻŋ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āϏāĻžāϰā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤā§, āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰāĻā§ āĻāĻāϏāĻžāĻĨā§ āĻāĻžāύā§āĻā§āĻ āĻāϰ⧠āĻāĻāĻāĻŋ "āĻā§āϞāĻžāϏā§āĻāĻžāϰ" (Cluster) āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻā§āύ⧠āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰ āĻĄāĻžāĻāύ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ, āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āϰ āĻ āύā§āϝ āϏāĻžāϰā§āĻāĻžāϰāĻā§āϞ⧠āϤāĻāύ āĻĻāĻžāϝāĻŧāĻŋāϤā§āĻŦ āύāĻŋāϤ⧠āĻĒāĻžāϰā§, āĻĢāϞ⧠āϏāĻžāϰā§āĻāĻŋāϏ āĻāĻāύ⧠āĻŦāύā§āϧ āĻšāϝāĻŧ āύāĻžāĨ¤
Technical definition: Database clustering is the process of connecting two or more database servers to function as a single, coordinated logical unit. It is primarily designed to achieve high availability, fault tolerance, and load balancing by distributing database transactions and storage across multiple nodes.
Difference between active-active and active-passive clustering?â
| Feature | Active-Active Clustering | Active-Passive Clustering |
|---|---|---|
| āĻāϝāĻŧāĻžāϰā§āĻāĻŋāĻ āĻŽāĻĄā§āϞ | āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āϰ āϏāĻŦāĻā§āϞ⧠āύā§āĻĄ āĻāĻāϏāĻžāĻĨā§ āϏāĻāϞ āĻĨāĻžāĻā§ āĻāĻŦāĻ āϏāĻŦāĻā§āϞāĻŋāϤ⧠āϰāĻŋāĻĄ/āϰāĻžāĻāĻ āĻāϰāĻž āϝāĻžā§āĨ¤ | āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āύā§āĻĄ (Primary) āĻĒā§āϰāϧāĻžāύ āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰā§, āĻŦāĻžāĻāĻŋāĻā§āϞ⧠āĻŦā§āϝāĻžāĻāĻāĻĒ (Standby) āĻšāĻŋāϏā§āĻŦā§ āĻŦāϏ⧠āĻĨāĻžāĻā§āĨ¤ |
| āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻŋāĻ | āĻāĻāĻāĻžāϰā§āϰ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āϏāĻŦ āύā§āĻĄā§āϰ āĻŽāϧā§āϝ⧠āϏāĻŽāĻžāύāĻāĻžāĻŦā§ āĻāĻžāĻ āĻšā§ā§ āϝāĻžā§, āĻĢāϞ⧠āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏ āĻ āύā§āĻ āĻŦāĻžā§ā§āĨ¤ | āĻā§āύ⧠āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻŋāĻ āĻšā§ āύāĻž, āĻāĻžāϰāĻŖ āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻļā§āϧ⧠āĻāĻāĻāĻŋ āύā§āĻĄā§āĻ āĻāϏā§āĨ¤ |
| āĻĢā§āĻāϞāĻāĻāĻžāϰ (Failover) | āĻāĻāĻāĻŋ āĻĄāĻžāĻāύ āĻšāϞ⧠āĻ āύā§āϝāĻā§āϞ⧠āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ āĻāĻžāĻ āĻāĻžāϞāĻŋā§ā§ āϝāĻžā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āϰāĻ āĻĒāĻžā§ āύāĻžāĨ¤ | āĻĒā§āϰāĻžāĻāĻŽāĻžāϰāĻŋ āĻĄāĻžāĻāύ āĻšāϞ⧠āϏā§āĻā§āϝāĻžāύā§āĻĄāĻŦāĻžāĻ āύā§āĻĄ āĻāĻžāϞ⧠āĻšāϤ⧠āĻāĻāĻā§ āϏāĻŽāϝāĻŧ āύā§āϝāĻŧ (downtime āĻšāϤ⧠āĻĒāĻžāϰā§)āĨ¤ |
| āϰāĻŋāϏā§āϰā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ | āϏāĻŦ āϏāĻŽāϝāĻŧ āϏāĻŦ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻĒā§āϰāϏā§āϏāϰ āĻ āϰâā§āϝāĻžāĻŽ āĻāĻžāĻā§ āϞāĻžāĻā§ āĻŦāϞ⧠⧧ā§Ļā§Ļ% āϰāĻŋāϏā§āϰā§āϏ āĻāϰ āϏāĻĻā§āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϝāĻŧāĨ¤ | āĻŦā§āϝāĻžāĻāĻāĻĒ āύā§āĻĄ āĻ āϞāϏ āĻŦāϏ⧠āĻĨāĻžāĻāĻžāϝāĻŧ āϰāĻŋāϏā§āϰā§āϏā§āϰ āĻ āĻĒāĻāϝāĻŧ āĻšāϝāĻŧāĨ¤ |
| āĻāĻŽāĻĒā§āϞā§āĻā§āϏāĻŋāĻāĻŋ | āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ (data conflict) āϏāĻžāĻŽāϞāĻžāύ⧠āĻŦā§āĻļ āĻāĻāĻŋāϞ āĻ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞāĨ¤ | āĻāĻŽāĻĒā§āϞāĻŋāĻŽā§āύā§āĻ āĻāϰāĻž āĻ āύā§āĻ āϏāĻšāĻ āĻāĻŦāĻ āĻāĻŽ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞāĨ¤ |
How does failover work in clusters?â
Failover āĻšāϞ⧠āĻā§āύ⧠āύā§āĻĄ āĻā§āϰā§āϝāĻžāĻļ āĻāϰāϞ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻā§āϰāĻžāĻĢāĻŋāĻ āĻ āύā§āϝ āϏāĻāϞ āύā§āĻĄā§ āĻā§āϰāĻžāύā§āϏāĻĢāĻžāϰ āĻāϰāĻžāϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĨ¤
- āĻāĻāĻāĻŋ āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠āύā§āĻĄāĻā§āϞ⧠āύāĻŋāĻā§āĻĻā§āϰ āĻŽāϧā§āϝ⧠āϰā§āĻā§āϞāĻžāϰ "Heartbeat" āϏāĻŋāĻāύā§āϝāĻžāϞ āĻāĻĻāĻžāύ-āĻĒā§āϰāĻĻāĻžāύ āĻāϰ⧠(āϝā§āĻŽāύ: "āĻāĻŽāĻŋ āĻŦā§āĻāĻā§ āĻāĻāĻŋ, āϤā§āĻŽāĻŋ āĻāĻā§ āϤā§?")āĨ¤
- āϝāĻĻāĻŋ āĻā§āύ⧠āύā§āĻĄā§āϰ āĻšāĻžāϰā§āĻāĻŦāĻŋāĻ āĻāϝāĻŧā§āĻ āϏā§āĻā§āύā§āĻĄā§āϰ āĻāύā§āϝ āĻāϏāĻž āĻŦāύā§āϧ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ, āϤāĻāύ āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āϏāĻĢāĻāĻāϝāĻŧā§āϝāĻžāϰ (āϝā§āĻŽāύ: Zookeeper āĻŦāĻž Pacemaker) āϧāϰ⧠āύā§āϝāĻŧ āϝ⧠āύā§āĻĄāĻāĻŋ āĻŽāĻžāϰāĻž āĻā§āĻā§ āĻŦāĻž āĻĄāĻžāĻāύ āĻšāϝāĻŧā§āĻā§āĨ¤
- āϤāĻāύ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§āĻ āĻā§āϞāĻžāϏā§āĻāĻžāϰāĻāĻŋ āĻāĻ āĻŽā§āϤ āύā§āĻĄāĻāĻŋāĻā§ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻĨā§āĻā§ āϏāϰāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āϏāĻŽāϏā§āϤ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻ āύā§āϝ āϏāĻāϞ āύā§āĻĄāĻā§āϞā§āϤ⧠āĻĢāϰāĻāϝāĻŧāĻžāϰā§āĻĄ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻāϤ āĻĻā§āϰā§āϤ āĻšāϝāĻŧ āϝ⧠āĻāĻāĻāĻžāϰāϰāĻž āĻā§āύ⧠āĻŦāĻžāϧāĻžāĻ āĻ āύā§āĻāĻŦ āĻāϰā§āύ āύāĻžāĨ¤
102. What is database replication?â
Database Replication āĻšāϞ⧠āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰ āĻĨā§āĻā§ āĻāĻ āĻŦāĻž āĻāĻāĻžāϧāĻŋāĻ āĻ āύā§āϝ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻšā§āĻŦ āĻšā§ āĻāĻĒāĻŋ āĻŦāĻž āĻā§āϞā§āύ (Clone) āϤā§āϰāĻŋ āĻāϰ⧠āϰāĻžāĻāĻžāϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĨ¤ āĻā§āϞāĻžāϏā§āĻāĻžāϰāĻŋāĻ āϝā§āĻāĻžāύ⧠āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏ āĻāĻŦāĻ āϞā§āĻĄ āĻļā§āϝāĻŧāĻžāϰāĻŋāĻāϝāĻŧā§āϰ āĻāĻĒāϰ āĻā§āϰ āĻĻā§āϝāĻŧ, āϰā§āĻĒā§āϞāĻŋāĻā§āĻļāύ āϏā§āĻāĻžāύ⧠āĻĄā§āĻāĻžāϰ āĻŦā§āϝāĻžāĻāĻāĻĒ āĻāĻŦāĻ āϰāĻŋāĻĄāĻŋāĻ āϏā§āĻĒāĻŋāĻĄ āĻŦāĻžāĻĄāĻŧāĻžāύā§āϰ āĻāĻĒāϰ āĻā§āϰ āĻĻā§āϝāĻŧāĨ¤
āĻāϰ āĻŽā§āϞ āϏā§āĻŦāĻŋāϧāĻž āĻšāϞā§âāϝāĻĻāĻŋ āĻŽā§āύ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠(Master) āĻā§āύ⧠āĻāĻžāϰāĻŖā§ āĻĄā§āĻāĻž āĻĄāĻŋāϞāĻŋāĻ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ āĻŦāĻž āĻšāĻžāϰā§āĻĄāĻĄāĻŋāϏā§āĻ āĻĒā§āĻĄāĻŧā§ āϝāĻžāϝāĻŧ, āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻ āύā§āϝāĻžāύā§āϝ āĻāĻĒāĻŋ (Slave) āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻā§āĻŦ āϏāĻšāĻā§āĻ āĻāĻĻā§āϧāĻžāϰ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤
Technical definition: Database replication is the continuous and automated copying of data changes from a primary database instance to one or more secondary database instances. It ensures data redundancy, increases query throughput (by scaling reads), and minimizes data loss.
Types of replication (synchronous vs asynchronous)?â
ā§§. Synchronous Replication (āϏāĻŋāύāĻā§āϰā§āύāĻžāϏ):
- āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§: āϝāĻāύ āĻāĻāĻāĻžāϰ āĻŽā§āϞ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠(Master) āĻā§āύ⧠āĻĄā§āĻāĻž āϏā§āĻ āĻāϰā§, āϤāĻāύ āĻŽāĻžāϏā§āĻāĻžāϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϏā§āĻ āĻĄā§āĻāĻž āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āϏā§āϞā§āĻ (Slave) āĻĄāĻžāĻāĻžāĻŦā§āϏāĻ ā§āϞā§āϤ⧠āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ āϝāϤāĻā§āώāĻŖ āύāĻž āĻ āύā§āϝ āϏā§āϞā§āĻāĻā§āϞ⧠āĻāύāĻĢāĻžāϰā§āĻŽ āĻāϰ⧠āϝ⧠"āĻšā§āϝāĻžāĻ, āĻāĻŽāϰāĻž āĻāĻĒāĻĄā§āĻ āĻĒā§āϝāĻŧā§āĻāĻŋ", āϤāϤāĻā§āώāĻŖ āĻŽāĻžāϏā§āĻāĻžāϰ āĻāĻāĻāĻžāϰāĻā§ 'Success' āĻŽā§āϏā§āĻ āĻĻā§āϝāĻŧ āύāĻžāĨ¤
- āϏā§āĻŦāĻŋāϧāĻž: āĻĄā§āĻāĻžāϰ ā§§ā§Ļā§Ļ% āĻā§āϝāĻžāϰāĻžāύā§āĻāĻŋ (Zero Data Loss)āĨ¤
- āĻ āϏā§āĻŦāĻŋāϧāĻž: āϏāĻŋāϏā§āĻā§āĻŽ āĻ āύā§āĻ āϏā§āϞ⧠āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ, āĻāĻžāϰāĻŖ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāĻĒāĻĄā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻ āύā§āϝāĻā§āϞā§āϰ āĻāϤā§āϤāϰā§āϰ āĻ āĻĒā§āĻā§āώāĻžāϝāĻŧ āĻĨāĻžāĻāϤ⧠āĻšāϝāĻŧāĨ¤
⧍. Asynchronous Replication (āĻ ā§āϝāĻžāϏāĻŋāύāĻā§āϰā§āύāĻžāϏ):
- āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§: āĻŽāĻžāϏā§āĻāĻžāϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĄā§āĻāĻž āĻĸā§āĻāĻž āĻŽāĻžāϤā§āϰāĻ āϏ⧠āĻāĻāĻāĻžāϰāĻā§ 'Success' āĻŽā§āϏā§āĻ āĻĻāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧāĨ¤ āĻāϰāĻĒāϰ āϏ⧠āĻāϰāĻžāĻŽāϏ⧠āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄā§ āύāĻŋāĻā§āϰ āϏā§āĻŦāĻŋāϧāĻžāĻŽāϤ⧠āϏāĻŽāϝāĻŧā§ āĻĄā§āĻāĻžāĻā§āϞ⧠āϏā§āϞā§āĻā§āϰ āĻāĻžāĻā§ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
- āϏā§āĻŦāĻŋāϧāĻž: āĻ āϤā§āϝāύā§āϤ āĻĢāĻžāϏā§āĻ āĻāĻŦāĻ āĻšāĻžāĻ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏāĨ¤
- āĻ āϏā§āĻŦāĻŋāϧāĻž: āϝāĻĻāĻŋ āĻŦā§āϝāĻžāĻāĻā§āϰāĻžāĻāύā§āĻĄā§ āϏāĻŋāĻā§āĻ āĻšāĻāϝāĻŧāĻžāϰ āĻāĻā§āĻ āĻŽāĻžāϏā§āĻāĻžāϰ āĻĄāĻžāĻāĻžāĻŦā§āϏāĻāĻŋ āĻā§āϰā§āϝāĻžāĻļ āĻāϰ⧠āϝāĻžāϝāĻŧ, āϤāĻŦā§ āϏāϰā§āĻŦāĻļā§āώ āĻĄā§āĻāĻžāĻā§āϞ⧠āĻāĻŋāϰāϤāϰ⧠āĻšāĻžāϰāĻŋāϝāĻŧā§ āϝā§āϤ⧠āĻĒāĻžāϰ⧠(Data Loss).
What is replication lag and how to minimize it?â
Replication Lag āĻšāϞ⧠āĻŽāĻžāϏā§āĻāĻžāϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻā§āύ⧠āĻĄā§āĻāĻž āĻāĻĒāĻĄā§āĻ āĻšāĻāϝāĻŧāĻžāϰ āĻĒāϰ, āϏā§āĻāĻŋ āϏā§āϞā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĒā§āĻāĻāĻžāϤ⧠āĻāĻŦāĻ āĻāĻĒāĻĄā§āĻ āĻšāϤ⧠āĻ āĻŋāĻ āϝāϤāĻā§āĻā§ āϏāĻŽāϝāĻŧ āϞāĻžāĻā§, āϏā§āĻ āĻĄāĻŋāϞ⧠(Delay) āĻŦāĻž āϏāĻŽāϝāĻŧā§āϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝāĻā§ āĻŦā§āĻāĻžāϝāĻŧāĨ¤
- āĻā§āĻāĻžāĻŦā§ āĻāĻŽāĻžāĻŦā§āύ?
- āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻāĻžāϞ⧠āĻāϰāĻž: āĻĄāĻžāĻāĻžāĻŦā§āϏāĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠āϞā§āĻā§āύā§āϏāĻŋ āĻŦāĻž āĻĒāĻŋāĻ āĻāĻžāĻāĻŽ (Ping time) āĻāĻŽāĻžāύā§āϰ āĻāύā§āϝ āĻĒā§āϰāĻžāĻāĻā§āĻ āĻŦāĻž āĻĄā§āĻĄāĻŋāĻā§āĻā§āĻĄ āĻĢāĻžāϏā§āĻ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāĨ¤
- āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ (Parallel Replication): āϏā§āϞā§āĻ āύā§āĻĄā§ āϏāĻŋāĻā§āĻā§āϞ-āĻĨā§āϰā§āĻĄā§āϰ āĻŦāĻĻāϞ⧠āĻŽāĻžāϞā§āĻāĻŋ-āĻĨā§āϰā§āĻĄ āϰā§āĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāĻžāϞ⧠āĻāϰāĻž, āϝāĻžāϤ⧠āĻāĻāϏāĻžāĻĨā§ āĻ āύā§āĻ āĻĄā§āĻāĻž āĻāĻĒāĻĄā§āĻ āĻšāϤ⧠āĻĒāĻžāϰ⧠(MySQL ā§Ģ.ā§+ āĻ āĻāĻ āĻĢāĻŋāĻāĻžāϰāĻāĻŋ āĻ āϏāĻžāϧāĻžāϰāĻŖ āĻāĻžāĻ āĻāϰā§)āĨ¤
- āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĄā§āĻāĻž āĻāĻĄāĻŧāĻžāύā§: āϰā§āĻĒā§āϞāĻŋāĻā§āĻļāύ āϞāĻā§ āĻŦāĻĄāĻŧ āĻŦāĻž āĻāĻāĻŋāϞ āĻā§āϝāĻŧā§āϰāĻŋ (āϝā§āĻŽāύ āĻĒā§āϰ⧠āĻā§āĻŦāĻŋāϞ āĻāĻāϏāĻžāĻĨā§ āĻāĻĒāĻĄā§āĻ) āύāĻž āĻāĻžāϞāĻžāύā§āĨ¤
103. What is database sharding?â
Database Sharding āĻšāϞ⧠āĻāĻāĻāĻŋ āĻŦāĻŋāĻļāĻžāϞ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻā§āĻŦāĻŋāϞāĻā§ āĻā§āĻā§ āĻā§āĻ āĻā§āĻ āĻā§āĻāϰā§āϤ⧠(Shard) āĻāĻžāĻ āĻāϰ⧠āĻāϞāĻžāĻĻāĻž āĻāϞāĻžāĻĻāĻž āϏāĻžāϰā§āĻāĻžāϰ āĻŽā§āĻļāĻŋāύā§āϰ āĻšāĻžāϰā§āĻĄāĻĄāĻŋāϏā§āĻā§ āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āϰāĻžāĻāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋāĨ¤ āĻāĻāĻŋ āĻŽā§āϞāϤ āϏā§āĻā§āϞā§āĻŦāĻŋāϞāĻŋāĻāĻŋāϰ (Scalability) āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻšāĻžāϤāĻŋāϝāĻŧāĻžāϰāĨ¤
āϝāĻāύ āĻāĻāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻĒāĻā§āώ⧠āϞāĻžāĻ āϞāĻžāĻ āĻāĻāĻāĻžāϰā§āϰ āĻĄā§āĻāĻž āϰāĻžāĻāĻž āϏāĻŽā§āĻāĻŦ āĻšāϝāĻŧ āύāĻž, āϤāĻāύ āĻĄā§āĻāĻžāĻā§āϞā§āĻā§ āĻļāĻžāϰā§āĻĄāĻŋāĻ āĻāϰ⧠āĻāĻāĻžāϧāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āϏāĻžāĻšāĻžāϝā§āϝ āύā§āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤
Technical definition: Sharding is an architectural pattern for horizontal partitioning of databases. It divides a large unified dataset into smaller, distinct chunks (shards) across multiple autonomous servers to distribute the data storage and query processing load linearly.
Horizontal vs vertical partitioning?â
| Feature | Vertical Partitioning | Horizontal Partitioning (Sharding) |
|---|---|---|
| āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§? | āĻā§āĻŦāĻŋāϞāĻā§ āĻāϞāĻžāĻŽ (Column) āĻ āύā§āϝāĻžāϝāĻŧā§ āĻāĻžāĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ | āĻā§āĻŦāĻŋāϞāĻā§ āϰ⧠(Row) āĻ āύā§āϝāĻžāϝāĻŧā§ āĻāĻžāĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ |
| āĻāĻĻāĻžāĻšāϰāĻŖ | āĻāĻāĻāĻŋ āĻāĻāĻāĻžāϰ āĻā§āĻŦāĻŋāϞ⧠⧍ā§Ļā§Ļ āĻāϞāĻžāĻŽ āĻĨāĻžāĻāϞā§, "Login Info" ā°ā° āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻŦāĻ "Profile Info" āĻāϰā§āĻ āϏāĻžāϰā§āĻāĻžāϰ⧠āϰāĻžāĻāĻžāĨ¤ | āĻāĻāĻāĻžāϰā§āϰ āϞā§āĻā§āĻļāύ āĻ āύā§āϝāĻžāϝāĻŧā§âāĻŦāĻžāĻāϞāĻžāĻĻā§āĻļā§āϰ āĻāĻāĻāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰ ā§§ āĻ āĻāĻŦāĻ āĻāύā§āĻĄāĻŋāϝāĻŧāĻžāϰ āĻāĻāĻāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰ ⧍ āĻ āϰāĻžāĻāĻžāĨ¤ |
| āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāĻžāϰāĻŖ | āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ (āϝā§āĻŽāύ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻāϞāĻžāĻĻāĻž āϰāĻžāĻāĻž) āĻŦāĻž āϝā§āϏāĻŦ āĻāϞāĻžāĻŽ āĻŽāĻžāύā§āώ āĻā§āĻŦ āĻāĻŽ āĻĒāĻĄāĻŧā§ āϏā§āĻā§āϞ⧠āϏāϰāĻŋāϝāĻŧā§ āύā§āϝāĻŧāĻžāĨ¤ | āĻŦāĻŋāĻļāĻžāϞ āĻĄā§āĻāĻžāϏā§āĻ āĻāĻŦāĻ āĻšāĻžāĻ āĻā§āϰāĻžāĻĢāĻŋāĻ āϞā§āĻĄ āĻŽā§āϝāĻžāύā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝāĨ¤ |
| āϏā§āĻā§āϞāĻŋāĻ | āϏā§āĻŽāĻŋāϤāĨ¤ āĻāĻāϏāĻŽāϝāĻŧ āĻāϞāĻžāĻŽ āĻāϰ āĻāĻžāĻ āĻāϰāĻž āϝāĻžāϝāĻŧ āύāĻžāĨ¤ | āĻāύāϞāĻŋāĻŽāĻŋāĻā§āĻĄāĨ¤ āύāϤā§āύ āύāϤā§āύ āϏāĻžāϰā§āĻāĻžāϰ āϝā§āĻ āĻāϰāĻž āϏāĻšāĻāĨ¤ |
How do you handle cross-shard queries?â
Cross-shard Query āĻšāϞ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āĻā§āϝāĻŧāĻžāϰāĻŋ āϝāĻž āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻžāϧāĻŋāĻ āϏāĻžāϰā§āĻāĻžāϰ āĻŦāĻž Shard āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻāύāϤ⧠āĻšāϝāĻŧāĨ¤ (āϝā§āĻŽāύ: "āĻŦāĻŋāĻļā§āĻŦā§āϰ āϏāĻŦ āĻĻā§āĻļā§āϰ āĻāĻāĻāĻžāϰāĻĻā§āϰ āĻāĻĄāĻŧ āĻŦāϝāĻŧāϏ āĻāϤ?")āĨ¤ āĻāĻā§āϞ⧠āϏāĻžāϧāĻžāϰāĻŖāϤ āĻā§āĻŦ āϏā§āϞ⧠āĻāĻŦāĻ āĻŦā§āϝāϝāĻŧāĻŦāĻšā§āϞ āĻšāϝāĻŧāĨ¤
- āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāĻŦā§āύ?
- Query Router: āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āϰāĻžāĻāĻāĻžāϰ (āϝā§āĻŽāύ: Mongos) āĻĒā§āϝāĻžāϰāĻžāϞāĻžāϞāĻāĻžāĻŦā§ āϏāĻŽāϏā§āϤ Shard āĻ āĻā§āϝāĻŧāĻžāϰāĻŋ āĻĒāĻžāĻ āĻžāϝāĻŧ, āĻāϰāĻĒāϰ āϏāĻŦāĻžāϰ āĻĨā§āĻā§ āϰā§āĻāĻžāϞā§āĻ āύāĻŋāϝāĻŧā§ āύāĻŋāĻā§āϰ āĻŽā§āĻŽāϰāĻŋāϤ⧠āĻāĻŽāĻž āĻāϰ⧠āĻāĻŦāĻ āĻāĻāϤā§āϰāĻŋāϤ (Merge/Aggregate) āĻāϰ⧠āĻā§āϞāĻžāϝāĻŧā§āύā§āĻāĻā§ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
- MapReduce/Aggregation: āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻā§āĻĄ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ MapReduce āĻŦāĻž Aggregate āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž, āϝāĻžāϤ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏāĻā§āϞ⧠āύāĻŋāĻā§āĻĻā§āϰ āĻĄā§āĻāĻžāϰ āϏāĻžāĻŽāĻžāϰāĻŋ āĻāϰ⧠āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
- Data Localization (Best Practice): āĻļāĻžāϰā§āĻĄ āĻŽā§āϞ āĻāĻžāĻŦāĻŋāĻāĻžāĻ āĻŋ āĻāĻŽāύāĻāĻžāĻŦā§ āϏāĻŋāϞā§āĻā§āĻ āĻāϰāĻž (āϝā§āĻŽāύ
user_idāĻŦāĻžcountry), āϝāĻžāϤ⧠āĻ āϧāĻŋāĻāĻžāĻāĻļ āĻā§āϝāĻŧā§āϰāĻŋ āϏāĻŋāĻā§āĻā§āϞ āĻļāĻžāϰā§āĻĄā§āĻ āϏāĻŽāĻžāϧāĻžāύ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤
104. What is read replica?â
Read Replica āĻšāϞ⧠āĻŽā§āϞ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ (Master) āĻāĻāĻāĻŋ āĻāĻĒāĻŋ āĻŦāĻž āĻā§āϞā§āύ, āϝāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϰāĻŋāĻĄ āĻ āĻĒāĻžāϰā§āĻļāύ (SELECT queries) āĻāϰāĻžāϰ āĻāύā§āϝ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻžāύ⧠āĻĄā§āĻāĻž āĻļā§āϧ⧠āĻŽāĻžāϏā§āĻāĻžāϰ āĻĨā§āĻā§ āĻāϏā§; āĻā§āĻ āĻāĻ āϰā§āĻĒā§āϞāĻŋāĻāĻžāϤ⧠āύāϤā§āύ āĻĄā§āĻāĻž Insert āĻŦāĻž Update āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āĻāĻ āύāĻŽā§āϞāĻ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤
Technical definition: A read replica is a secondary instance of a database that is maintained as an exact, read-only copy of the primary database through asynchronous replication. It is used to offload read-heavy traffic from the master database.
How does it improve read performance?â
āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻā§āϞā§āϤ⧠āϞā§āĻāĻžāϰ āĻā§āϝāĻŧā§ āĻĒāĻĄāĻŧāĻžāϰ (Read) āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻ āύā§āĻ āĻŦā§āĻļāĻŋ āĻĨāĻžāĻā§ (āϝā§āĻŽāύ: āύāĻŋāĻāĻ āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻ āĻŦāĻž āĻ-āĻāĻŽāĻžāϰā§āϏ⧠⧧ āĻāύ āĻĒā§āϏā§āĻ āĻāϰ⧠āĻāϰ ā§§ā§Ļ āĻšāĻžāĻāĻžāϰ āĻāύ āϤāĻž āĻĒāĻĄāĻŧā§)āĨ¤
- āϝāĻĻāĻŋ āĻŽā§āϞ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻāϏāĻŦ āĻĒāĻĄāĻŧāĻžāϰ āĻāĻžāĻĒ āĻĒāĻĄāĻŧā§, āϤāĻŦā§ āĻāĻāĻŋ āϏā§āϞ⧠āĻšāϝāĻŧā§ āϝāĻžāĻŦā§ āĻāĻŦāĻ āύāϤā§āύ āϰāĻžāĻāĻ āĻ āĻĒāĻžāϰā§āĻļāύāĻ āĻŦāĻžāϧāĻžāĻā§āϰāϏā§āϤ āĻšāĻŦā§āĨ¤
- Read replica āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϤāĻžāϰ āϏāĻŽāϏā§āϤ
SELECTāĻā§āϝāĻŧāĻžāϰāĻŋ āϰā§āĻĒā§āϞāĻŋāĻāĻžāϝāĻŧ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ - āĻāϰ āĻĢāϞ⧠āĻŽāĻžāϏā§āĻāĻžāϰ āύā§āĻĄāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĄā§āĻāĻž āϏā§āĻ (Write) āĻāϰāĻžāϰ āĻāĻžāĻā§ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻĢā§āĻāĻžāϏ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āϝāĻž āϰāĻžāĻāĻ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏ āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧāĨ¤ āĻ āύā§āϝāĻĻāĻŋāĻā§ āĻ āύā§āĻāĻā§āϞ⧠āϰā§āĻĒā§āϞāĻŋāĻāĻž āĻĨāĻžāĻāĻžāϰ āĻāĻžāϰāĻŖā§ āĻšāĻžāĻāĻžāϰ āĻšāĻžāĻāĻžāϰ āĻāĻāĻāĻžāϰ āĻĢā§āϰā§āϝāĻžāĻāĻļāύ-āĻ āĻĢ-āϏā§āĻā§āύā§āĻĄā§ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰā§āĨ¤
What about eventual consistency issues?â
āϝā§āĻšā§āϤ⧠Read Replica āϏāĻžāϧāĻžāϰāĻŖāϤ Asynchronous Replication āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϤāĻžāĻ āĻāϰ āϏāĻŦāĻā§āϝāĻŧā§ āĻŦāĻĄāĻŧ āϏāĻŽāϏā§āϝāĻž āĻšāϞ⧠Eventual Consistency āĻŦāĻž āĻĄā§āĻāĻž āĻĻā§āϰāĻŋāϤ⧠āϏāĻŋāĻā§āĻ āĻšāĻāϝāĻŧāĻž (Replication Lag)āĨ¤
- āϏāĻŽāϏā§āϝāĻž: āĻāĻāĻāύ āĻāĻāĻāĻžāϰ āϤāĻžāϰ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āĻāĻĒāĻĄā§āĻ āĻāϰ⧠(āĻŽāĻžāϏā§āĻāĻžāϰ āύā§āĻĄā§) āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āϰāĻŋāĻĢā§āϰā§āĻļ āĻĻāĻŋāϞāĨ¤ āĻāĻŋāύā§āϤ⧠āϰāĻŋāĻĢā§āϰā§āĻļā§āϰ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻā§āϞ Read Replica āϤā§, āϝā§āĻāĻžāύ⧠āĻĄā§āĻāĻžāĻāĻŋ āĻāĻāύ⧠āϏāĻŋāĻā§āĻ āĻšāϝāĻŧā§ āĻāϏā§āύāĻŋāĨ¤ āĻĢāϞ⧠āĻāĻāĻāĻžāϰ āϤāĻžāϰ āĻĒā§āϰā§āύ⧠āĻĒā§āϰā§āĻĢāĻžāĻāϞ āĻāĻŦāĻŋāĻ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āĨ¤
- āϏāĻŽāĻžāϧāĻžāύ:
- Critical Reads: āĻāĻāĻžāĻāύā§āĻ āĻŦā§āϝāĻžāϞā§āύā§āϏ āĻā§āĻ āĻŦāĻž āĻāĻāĻāĻžāϰ āĻāĻĒāĻĄā§āĻā§āϰ āĻāĻžāϏā§āĻ āĻĒāϰā§āϰ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻāĻā§āϞā§āĻā§ āĻā§āϰāĻĒā§āϰā§āĻŦāĻ (Force) āĻŽāĻžāϏā§āĻāĻžāϰ āύā§āĻĄ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāϤ⧠āĻŦāϞāĻž (Read-after-write consistency)āĨ¤
- āĻā§āϝāĻžāĻļ āĻŋāĻ (Caching): āĻāĻāĻāĻžāϰā§āϰ āϏā§āĻļāύ āĻŦāĻž Redis āĻ āĻĄā§āĻāĻž āĻā§āϝāĻžāĻļ āĻāϰ⧠āϰāĻžāĻāĻž, āϝāĻžāϤ⧠āϰā§āĻĒā§āϞāĻŋāĻāĻž āĻāĻĒāĻĄā§āĻ āĻšāĻāϝāĻŧāĻžāϰ āĻāĻ āĻĒāϰā§āϝāύā§āϤ āĻā§āϝāĻžāĻļ āĻĨā§āĻā§ āϞā§āĻā§āϏā§āĻ āĻĄā§āĻāĻž āĻĻā§āĻāĻžāύ⧠āϝāĻžāϝāĻŧāĨ¤
105. What is load balancing for databases?â
Load Balancing āĻšāϞ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž, āϝāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻāĻāϤ āĻā§āϰāĻžāĻĢāĻŋāĻāĻā§ (āĻā§āϝāĻŧā§āϰāĻŋ āĻŦāĻž āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ) āĻāĻāĻžāϧāĻŋāĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻŽāϧā§āϝ⧠āϏā§āώāĻŽāĻāĻžāĻŦā§ āĻŦāύā§āĻāύ (Distribute) āĻāϰ⧠āĻĻā§āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ āĻāϰ āĻĢāϞ⧠āĻā§āύ⧠āĻāĻāĻ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻāĻĒāϰ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻžāĻĒ āĻĒāĻĄāĻŧā§ āύāĻž āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻā§āϰā§āϝāĻžāĻļ āĻāϰāĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āĻ āύā§āĻ āĻāĻŽā§ āϝāĻžāϝāĻŧāĨ¤
Technical definition: Database load balancing is the seamless distribution of incoming client connections and query requests across a cluster of database instances to maximize throughput, minimize latency, and ensure high availability.
How do you distribute read and write operations?â
āĻĄāĻžāĻāĻžāĻŦā§āϏ āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰāĻā§āϞ⧠(āϝā§āĻŽāύ: ProxySQL, PgBouncer, HAProxy) āĻā§āϰāĻžāĻĢāĻŋāĻ ëļ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏā§āĻŽāĻžāϰā§āĻ āĻŽā§āĻāĻžāύāĻŋāĻāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϝāĻžāĻā§ Read/Write Splitting āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤
- āϰāĻžāĻāĻ āϏā§āĻĒā§āϞāĻŋāĻāĻŋāĻ (Write Routing): āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āĻāϏāĻāĻŋāĻāĻāϞ (SQL) āĻā§āϝāĻŧāĻžāϰāĻŋ āĻĒāĻĄāĻŧā§ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰ⧠āĻāĻāĻŋ
INSERT,UPDATEāĻŦāĻžDELETEāĻā§āϝāĻŧāĻžāϰāĻŋ āĻāĻŋ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻšāϝāĻŧ, āϤāĻŦā§ āϏ⧠āĻāĻāĻŋāĻā§ āϏāϰāĻžāϏāϰāĻŋ āĻļā§āϧ⧠Master āĻŦāĻž Primary Node āĻ āĻĒāĻžāĻ āĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧāĨ¤ - āϰāĻŋāĻĄ āϏā§āĻĒā§āϞāĻŋāĻāĻŋāĻ (Read Routing): āϝāĻĻāĻŋ āĻāĻāĻŋ
SELECTāĻā§āϝāĻŧāĻžāϰāĻŋ āĻšāϝāĻŧ, āϤāĻŦā§ āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ Round-Robin āĻŦāĻž Least-Connections āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻŋāĻā§ āĻŦāĻŋāĻāĻŋāύā§āύ Read Replicas āĻŦāĻž Secondary Nodes āĻāϰ āĻŽāϧā§āϝ⧠āĻāĻžāĻ āĻāϰ⧠āĻĻā§āϝāĻŧāĨ¤
What is connection pooling at load balancer level?â
āĻāĻāĻāĻŋ āĻāĻžāύā§āĻāĻļāύ āϤā§āϰāĻŋ āĻāϰāĻž (Authentication āĻāĻŦāĻ Memory allocation) āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻāύā§āϝ āĻ āύā§āĻ āĻāϰā§āĻā§ (Expensive) āĻāĻžāĻāĨ¤
- Connection Pooling: āϝāĻāύ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĨā§āĻā§ āĻĄā§āĻāĻž āύāĻŋāϝāĻŧā§ āĻāĻžāύā§āĻāĻļāύ āĻā§āĻĄāĻŧā§ āĻĻā§āϝāĻŧ, āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰ āϏā§āĻ āĻāĻžāύā§āĻāĻļāύāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĨā§āĻā§ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻŦāύā§āϧ āύāĻž āĻāϰ⧠"āĻĒā§āϞ" (Pool) āĻŦāĻž āϰāĻŋāĻāĻžāϰā§āĻā§ āϰā§āĻā§ āĻĻā§āϝāĻŧāĨ¤
- āĻāϰāĻĒāϰ āύāϤā§āύ āĻā§āĻ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāϰāϞ⧠āϤāĻžāĻā§ āĻāĻā§āϰ āϏā§āĻ āϰā§āĻĄāĻŋāĻŽā§āĻĄ āĻāĻžāύā§āĻāĻļāύāĻāĻŋ āϧāϰāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧāĨ¤ āĻāϤ⧠āĻŦāĻžāϰāĻŦāĻžāϰ āĻāĻžāύā§āĻāĻļāύ āĻā§āϞāĻž āĻāĻŦāĻ āĻŦāύā§āϧ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧāĻā§āĻā§ āĻŦā§āĻāĻā§ āϝāĻžāϝāĻŧ āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻšāĻžāĻāĻžāϰ āĻšāĻžāĻāĻžāϰ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āύāĻŋāĻŽāĻŋāώā§āĻ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
106. What is failover and failback?â
Failover āĻāĻŦāĻ Failback āĻšāϞ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻāĻŽāĻžāϰā§āĻā§āύā§āϏāĻŋ āϰā§āϏāĻāĻŋāĻ āϏāĻŋāϏā§āĻā§āĻŽāĨ¤
Failover: āĻāĻāĻŋ āĻšāϞ⧠āĻŽā§āϞ āϏāĻžāϰā§āĻāĻžāϰ (Primary) āĻā§āύ⧠āĻāĻžāϰāĻŖā§ āĻā§āϰā§āϝāĻžāĻļ āĻāϰāϞ⧠āĻŦāĻž āĻĄāĻžāĻāύ āĻšāϝāĻŧā§ āĻā§āϞā§, āϏāĻŽā§āĻĒā§āϰā§āĻŖ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻŦāĻž āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϏāĻŽāϏā§āϤ āĻĻāĻžāϝāĻŧāĻŋāϤā§āĻŦ āĻāĻŦāĻ āĻā§āϰāĻžāĻĢāĻŋāĻ āϏā§āĻā§āύā§āĻĄāĻžāϰāĻŋ āĻŦāĻž āϏā§āĻā§āϝāĻžāύā§āĻĄāĻŦāĻžāĻ (Standby) āϏāĻžāϰā§āĻāĻžāϰ⧠āĻļāĻŋāĻĢāĻ āĻāϰ⧠āĻĻā§āϝāĻŧāĻžāϰ āĻĒ ā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĨ¤
- āĻāĻĻāĻžāĻšāϰāĻŖ: āĻā§āύāĻžāϰā§āĻāϰ āĻāĻžāϞ⧠āĻšāĻāϝāĻŧāĻžāϰ āĻŽāϤā§āĨ¤ āĻŦāĻŋāĻĻā§āϝā§ā§ (Primary) āĻāϞ⧠āĻā§āϞ⧠āĻā§āύāĻžāϰā§āĻāϰ (Secondary) āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻžāϞ⧠āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤
Failback: āĻāĻāĻŋ āĻšāϞ⧠āĻĄāĻžāĻāύ āĻšāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻž āĻŽā§āϞ āϏāĻžāϰā§āĻāĻžāϰāĻāĻŋ āĻāĻŦāĻžāϰ āĻŽā§āϰāĻžāĻŽāϤ āĻŦāĻž āϰāĻŋāĻāĻāĻžāϰ āĻāϰāĻžāϰ āĻĒāϰ, āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āϏāĻžāϰā§āĻāĻžāϰ āĻĨā§āĻā§ āĻā§āϰāĻžāĻĢāĻŋāĻ āĻāĻŦāĻ āĻĻāĻžāϝāĻŧāĻŋāϤā§āĻŦāĻā§āϞ⧠āĻĒā§āϰā§āĻŦā§āϰ āĻŽā§āϞ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻŦāĻžāϰ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻāύāĻžāϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĨ¤
- āĻāĻĻāĻžāĻšāϰāĻŖ: āĻŦāĻŋāĻĻā§āϝā§ā§ āĻĢāĻŋāϰ⧠āĻāϏāĻžāϰ āĻĒāϰ āĻā§āύāĻžāϰā§āĻāϰ āĻŦāύā§āϧ āĻšāϝāĻŧā§ āĻāĻŦāĻžāϰ āĻŦāĻŋāĻĻā§āϝā§āϤ⧠āϞāĻžāĻāύ āĻāϞ⧠āϝāĻžāĻāϝāĻŧāĻžāĨ¤
How does automatic failover work?â
- āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠āĻĨāĻžāĻāĻž āύā§āĻĄāĻā§āϞ⧠āĻāĻā§ āĻ āĻĒāϰā§āϰ āϏāĻžāĻĨā§ Heartbeat Monitoring āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āύāĻāϰāĻĻāĻžāϰāĻŋ āϰāĻžāĻā§āĨ¤
- āĻāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻāĻāĻāĻŋ āĻĨāĻžāϰā§āĻĄ-āĻĒāĻžāϰā§āĻāĻŋ āĻā§āϞ (āϝā§āĻŽāύ: MHA For MySQL, Patroni for PostgreSQL) āĻĨāĻžāĻā§ āϝāĻžāĻā§ "Witness" āĻŦāĻž āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻ āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤
- āϝāĻāύ Primary āύā§āĻĄāĻāĻŋ āĻĄāĻžāĻāύ āĻšāϝāĻŧ, āĻāĻāĻāύā§āϏ āύā§āĻĄ āϤāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āĨ¤ āĻāϰāĻĒāϰ āϏ⧠āϏāĻŦāĻā§āϝāĻŧā§ āĻāĻĒ-āĻā§-āĻĄ ā§āĻ Secondary āύā§āĻĄāĻāĻŋāĻā§ āĻĒā§āϰāĻŽā§āĻļāύ āĻĻāĻŋāϝāĻŧā§ (Promote) āύāϤā§āύ Primary āĻŦāĻžāύāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āϞā§āĻĄ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻžāϰā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āϏāĻŽāϏā§āϤ āĻā§āϰāĻžāĻĢāĻŋāĻ āύāϤā§āύ Primary āϤ⧠āĻā§āϰāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧāĨ¤
What is split-brain problem?â
Split-brain āĻšāϞ⧠āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āϰ āĻāĻāĻāĻŋ āĻāϰāĻŽ āĻŦāĻŋāĻā§āώāĻŋāĻāĻžāĻŽā§ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ (Disastrous state)āĨ¤
- āĻā§āĻāĻžāĻŦā§ āĻšāϝāĻŧ? āĻ āύā§āĻ āϏāĻŽāϝāĻŧ āĻĻā§āĻāĻŋ āύā§āĻĄ (Master āĻāĻŦāĻ Standby) āĻŦā§āĻāĻā§ āĻĨāĻžāĻā§, āĻāĻŋāύā§āϤ⧠āϤāĻžāĻĻā§āϰ āĻŽāϧā§āϝāĻāĻžāϰ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻā§āĻŦāϞāĻāĻŋ āĻāĻŋāĻāĻĄāĻŧā§ āϝāĻžāϝāĻŧāĨ¤ āϤāĻāύ Standby āύā§āĻĄ āĻāĻžāĻŦā§ āϝ⧠Master āĻŽāĻžāϰāĻž āĻā§āĻā§, āĻāĻŦāĻ āϏ⧠āύāĻŋāĻā§āĻā§ āύāϤā§āύ Master āĻā§āώāĻŖāĻž āĻāϰ⧠āĻāĻžāĻ āĻļā§āϰ⧠āĻāϰā§āĨ¤ āĻāĻŋāύā§āϤ⧠āĻāϏāϞ Master āϤ⧠āϤāĻāύ⧠āĻā§āϝāĻžāύā§āϤ āĻĨāĻžāĻā§ āĻāĻŦāĻ āϏā§āĻ āĻāĻāĻāĻžāϰā§āϰ āϰāĻžāĻāĻ āĻ āĻĒāĻžāϰā§āĻļāύ āĻāĻā§āϏā§āĻĒā§āĻ āĻāϰāϤ⧠āĻĨāĻžāĻā§āĨ¤
- āϏāĻŽāϏā§āϝāĻž: āϤāĻāύ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻāĻāĻāϏāĻžāĻĨā§ āĻĻā§āĻāĻŋ Master āϤā§āϰāĻŋ āĻšāϝāĻŧā§ āϏā§āĻŦāĻžāϧā§āύāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻļā§āϰ⧠āĻāϰā§, āϝāĻž āĻĄā§āĻāĻžāĻā§ āĻāϰāĻŽāĻāĻžāĻŦā§ āĻāϰāĻžāĻĒā§āĻ āĻŦāĻž āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻāϰ⧠āĻĻā§āϝāĻŧ (āĻāĻžāϰ āĻĄā§āĻāĻž āϏāĻ āĻŋāĻ, āϤāĻž āĻāϰ āĻŽā§āϞāĻžāύ⧠āϝāĻžāϝāĻŧ āύāĻž)āĨ¤