DB Master/Slave Replication μ€μ
Replicationμ μ νμν κΉ?
νλ‘μ νΈλ₯Ό νλ©΄μ DBμ μ μ₯λ μ λκ³ μ κ°μ Έμ€λλ° κ΅³μ΄ DB μλ²λ₯Ό μ¦μ€ν νμκ° μμκΉ.
λ무 λΉμ°ν λ§μ΄μ§λ§, λͺ¨λ μλΉμ€κ° νΈλν½μ΄ λμ΄λ¨μ λ°λΌ DBμ λ§μ λΆνκ° μ€κ²λκ³ λ³λͺ© νμλ μ¬ν΄μ§ κ²μ΄λ€.
λ°λΌμ 볡μ μλ²μμ μ°κΈ°/μ½κΈ°λ§ λΆμ°ν΄μ€λ νΈλν½μ μννλλ° λμμ΄λκ³ κ°μ©μ±λ ν보ν μ μμκ²μ΄λ€.
κ°μ©μ± ν보λ I/O μμ μ μ μννκ² ν΄μ€λ€λ μλ―Έλ‘ μ μλ€.
λ,Master DBμ μ₯μ κ° λ°μν΄μ λ€μ΄λλ€λ©΄ Slave DBλ₯Ό Masterλ‘ μΉκ²©μμΌμ λμν μ μλ€.
νμ§λ§ MySQL Replicationμ λΉλκΈ° λ°©μμ΄κΈ° λλ¬Έμ λ°λ‘ Slaveλ‘ λ³΅μ¬κ° λλκ²μ΄ μλλΌ μλ²½νκ² λ³΅μ¬λμ§ μμ μ μλ€κ³ νλ€.
μ΄κ²λ§κ³ λ λ€λ₯Έ λ°©λ²μ΄ λ§κ² μ§λ§, μμ§ λΆμ‘±νκΈ°μ ν μ μλ λ²μμμ κ³ λ―Όνκ³ μ νλ€.
μ€λ©, MSA(?), CQRS ..λ±λ±
μ½κΈ°/μ°κΈ° μμ
μ μ΄λ€ DBμ ν λΉν κΉ

λλΆλΆ DBλ Master/Slave κ΅¬μ‘°λ‘ μ΄μλλ©°, Slaveλ₯Ό μ¬λ¬κ° λλ κ²½μ°κ° μλ€κ³ νλ€.
Replication λ°©λ²μ μ¬λ¬κ°μ§ μκ³μ§λ§, Master DBμμ μ€νλλ Queryλ₯Ό Slaveμμ λμΌνκ² μννμ¬ λ°μ΄ν°λ₯Ό λκΈ°νν μ μλ€. μ¦, Masterμ λ³κ²½μ¬νμ΄ μκΈ°λ©΄ μ΄λ₯Ό Binary Logμ μ μ₯νκ³ λΉλκΈ°μ μΌλ‘ Slaveμκ² μ μ‘νλ€.
Slaveλ μ΄λ₯Ό λ°μμ Relay logμ μ μ₯νκ³ λ³κ²½λ μ¬νμ μ€ν λ¦¬μ§ μμ§μ λ°μνλ€.
ν΄λΌμ΄μΈνΈκ° Commit μ λλ₯΄λ©΄ λ¨Όμ Master μλ²μ μ‘΄μ¬νλ Binary log μ λ³κ²½μ¬νμ λͺ¨λ κΈ°λ‘ν©λλ€.
Master Thread λ λΉλκΈ°μ μΌλ‘(볡μ¬λλ μκ°μ κΈ°λ€λ €μ£Όμ§ μμ΅λλ€.) Binary logλ₯Ό μ½μ΄ Slave μλ²λ‘ μ μ‘ν©λλ€.
Slave μ I/O Thread λ Masterλ‘ λΆν° λ°μ λ³κ²½ λ°μ΄ν°λ€μ Relay log μ κΈ°λ‘μ ν©λλ€.
Slaveμ SQL Thread λ Replay logμ κΈ°λ‘λ€μ μ½μ΄ μμ μ μ€ν λ¦¬μ§ μμ§μ μ΅μ’ μ μ©ν©λλ€.
Replication λμ μ리 (MySQL κΈ°μ€)
νΈλμμ μ΄ Commit λλ©΄ μ¦, Master μλ²μμ νΈλμμ μ΄ Commit λλ©΄ Binary Logμ λ³κ²½μ¬νμ κΈ°λ‘νλ€.
Master Threadλ λΉλκΈ°λ‘ Binary Logλ₯Ό μ½μ΄μ Slave μλ²λ‘ μ μ‘νλ€.
λΉλκΈ° μ₯μ μ Binary Log μ μ‘ μμ μ μλ£νκ³ μ¦μ λ€μ νΈλμμ μ μ²λ¦¬νλ―λ‘ Master μλ² μ±λ₯ ν₯μμ λμμ΄ λλ€. λ, Slaveκ° μ¬λ¬κ° μμ κ²½μ° Master μ€λ λλ κ° Slave μλ²λ‘ λμμ μ μ‘ν μ μλ€.
νμ§λ§ λ¨μ λ μ‘΄μ¬νλ€.
Master μλ²μ Slave μλ²μ λ°μ΄ν° μ μ© μμκ° λ€λ₯Ό μ μκΈ° λλ¬Έμ λ€νΈμν¬ λ¬Έμ μ κ°μ μ₯μ λ°μ μ λ°μ΄ν° μΌκ΄μ± λ¬Έμ κ° μκΈΈ μ μλ€. (UDP νλ‘ν μ½(?)κ³Ό λΉμ·νκ±° κ°λ€.)
Slave μλ²μ I/O Threadλ Masterμμ λ°μ λ³κ²½μ¬νλ€μ Relay Logμ κΈ°λ‘νλ€.
Slave Threadλ μμ λ Relay Logλ₯Ό νμΈνκ³ μμ μ μ€νΈλ‘μ§ μμ§(μ€μ DB)μ μ μ©νλ€.
MySQL Replicationμ΄ νΈλμμ μ»€λ° ν μμλλμ§λ μλ €λ©΄ μ¬μ©νλ Replication λ°©μκ³Ό μ€μ μ μμμΌνλ€. μλμ κ°μ μμΈ μ¬νμ΄ μλ€κ³ νλλ° μ΄νμ μμλ³΄λ €κ³ νλ€.
Semi-Sync Replication : μλ²κ° νΈλμμ μ Commit νκΈ° μ μ Slave μλ²μ μΌλΆ λ°μ΄ν°λ₯Ό μ μ‘νμ¬ λ°μ΄ν° μμ€ μνμ μ€μ΄κ³ μ±λ₯μ ν₯μ μν¬ μ μλ€.
GTID-Based Replication : νΈλμμ IDλ₯Ό μ¬μ©νμ¬ νΈλμμ μμλ₯Ό 보μ₯νκ³ , Slave μλ²κ° νμν λ°μ΄ν°λ§ λ°λλ‘ νλ€.
MySQL μ€μ νκΈ°
MySQLμ μ€μ νμΌμΈ my.cnfκ° μ‘΄μ¬νκ³ λ€λ₯Έ μμΉ(λλ ν 리)μ μ‘΄μ¬ν μ μλ€. νμ§λ§ νλμ μ€μ νμΌλ§ μ μ©νκ³ λλ ν 리λ§λ€ μ°μ μμλ₯Ό κ°λλ€.
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/my.cnf
my.cnfλ₯Ό μλμ κ°μ΄ μ€μ νλ€.
μ μ€μ μ λ§μΉ ν μ¬μμνλ€.
κ·Έλ¦¬κ³ λ€μ μμλ₯Ό μ§ννλ€.
μμ£Ό λ°μνλ μμΈ
λνμ μΈ μλ¬μ Last_IO_Errorκ° μλλ€. Slave μλ²μ auto.cnf νμΌμ νμ¬ μλ²μ UUIDκ° μ νμλλ°, μ΄ νμΌκΉμ§ Master μλ²μμ ν¨κ» κ°μ Έμμ λ°μνλ μλ¬λΌκ³ νλ€.
λ€μ Slaveλ‘ λμ΄μμ μ μ©νλ€.
Last updated