β λ°ν μμ
https://www.youtube.com/watch?v=t96l6ry_qmw
βοΈ λ°ν λ΄μ©
MMM
HA μ€νμμ€ μ루μ μ΄λ¦
ν μ€μ Live MySQL λ°μ΄ν°λ² μ΄μ€ HA μ루μ μΌλ‘ μ¬μ©λκ³ μμ
Googleμμ κ°λ°λ μ루μ
λ²μ μ λ°μ΄νΈλ μ€μ§λμ΄μ, νμ μ μ체 μ λ°μ΄νΈλ₯Ό νλ©΄μ μ¬μ© μ€
κΈ°λ³Έ ꡬμ±λ
MASTER-MASTER 01, 02λ Έλλ§ MMMμ΄ κ΄λ¦¬νλλ‘ κ΅¬μ±
03λ² SLAVEλ MMMμ΄ κ΄λ¦¬νλλ‘ ν¬ν¨μν¬ μ μμ§λ§, μ κ· MASTERλ‘ failover νλ κ³Όμ μμ λμλμ§ μλ μΌμ΄μ€κ° μμ΄μ
μ΄ κ΅¬μ±μ μ¬μ©νμ§ μμ
1. λ°λͺ¬ 2κ° : Monitoring, Agent
2. μ ν리μΌμ΄μ μλ² failoverλ₯Ό μν΄ κ° λ°μ΄ν°λ² μ΄μ€ μλ²μ μ¬λΌκ°λ μλΉμ€ IP
- Monitoring λ°λͺ¬
- λ³λμ νΈμ€νΈμμ λͺ¨λ λͺ¨λν°λ§ λ° μμ¬ κ²°μ κ³Ό λͺ λ Ή μν
- Agent λ°λͺ¬
- κ° λ°μ΄ν°λ² μ΄μ€ μλ²μμ μ€νλ¨
- Monitoring λ°λͺ¬μμ λ΄λ €μ¨ λͺ λ Ή μν
Service IP
MMMμ΄ λ°μ΄ν°λ² μ΄μ€ Role λ³κ²½μ λ°λΌ μ΄λμμΌ μ ν리μΌμ΄μ μλ²μ failoverκ° μ΄λ£¨μ΄μ§κ² ν¨
mondκ° νλ μ£Όμ λͺ¨λν°λ§ νλͺ©
- ping - νΈμ€νΈ μμ²΄κ° μ΄μμλμ§
- mysql - MySQL μΈμ€ν΄μ€κ° μ΄μμλμ§
- rep_threads - 볡μ μ€λ λκ° μ μ μλ μ€μΈμ§
- rep_backlog - 볡μ μ€λ λμ μ§μ°μ΄ μ ν΄μ§ thresholdλ₯Ό λμ΄μ°λμ§ νμΈ
μ΄ λͺ¨λν°λ§ νλͺ©μμ μ΄μμ΄ μμ μ, MMMμ΄ standby MASTERλ‘ failover μ§ν
DR μ²μ ꡬμ±νμ λ λͺ¨μ΅
active : DATA-CENTER1
standby : DATA-CENTER2
λ¨λ°©ν₯ 볡μ κ΅¬μ± : DATA-CENTER κ°, standby DATA-CENTER λ΄μ local MASTER κ°
-> IDC failover μ Role μ ν μμ νμ..
BEFORE
μ κ· active DATA-CENTERμ MySQL μλ²λ₯Ό MASTER-MASTER ꡬμ±μΌλ‘ μ νν΄μΌ ν¨
DATA-CENTER κ° MySQL μλ²μ MASTER-SLAVE κ΄κ³λ μ νν΄μ£Όμ΄μΌ ν¨
μ κ· standby DATA-CENTERμ MySQL μλ²λ MASTER-SLAVE λ¨λ°©ν₯μΌλ‘ μ νν΄μΌ ν¨
-> μ΄λ €μ΄ μμ μ μλμ§λ§ λ²κ±°λ‘κ³ λΆλ΄μ€λ¬μ΄ μμ λ€ -> κ°μ νμ!
μ ννκ² λ λ°°κ²½
DRμΌν°μ λ³Έ λͺ©μ
μ¬λ μ λΉμ¦λμ€ μ°μμ± λ³΄μ₯μ΄λ―λ‘
λ°μ΄ν° μΌν° failoverλ₯Ό ν κ²½μ°κ° κ±°μ λ°μνμ§ μμ κ±°λΌκ³ μκ°νμ§λ§
ν μ€μ κ°νΈκ²°μ ννΈλμ¬ μ¦κ° -> 무μ€λ¨ μ΄μμ νμμ± μ¦κ°
μ΄λ° μν©μμ λκ·λͺ¨ λ€νΈμν¬ μμ ..
-> 무μ€λ¨ λ°μ΄ν° μΌν° λ‘€λ§ μμ μΌλ‘ κ³νμ΄ λ¨
-> λ°μ΄ν°λ² μ΄μ€ μλ²λ λ°μ΄ν° μΌν° failoverκ° νμν΄μ§
-> μ§ννλ€ λ³΄λ λ°μ΄ν°λ² μ΄μ€ Role μ ν μμ μ λν λΆλ΄ μ¦κ° + μ€μλ‘ λ³΅μ κ° κΉ¨μ§λ κ²½μ°λ λ°μ + λ€μ΄νμ νμ + μνλΆλ΄ ν° μμ λ λ°μ
-> λ°μ΄ν° μΌν° μ ν κ³Όμ μ μ΅λν κ°μνμν¬ νμκ° μκΉ
WISH
1. μμͺ½ λ°μ΄ν°μΌν° -> λμΉ κ΅¬μ‘°
2. λ°μ΄ν°μΌν° failover μ, μ ν리μΌμ΄μ μλ² μ»€λ₯μ λ§ μ΄λνκ³
3. λ°μ΄ν°λ² μ΄μ€ λ 벨μμλ λ°λ‘ μμ ν κ²μ΄ μλ ꡬ쑰
MASTER-MASTER μλ°©ν₯μΌλ‘ λ°λ λΆλΆ
1. κΈ°μ‘΄μ λ¨λ°©ν₯μΌλ‘ μλ DR 볡μ μ±λ
2. DR μΌν° λ΄μ MASTER-SLAVE λ³΅μ¬ μ±λ
but,, λ κ°μ§ μ΄μ λ°μ
1. binlog μ€λ³΅ μ μ‘ μ΄μ
01, 02λ² -> log_slave_update μ΅μ μ μΌκ³ μ΄μ
sql_threadκ° μ μ©ν νΈλμμ λ binlogμ κΈ°λ‘νλ μ΅μ
1. actvie λ°μ΄ν°μΌν° 01λ²μμ λ°μν νΈλμμ μ binlog μμ±
2. DR μ±λμ λ°λΌ standby λ°μ΄ν°μΌν° 01λ²μΌλ‘ μ μ‘ λ° μ μ©λ¨
3. μ μ© μ΄ν, standby λ°μ΄ν°μΌν° 01λ² μλ² -> μ΄ νΈλμμ μ λν binlog μμ±
4. μ΄λ 01λ²μ slaveλ‘ μλ 02, 03λ² -> μ΄ binlogλ₯Ό 볡μ νκ³ μ μ©νκ² λ¨
λ¨λ°©ν₯ κ΅¬μ± μ binlog 볡μ νλ¦κ³Ό λμΌν¨
5. κ·Έλ°λ° 02λ²μμ μ΅μ’ μ μ©ν binlogκ° μ체 binlogλ‘ μμ±μ΄ λκ³ ,
6. 01λ²μ 02λ²μ masterλ©΄μ slaveμ΄κΈ° λλ¬Έμ, μ΄ binlogλ₯Ό 볡μ ν΄μΌ νλμ§ νλ¨ν¨
μ΄ νλ¨ -> ν΄λΉ binlogκ° μ²μ μμ±λ μλ²μ server-idμ μμ μ server-idκ° λ€λ₯Έμ§ λΉκ΅ν΄μ μ΄λ£¨μ΄μ§
λ€λ₯Ό κ²½μ° λ³΅μ μ§ν
μ΄ binlogλ λ°μ΄ν°μΌν°1μμ μ²μ μμ±λμκΈ° λλ¬Έμ server-id 101μ κ³μ μ μ§νκ³ μλ μν©
server-id 1001μΈ 01λ²μΌλ‘ λ€μ 볡μ κ° λμ΄λ²λ¦Ό
μ¬κΈ°μ μ μ©μ΄ λλ©΄ λ€μ λ 03, 02λ²μΌλ‘ 볡μ λλ μν©μ΄ μκΈΈ μ μμ..
μ€μ κ° λ³κ²½μ΄ μμλ€λ©΄ binlogκ° μμ±λμ§ μλλ°,
λμΌ binlogκ° μ μ©λ μ§ 1μ΄λ μ§λμ§ μμ μν©μ΄κΈ° λλ¬Έμ
4λ²μ μν©κΉμ§ λμ¬ νλ₯ μ μ μ§λ§
μ΄λ‘ μ μΌλ‘λ 무ν 루νκ° κ°λ₯ν΄μ Έλ²λ¦Ό
2. MMMμ΄ λ³΅μ μ±λμ ꡬλΆνμ§ λͺ»νλ μ΄μ
κ° λ°μ΄ν°μΌν°μ 01λ² μλ²λ DR μλ°©ν₯ 볡μ μ±λμ΄ μΆκ°λ¨μΌλ‘ μΈν΄μ
DR 볡μ μ±λκ³Ό local master-master 볡μ μ±λμ΄ λμμ μμ±λ λ©ν°μμ€λ³΅μ μνκ° λ¨
μ΄ κ²½μ° MMMμ μμ μ΄ λͺ¨λν°λ§ ν΄μΌ ν μ±λμ΄ μ΄λ€ μ±λμΈμ§ μμ§ λͺ»νκ² λ¨
1. binlog 무ν 루ν
λ°©λ² 1) Gtidλ‘ μ€λ³΅ μ μ© λ§κΈ°
but,, λΉμ λ°λ‘ Gtid μ νμ μ΄λ €μ΄ μν©
Gtidλ‘ κ°λλΌλ binlogμ μ μ‘ λ£¨ν (No I0 Thread skip)μ λ°μνκ² λκ³
λ€μ binlog position λ°©μμΌλ‘ μ ν μ μ΄μκ° λκΈ° λλ¬Έμ.. μ€λ³΅ μ μ‘ μ체λ₯Ό λ§μ λ°©λ²μ΄ νμ
λ°©λ² 2) binlog filter κ±ΈκΈ°
2. μ΄λ€ μ±λ?
MMMμ΄ MM μ±λμ λν΄μλ§ λͺ¨λν°λ§μ νλλ‘ μμ€λ₯Ό μμ
νμ¬ DR κ΅¬μ± λͺ¨μ΅