λͺ©μ°¨
λ°°κ²½
μ΅κ·Όμ νμ΅ μ€μΈ βκ°μ λ©΄μ μ¬λ‘λ‘ λ°°μ°λ λκ·λͺ¨ μμ€ν
μ€κ³ κΈ°μ΄β λμμμλ 맀 μ±ν°, 맀 κ³μΈ΅λ§λ€ βλ€μ€νβλ₯Ό κ°μ‘°ν©λλ€. μ΄λ λκ·λͺ¨ μμ€ν
ꡬ쑰μμ μ₯μ μ κ°μ₯ μ·¨μ½ν SPOF(Single Point of Failure)λ₯Ό λ°©μ§νκΈ° μν¨μΈλ°μ, νλμ μλ²μμ μ₯μ κ° λ°μν κ²½μ° λͺ¨λ μλΉμ€μ μ₯μ κ° λ°μνλ κ²μ λ§κΈ° μν¨μ
λλ€. λν νλμ μλ²μμ λͺ¨λ μμ²μ μ²λ¦¬νκ² λλ―λ‘ νΈλν½μ΄ λͺ°λ¦΄ κ²½μ° λ³λͺ© νμμ΄ μ겨 μ±λ₯μ μ λλ‘ λ°νν μ μλ€λ λ¬Έμ μ λ μμ΅λλ€. μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ DB κ³μΈ΅μ λ€μ€νλ νμ μΈκΈλλ λΆλΆμ΄μκ³ , μ ν¬ λͺ¨λ½ μλΉμ€μμλ λ―Έμ² λμνμ§ λͺ»ν μ§μ μ΄μκΈ°λλ¬Έμ λ°μ΄ν°λ² μ΄μ€ λ€μ€νλ₯Ό νμ΅ν΄λ³΄κ³ κ·Έ μ€μμλ λ ν리μΌμ΄μ
μ λν΄ μ μ©ν΄ λ³΄κΈ°λ‘ νμμ΅λλ€.
DB λ€μ€ν
MySQL μμ μλ²λ₯Ό λ€μ€ννλ λ°©λ²μ ν¬κ² Clustering κ³Ό Replication μ΄ μμ΅λλ€.
Clustering
MySQL μμ μ§μνλ ν΄λ¬μ€ν°λ§μ Shared-Nothing Architecture ꡬ쑰λ₯Ό κ°μ§λ©° κ°κ°μ μλ²κ° λͺ¨λ λ
립μ μΌλ‘ μ΄μλκ³ μνμ μΈ κ³μΈ΅μ κ°μ§λλ€.
μ΄μ λ°λΌ νλμ μλ²μμ μ₯μ μμ λμμ΄ μ½κ³ λ³λͺ© νμμ΄ λ°μν μ°λ €κ° μ λ€λ μ₯μ μ΄ μμ΅λλ€. νμ§λ§ λ
립μ μΌλ‘ ꡬμ±λ μ¬λ¬ μλ²μμ λ°μ΄ν°κ° λ³κ²½λ μ λͺ¨λ μλ²μμ λ°μ΄ν°κ° λκΈ°νκ° λμ΄μΌ ν©λλ€. μ΄λ‘ μΈν΄ μ¬λ¬ λ
Έλλ€ κ°μ λ°μ΄ν°λ₯Ό λκΈ°ννλ μκ°μ΄ νμνμ¬ μ°κΈ° μ±λ₯μ΄ λΉκ΅μ μ’μ§ μκ³ μ₯μ κ° μ νλ κ²½μ° μ²λ¦¬κ° κΉλ€λ‘μΈ μ μλ€λ νκ³κ° μμ΅λλ€.
Replication
볡μ λ ν μλ²μ λ°μ΄ν°λ₯Ό 볡μ νμ¬ λ€λ₯Έ μλ²λ‘ λκΈ°ννλ κ²μ μλ―Ένλλ°μ, ν΄λ¬μ€ν°λ§κ³Ό λ€λ₯Έ μ μ μμ§μ μΈ κ³μΈ΅μ κ°μ§λλ€.
μλ³Έ λ°μ΄ν°κ° μ μ₯λμ΄ μλ μλ²λ₯ΌΒ source μλ², 볡μ λ λ°μ΄ν°κ° μ μ₯λμ΄ μλ μλ²λ₯ΌΒ replica μλ²λΌκ³ ν©λλ€. μ΄μ λ°λΌ 볡μ λλ λ°©ν₯λ source μλ²μμ replica μλ²λ‘ λ¨λ°©ν₯μΌλ‘ νλ₯΄κ² λμ΄ λκΈ°νκ° ν΄λ¬μ€ν°λ§λ³΄λ€ λΉ λ₯΄κ³ , μ ν©μ± κ΄λ¦¬λ μλμ μΌλ‘ νΈνλ€κ³ ν μ μμ΅λλ€.
κ³Όκ±°μλ Master-Slave λ‘ λΆλ Έμ§λ§ μ¬νμ ν΅λ
μ slave λΌλ λ¨μ΄ μ¬μ©μ μ΅μ νκΈ° μν΄ Source-Replica λλ Primary-Secondary λ₯Ό μ¬μ©νλ μΆμΈμ
λλ€. μ΄μ λ°λΌ ν΄λΉ ν¬μ€νΈ λ° λ ν리μΌμ΄μ
μ½λμμλ Source-Replica λΌλ λ¨μ΄λ₯Ό μ¬μ©ν©λλ€.
Replication λͺ©μ
β’
κ°μ©μ±(availability)
β¦
replica μλ² μ€ νλμ μ₯μ κ° λ°μνλλΌλ κ°λμ€μΈ replica μλ²μμ λ°μ΄ν°λ₯Ό κ°μ Έμ λμμ΄ κ°λ₯νλ―λ‘ κ³μ μλΉμ€λ₯Ό ν μ μμ΅λλ€.
β¦
λ§μ½ source μλ²κ° λ€μ΄λμμ λμλ replica μλ² μ€ νλκ° μλ‘μ΄ source μλ²κ° λμ΄ μ°κΈ° μ°μ°μ μ²λ¦¬ν©λλ€. μ΄ λ μΉκ²©λ μλ²μ 보κ΄λ λ°μ΄ν°κ° μ΅μ μνκ° μλ μλ₯Ό λλΉνμ¬ μ¬μ μ 볡ꡬ μ€ν¬λ¦½νΈλ₯Ό μ§μμ μΌλ‘ μ
λ°μ΄νΈνκ³ , μ₯μ λ°μ μ μ€ν¬λ¦½νΈλ₯Ό μννμ¬ μ΅λν λ°μ΄ν° μμ€μ΄ μκ²λ λλΉν΄μΌ ν©λλ€.
β’
μμ μ±(reliability)
β¦
λ°μ΄ν°λ² μ΄μ€ μλ² κ°μ΄λ° μΌλΆκ° νκ΄΄λμ΄λ λ€λ₯Έ μλ²μ λκΈ°νλ λ°μ΄ν°κ° 보쑴λμ΄ μμΌλ―λ‘ λ°μ΄ν°λ₯Ό 보쑴ν μ μμ΅λλ€. λ€λ§ κ°λ°μμ μ€μλ‘ source μλ²μ λͺ¨λ λ°μ΄ν°λ₯Ό μμ νλ μ°μ°μ΄ λ°μν κ²½μ°, λͺ¨λ μλ²μμ μμ μνλ‘ λκΈ°νκ° μ§νλ μ μκΈ°λλ¬Έμ λ
립μ μΈ μλ²μ λ°μ΄ν°λ₯Ό μ£ΌκΈ°μ μΌλ‘ λ°±μ
ν΄μΌ ν©λλ€.
β’
λ λμ μ±λ₯
β¦
μ°κΈ° μ°μ°μ source μλ²λ‘λ§ μ λ¬λκ³ , μ½κΈ° μ°μ°μ replica μλ²λ€λ‘ λΆμ°λκΈ°λλ¬Έμ, λ³λ ¬λ‘ μ²λ¦¬λ μ μλ 쿼리μ μκ° λμ΄λ©λλ€. κ·Έλ¦¬κ³ λΉκ΅μ μ€λ 걸리λ μ°κΈ° μ°μ°μΌλ‘ μΈν΄ νΈλν½μ΄ μ§μ€λ λ λ°μν μ μλ λ³λͺ© νμμ μνν μ μμ΅λλ€. λ€λ§ μλΉμ€ νΉμ±μ μ°κΈ° μ°μ°μ΄ μμ£Ό λ°μνλ μν©μ΄λΌλ©΄ λκΈ°ν μμ
μΌλ‘ μΈν΄ μ€νλ € μ±λ₯μ΄ μ νλ μ μμΌλ―λ‘ μλΉμ€ νΉμ±μ λ§μΆμ΄ μ€κ³λ₯Ό ν΄μΌν©λλ€.
MySQL μμ λ λ°©μμ μ°¨μ΄
InnoDB μ€ν 리μ§λ λ€μ€νμ κΈ°λ³Έκ°μΌλ‘ λ ν리μΌμ΄μ
μ μ§μνκ³ μκ³ , μμ μΈκΈν ν΄λ¬μ€ν°λ§ ꡬ쑰λ₯Ό μ μ©νκΈ° μν΄μλ InnoDB λμ NDB Cluster μ€ν λ¦¬μ§ μμ§μ μ¬μ©ν΄μΌ ν©λλ€. NDB Cluster μ€ν λ¦¬μ§ μμ§λ λ ν리μΌμ΄μ
μ μ§μνμ§λ§ νΈλμμ
격리 μμ€ λ± κΈ°λ³Έμ μΈ μ€ν λ¦¬μ§ μμ§μΌλ‘μ¨μ μ°¨μ΄κ° μ‘΄μ¬ν©λλ€(ndb cluster vs innodb engines). 볡μ λ°©μ λν λ ν리μΌμ΄μ
μ μ°κΈ° μ°μ°μ΄ λλκ³ λ°μ΄ν°λ₯Ό 볡μ νλ μμ μμ λΉλκΈ° λ°©μμΌλ‘ λ©μΈ μ°λ λμ μλ΅ μ§μ°μλλ₯Ό μ€μΌ μ μμ§λ§ ν΄λ¬μ€ν°λ§ λ°©μμ λͺ¨λ λ°μ΄ν° μλ²μ λκΈ°νλ₯Ό μ§νν λ€ λΉλ‘μ μ°μ°μ΄ λλκΈ°λλ¬Έμ μλ΅ μ§μ°μλμμλ μ°¨μ΄κ° μμ΅λλ€. μ΄μ λ°λΌ λΉ λ₯Έ μλ΅ μλμ MySQL 8 κΈ°λ³Έ μ€ν λ¦¬μ§ μμ§μΈ InnoDB λ₯Ό κΈ°λ³Έκ°μΌλ‘ μ¬μ©ν μ μλ Replication μ μ¬μ©νκΈ°λ‘ κ²°μ νμμ΅λλ€.
λμ μ리
Replication μ νμ΅νλ©΄μ μ΄λ»κ² 볡μ λ₯Ό νλμ§κ° κ°μ₯ κΆκΈνμμ΅λλ€. κ²°λ‘ λΆν° λ§νμλ©΄, source μλ²μ replica μλ²κ° 컀λ₯μ
μ λ§Ίμ μνμμ μ΄λ²€νΈ λ°©μμ²λΌ λμνμ¬ νΉμ μμ μ΄νμ λ°μ΄ν° λ³κ²½μ μ λ°μ΄λ리 λ‘κ·Έλ‘ μ½μ΄μ λ³κ²½μ μ μ μ©νλ κ²μ
λλ€. κ° μ€ν
μ κ·Έλ¦ΌμΌλ‘ νννλ©΄ λ€μκ³Ό κ°μ΅λλ€.
1.
source μλ²μμ insert, update, delete μ κ°μ λͺ¨λ μ°κΈ° μ°μ°μ λ°μ΄λ리 λ‘κ·Έλ‘ κΈ°λ‘ν©λλ€. μ΄λ λ°λ‘ μ€μ μ ν΄μ£Όμ§ μμλ κΈ°λ³Έμ μΌλ‘ MySQL μμ μ§μν©λλ€.
2.
replica μλ²λ₯Ό source μλ²μ 볡μ λͺ©μ μΌλ‘ μ°κ²°μ λ§Ίμ΅λλ€. μ΄ λ, 보μμ μν΄ source μλ²μμλ 볡μ μ© user λ₯Ό λ§λ€μ΄ ν΄λΉ user name κ³Ό λΉλ°λ²νΈλ‘ μ°κ²°μ΄ κ°λ₯ν©λλ€. μ°κ²°μ TCP/IP κΈ°λ°μ MySQL 볡μ νλ‘ν μ½μ μ΄μ©νμ¬ μ°κ²°μ λ§Ίμ΅λλ€.
3.
μ°κ²°μ΄ λ§Ίμ΄μ‘λ€λ©΄ source μλ²μ replica μλ²μ μ€ν€λ§ λ° λ°μ΄ν° λκΈ°νκ° νμν©λλ€. λμ€μ μμΈν μμλ³΄κ² μ§λ§, μ°κΈ° μ°μ°μ νΉμ μμ μ pos(Position) κ°μΌλ‘ νμΈνλλ°, μ€ν€λ§κ° λ§μ§ μλ€λ©΄ pos κ°μ΄ μΌμΉν΄λ 볡μ κ° λμ§ μκ³ μλ¬λ₯Ό λ°νν©λλ€. λ³΄ν΅ mysqldump μ κ°μ ν΄μ μ¬μ©νκ±°λ λ°μ΄ν° νμΌμ λ°λ‘ μΉ΄νΌνλ λ°©λ²μΌλ‘ λ°μ΄ν° λκΈ°νλ₯Ό ν μ μμ΅λλ€.
4.
μ°κ²°μ λ§Ίμ ν source μλ²μ μ°κΈ° μ°μ°μ΄ 컀λ°μ΄ λλ©΄ pos κ°μ΄ λ³νκ³ λ°μ΄λ리 λ‘κ·Έκ° λ³κ²½λ©λλ€.
5.
λ°μ΄λ리 λ‘κ·Έ ν¬μ§μ
μ΄ κΈ°λ‘λλ©΄ 볡μ νλ‘μΈμ€κ° μμλλλ°μ, λΉλκΈ° λ°©μμΌλ‘ μλ‘μ΄ μ°λ λμμ μ΄μ pos κ°κ³Ό λΉκ΅ν΄ λ³κ²½ μ΄λ²€νΈμ λν λ‘κ·Έλ₯Ό μ½μ΅λλ€. μ΄λ²€νΈλ₯Ό μ½μ λ λ°μ΄λ리 λ‘κ·Έ νμΌμ μ κΈμ κ±Έκ³ , μ½κΈ° μμ
μ΄ λλλ©΄ μ κΈμ ν΄μ νλ λ‘μ§μ
λλ€.
6.
replica μλ²μ I/O μ°λ λμμ λ³κ²½μ μ λν λ‘κ·Έλ₯Ό μμ νκ³ μ΄λ₯Ό 릴λ μ΄ λ‘κ·Έ νμΌμ μ μ₯ν©λλ€.
7.
μ μ₯μ΄ μλ£λλ©΄ replica μλ²μ μλ‘μ΄ μ°λ λμμ 릴λ μ΄ λ‘κ·Έμ μ μ₯λμ΄ μλ λ³κ²½μ μ μ μ©ν©λλ€. μ΄ λ λ°μ΄ν° μ ν©μ±μ μν΄, source μλ²μμ λ°μν 쿼리 μμμ κ°μ μμλ‘ replica μλ²μλ μ μ©μ΄ λ©λλ€.
λμ μ리λ λ€μ 볡μ‘νμ§λ§, DB μ°¨μμμ λ ν리μΌμ΄μ
κ΄λ ¨ λλΆλΆμ μμ
λ€μ μ§μνκ³ μκΈ°λλ¬Έμ νΈμ€νΈ μλ², user λ±λ§ 컀μ€ν
νλ©΄ κ°λ¨νκ² μ μ©μ΄ κ°λ₯ν©λλ€. λ€λ§ μ€κ³ κ΄μ μμ source μ replica μλ²λ₯Ό μ΄λ»κ² ꡬμ±ν κ²μΈμ§μ λν΄ κ³ λ―Όν΄ λ³΄μκ³ , μλΉμ€ νΉμ±μ μ°κΈ° μ°μ°μ΄ λͺ°λ¦¬μ§ μλ μ κ³Ό μΆν νμ₯μ κ³ λ €νμ¬ ν λμ source μλ²μ λ λμ replica μλ²λ‘ ꡬμ±νμμ΅λλ€.
μ€μ
ν μ€νΈ νκ²½
λ ν리μΌμ΄μ
μ μ© ν
μ€νΈλ λ컀λ₯Ό μ΄μ©νμ¬ ν¬νΈλ‘ μλ²λ₯Ό λλμμ΅λλ€. μλ² μ₯μ λ₯Ό κ³ λ €νμ¬ μΈ λμ μλ²κ° λͺ¨λ λ€λ₯Έ μΈμ€ν΄μ€μ μλκ² κ°μ₯ μ΄μμ μ΄μ§λ§, ν
μ€νΈμΈ μ κ³Ό κ°μ© μμμ κ³ λ €νμ¬ λμ»€λ‘ μ§ννμμ΅λλ€.
β’
곡ν΅
β¦
MySQL 8
β¦
νΈμ€νΈλ private IP μΈ 192.168.45.23
β¦
λμΌν μλΈλ· λ€νΈμν¬ λμ
β¦
OSλ Oracle Linux Server 8.6 (μ μ₯λ λͺ
λ Ήμ΄κ° κ±°μ μμ΅λλ€.)
β’
source μλ²
β¦
μΈλΆ ν¬νΈλ 13306, λ΄λΆ ν¬νΈλ 3306
β’
replica μλ²
β¦
λ λμ μλ²κ° κ°κ° μΈλΆ ν¬νΈ 13307, 13308
Source μλ² μ€μ
CREATE DATABASE morak;
SQL
볡μ¬
λ¨Όμ μ¬μ©ν DB λ₯Ό λ§λ€κ³ , replica μμ 볡μ ν λ νμν μ¬μ©μλ₯Ό λ§λ€κ² μ΅λλ€.
CREATE USER 'morak-replication'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'morak-replication'@'%';
SQL
볡μ¬
볡μ μ© μ¬μ©μλ₯Ό λ§λ€κ³ , replica μμμ 볡μ κΆνμ λΆμ¬νμ΅λλ€.
μΌλ°μ μΌλ‘ μ¬μ©νλ μ¬μ©μ μμ± λͺ
λ Ήμ΄μλ λ€λ₯΄κ² WITH mysql_native_password κ° μΆκ°λμλλ°μ, μλ² ν΅μ κ° λ³΄μ μ°κ²°μ μν΄ MySQL 5.8 λΆν° ν΄λΉ νλ¬κ·ΈμΈμ μ¬μ©νλ μΈμ¦ λ°©μμΌλ‘ λ³κ²½λμλ€κ³ ν©λλ€. μ€μ μ ν΄μ£Όμ§ μμΌλ©΄ Last_IO_Error: error connecting to master 'morak-replication@192.168.45.23:13306' - retry-time: 60 retries: 1 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. λ€μκ³Ό κ°μ μλ¬κ° λ°μν©λλ€.
μ¬νμ ν΅λ
μ Master-Slave λΌλ λ¨μ΄ μ¬μ©μ μ΅μ νκ³ , MySQL μμλ λ³νλ₯Ό μν΄ slave λΌλ λͺ
λ Ήμ΄κ° deprecated λ κ²λ μλλ°μ, μμ§ κΆν λΆμ¬ ννΈμμλ ν΄λΉ λΆλΆμ λ³κ²½νμ§ λͺ»ν κ² κ°μ΅λλ€.
μ΄μ /etc/my.cnf μ€μ νμΌμ λ ν리μΌμ΄μ
κ΄λ ¨ μ€μ μ μΆκ°νκ² μ΅λλ€.
λ컀 λΌμ΄λΈλ¬λ¦¬μ MySQL 8 μ΄λ―Έμ§λ₯Ό μ¬μ©νλ κ²½μ° os λ βOracle Linux Server 8.6β μ΄κ³ , ν΄λΉ os λ vim λͺ
λ Ήμ΄κ° μμ΅λλ€. κ·Έλμ μ€μ νμΌμ μμ νλ €κ³ ν λ bash: vi: command not found μλ¬κ° λ°μνμμ΅λλ€. μ΄μ λ°λΌ microdnf install vim μΌλ‘ λͺ
λ Ήμ΄λ₯Ό λ€μ΄λ‘λν ν vim λͺ
λ Ήμ΄λ₯Ό μ¬μ©νμμ΅λλ€.
[mysqld]
server-id = 1
log-bin = morak-bin
binlog_format = ROW
sync_binlog = 1
binlog_expire_logs_seconds = 259200
binlog_do_db = morak
Plain Text
볡μ¬
β’
server-id
β¦
κ°μ ν ν΄λ‘μ§(λ€νΈμν¬ λ§)λ΄μμ μ μΌν κ°μ΄μ΄μΌ ν©λλ€.
β’
log-bin
β¦
λ°μ΄λ리 λ‘κ·Έ νμΌλͺ
μ μ§μ ν μ μμ΅λλ€. λ§μ½ μ§μ νμ§ μλλ€λ©΄ νΈμ€νΈ μ₯λΉλͺ
-bin ννλ‘ μ μ₯λ©λλ€.
β’
binlog_format
β¦
λ°μ΄λ리 λ‘κ·Έμ μ μ₯λλ ν¬λ§·μ μ§μ ν μ μκ³ STATEMENT, ROW, MIXED λ± μΈ κ°μ κ°μ κ°μ§ μ μμ΅λλ€.
β¦
STATEMENT λ μ°μ¬μ§ SQL λ¬Έμ μ μ₯νλ λ°©μμ΄κ³ , λ‘κ·Έμ ν¬κΈ°κ° μλμ μΌλ‘ μλ€λ μ₯μ μ΄ μμ΅λλ€.
β¦
ROW λ λ³κ²½λλ row λ°μ΄ν°λ₯Ό μ μ₯νλ λ°©μμ΄κ³ λ°μ΄ν° μ ν©μ±μ μμ΄μ μ 리ν©λλ€. InnoDB μ κΈ°λ³Έκ°μ
λλ€.
β¦
Mixed λ STATEMENT μ ROW μ μ₯μ μ ν©μ³ λ°μ΄ν° μ ν©μ±μ΄ μꡬλλ λ°μ΄ν°μλ ROW λ°©μμ, μ΄μΈμλ STATEMENT λ°©μμΌλ‘ μ μ₯ν©λλ€. μ₯μ μ΄ λ§μ§λ§, STATEMENT λ°©μκ³Ό ROW λ°©μμ΄ νΌμ¬λμ΄ μμ΄ νΈνμ±μ λ¬Έμ κ° μμ μ μλ€κ³ ν©λλ€. (곡μ λ¬Έμ-Mixed Binary Logging Format)
β’
sync_binlog
β¦
κΈ°λ³Έκ°μΈ 0 λλ 1λ‘ μ€μ λ κ²½μ°, 맀 λ°μ΄λ리 λ‘κ·Έ 컀λ°μμ λκΈ°νν©λλ€.
β’
binlog_expire_logs_seconds
β¦
deprecate λ expire_logs_days μ λμ νμ¬ λ°μ΄λ리 λ‘κ·Έ νμΌ λ§λ£ κΈ°νμ μ€μ ν μ μμ΅λλ€.
β’
binlog_do_db
β¦
λ ν리μΌμ΄μ
μ μ§νν λ°μ΄ν°λ² μ΄μ€λ₯Ό μ§μ ν μ μμ΅λλ€.
λ컀λ₯Ό μ¬μμν λ€, source μλ²μ bash λ‘ mysql μ μ μνμ¬ μνλ₯Ό νμΈν΄λ³΄κ² μ΅λλ€.
SHOW MASTER STATUS;
SQL
볡μ¬
λ³κ²½ μ΄λ²€νΈλ₯Ό μ μ©ν λ°μ΄λ리 νμΌμΈ File κ³Ό λ³κ²½ μ§μ μΈ Position μ΄ μ μ μ©λ κ²μ νμΈν μ μμ΅λλ€. μ΄μ replica μλ²μμ λλ¨Έμ§ μ€μ μ ν΄λ³΄λλ‘ νκ² μ΅λλ€.
Replica μλ² μ€μ
[mysqld]
server-id = 2
Plain Text
볡μ¬
replica μλ²μ μ€μ νμΌμλ ν¬κ² μ μ©ν λΆλΆμ μκ³ server-id λ§ μ μΌνκ² λ§λ€μ΄ μ£Όμμ΅λλ€. μ΄μ mysql μλ²μ μ μνμ¬ source μλ²μμ λ ν리μΌμ΄μ
μ°κ²° μ€μ μ μ§ννκ² μ΅λλ€.
RESET REPLICA;
CHANGE MASTER TO
MASTER_HOST='192.168.45.23',
MASTER_PORT=13306,
MASTER_USER='morak-replication',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='morak-bin.000003',
MASTER_LOG_POS=157;
SQL
볡μ¬
λΉλ‘ master λ€μ΄λ°μ λ¨μμμ§λ§ μ°κ²° λͺ
λ Ήμ΄ λΆλΆμμλ slave λμ replica λ₯Ό μ¬μ©ν μ μμ΅λλ€. reset replica λ‘ μ€μ μ μ΄κΈ°νν λ€ μ°κ²°μ νμν μ€μ μ νμμ΅λλ€.
β’
MASTER_HOST, MASTER_PORT
β¦
source μλ²μ ip μ mysql ν¬νΈμ
λλ€.
β’
MASTER_USER, MASTER_PASSWORD
β¦
source μλ²μμ μμ±ν 볡μ μ© μ¬μ©μ μ 보μ
λλ€.
β’
MASTER_LOG_FILE, MASTER_LOG_POS
β¦
source μλ²μμ master μνλ‘ νμΈν κ°μ
λλ€.
START REPLICA;
SHOW REPLICA STATUS\G;
SQL
볡μ¬
START REPLICA; λͺ
λ Ήμ΄λ‘ μ°κ²°μ μμν μ μμ΅λλ€. κ·Έλ¦¬κ³ μλμ λͺ
λ Ήμ΄λ‘ replica μλ²μ λ ν리μΌμ΄μ
μ μνλ₯Ό νμΈν΄λ³΄λ©΄!
μλ¬μμ΄ μ μ°κ²°λ κ²μ νμΈν μ μμ΅λλ€.
μ΄ λ λ ν리μΌμ΄μ
μ°κ²°μ λκ³ μΆλ€λ©΄, STOP REPLICA; λͺ
λ Ήμ΄λ‘ λμ μ μμ΅λλ€.
κ°μ ν΄λ³Ό μ
λ ν리μΌμ΄μ
μ μ μ©νμ¬ μλ² μ₯μ μ κ°μ©μ±μ λμ΄κ³ , μ§μμ μΈ λκΈ°νλ‘ λ°μ΄ν° μμ€μ μ΅λν λ°©μ§ν΄ 보μμ΅λλ€. λν μ°κΈ° μλ²μ μ½κΈ° μλ²λ₯Ό λλμ΄ μ±λ₯ μΈ‘λ©΄λ κ°μ ν΄ λ³΄μμ΅λλ€. νμ§λ§ νμ¬ μνμμ κ°μ ν μ λ λΆλͺ
ν©λλ€.
Replication Lag
source μλ²μ λ³κ²½λ μμ κ³Ό replica μλ²μ μ μ©λ μμ μ¬μ΄μ, 볡μ λ μΌλ‘ μλ €μ Έμλ λ°μ΄ν° λκΈ°ν μ§μ°μ΄ μμ μ μμ΅λλ€. μ΄λ¬ν μ§μ°μ μμΈμΌλ‘λ λ€νΈμν¬ μ§μ°, μλ² λΆν, 볡μ μ¬μ΄μ¦μ κ°μ μμΈμ΄ μμ μ μμ΅λλ€. λν 볡μ μ μνλλ replica μλ²μ SQL μ°λ λλ μ±κΈ μ°λ λμ
λλ€. μ΄λ‘ μΈν΄ μ°κΈ° μμ²μ΄ νλ²μ λ§μ΄ λ€μ΄μ¬ κ²½μ° μ‘°ν μ²λ¦¬κΉμ§ ν΄μΌ νλ replica μλ²μ λΆνκ° μ¬ μ μμ΅λλ€. μ΄λ¬ν λ¬Έμ λ€λ‘ μΈν΄ μ§μ°μ΄ μ¬ν κ²½μ° λκΈ°νλ λΉλκΈ° λ°©μμΌλ‘ μ²λ¦¬λκΈ°λλ¬Έμ source μλ²μμλ μλ΅μ΄ λκ° μνμ΄κ³ , μμ§ λκΈ°νλμ§ μμ λ°μ΄ν°μ λν΄ μ‘°ν μμ²μ΄ λ€μ΄μ¨λ€λ©΄ μ ν©μ± λ¬Έμ κ° λ°μν μ μμ΅λλ€. μ΄μ λ°λΌ μλ² κ°μ©λ₯ μ νμΈνκ³ , 볡μ μ¬μ΄μ¦λ₯Ό μ μ νκ² μ νν΄μΌ ν κ² κ°μ΅λλ€.
μμΈ νΈλ€λ§
ν
μ€νΈλ₯Ό νλ©΄μλ μ λ₯Ό λ§μ΄ λ¨Ήμ λΆλΆμΈλ°, μμΈμ λν΄ μΈμ§νκΈ°κ° λ€μ μ΄λ €μ μ΅λλ€. λ³΄ν΅ sql λ¬Έμμ μμΈκ° λ°μνλ©΄ μλ¬ λ‘κ·Έκ° λμ€μ§λ§ λ ν리μΌμ΄μ
μ°κ²° μ, λλ 볡μ μμ λ°μνλ μμΈμ λν΄ status λͺ
λ Ήλ¬ΈμΌλ‘ νμΈν΄μΌλ§ μλ¬λ₯Ό μΈμ§ν μ μμμ΅λλ€. μ΄μ λ°λΌ μμΈκ° λ°μν κ²μ λͺ¨λν°λ§ν μ μλ μ‘°μΉκ° λ°λμ νμν΄ λ³΄μ
λλ€.
μ ν©μ± λ¬Έμ
μ무λλ κ°μ₯ κ΄μ¬μ κ°κ³ μ§μΌλ΄μΌ ν λ¬Έμ κ° μλκΉ μΆμ΅λλ€. νμ¬λ 맀 컀λ°λ§λ€ λ°μ΄ν°λ₯Ό λκΈ°ννμ§λ§ μ΄ λ°©μμ μ±λ₯μ νκ³κ° μμ΅λλ€. μ΄μ λ°λΌ μ»€λ° μ€μΌμ₯΄μ λ³κ²½νλ€λ©΄ μμ μΈκΈν 볡μ λ λΏλ§ μλλΌ μ±λ₯μ λ¬Έμ κ° μμ΄λ μ ν©μ± λ¬Έμ κ° λ°μν μ μμ΅λλ€. μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ MySQL μμλ Semi-Sync Replication μ Plug-in λ°©μμΌλ‘ μ§μνμ¬ λΉλκΈ°μ νκ³λ₯Ό λ€μ μνν μ μμ΅λλ€. μ΄μΈμλ μΊμ μλ²λ₯Ό μ΄μ©νμ¬ μ ν©μ± λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²λ μκ°ν΄ 보μμ΅λλ€. NPE λ₯Ό λ°©μ§νκΈ° μν΄, μλ‘ μμ±ν λ°μ΄ν°μ λν΄μλ source μλ²μμ λ°μ΄ν°λ₯Ό μΊμ μλ²μ νΈμνκ³ , ν΄λΉ λ°μ΄ν°μ λν μ‘°ν μμ²μ΄ λ°μνλ€λ©΄ μΊμ μλ²λ₯Ό λ¨Όμ νμΈνλ λ°©μμΌλ‘ latency λ‘ μΈν΄ λ°μνλ μ ν©μ± λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ κ² κ°μ΅λλ€.
μ§κΈκΉμ§ λ ν리μΌμ΄μ
μ λν MySQL μμμ μ€μ λ€κ³Ό νκ³μ μ μ΄ν΄ 보μκ³ , λ€μ ν¬μ€ν
μμλ μ± μλ²μμμ μ€μ μ μμ보λλ‘ νκ² μ΅λλ€.