‡๐Ÿ‘ฉ‍๐Ÿ’ป ‡/ºDatabase

[SQL] A-S / Active - Standby Replication ์„œ๋ฒ„ ๊ตฌ์ถ• ์‹ค์Šต

Trudy | ์†ก์—ฐ 2023. 11. 8. 17:55

https://xoxoxoxox.tistory.com/111

 

[SQL] A-A / Master-Server, Server-Master Replication ์„œ๋ฒ„ ๊ตฌ์ถ• ์‹ค์Šต

ํ•˜๋‚˜๋Š” master, ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋Š” slave์˜ ์„œ๋ฒ„์ž„์— ๋™์‹œ์— master์ด์ž slave, slave์ด์ž master์ธ replication ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ๊ตฌํ˜„ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. ์ „์— ํ–ˆ๋˜ Master-Slave ์‹ค์Šต์€ Master์—์„œ๋งŒ CAUD๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์—ˆ๊ณ , Slave

xoxoxoxox.tistory.com

๋ณธ ์‹ค์Šต์€ ์œ„ ๋งํฌ์˜ ์‹ค์Šต ํ™˜๊ฒฝ์— ์ด์–ด์„œ ์ง„ํ–‰ํ•œ๋‹ค.


์ „ ์‹ค์Šต์—์„œ๋Š” A-A (Active-Active) ๊ตฌ์กฐ์˜ ์„œ๋ฒ„๋กœ, ๋‘ ์„œ๋ฒ„๊ฐ€ ๋™์‹œ์— ์ž‘๋™ํ•˜๋ฉด์„œ ์—…๋ฌด๋ฅผ ๋ถ„๋‹ดํ–ˆ๋‹ค. 

์ด๋ ‡๊ฒŒ ๊ตฌ์ถ•ํ•  ๊ฒฝ์šฐ, ์—…๋ฌด ๋ถ€๋‹ด์€ ์ค„์ง€๋งŒ ์žฌ๋‚œ ์ƒํ™ฉ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ, ๋ฐ์ดํ„ฐ์˜ ๋ณต๊ตฌ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.

์žฌ๋‚œ ๋ณต๊ตฌ (DR, Disaster Recovery)๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž‘๋™ํ•˜๋Š” ์„œ๋ฒ„์™€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  Standby๋ฅผ ํ•˜๋Š” ๋ฐฑ์—… ์„œ๋ฒ„๋ฅผ ๋‘”๋‹ค.

์ด๋ฒˆ ์‹ค์Šต์€ ์ด๋Ÿฌํ•œ A-S ์„œ๋ฒ„ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. 

 

๊ธฐ์กด ์‹ค์Šต ํ™˜๊ฒฝ์—  Master๋ฅผ Active ์„œ๋ฒ„๋กœ, Slave๋ฅผ Standby ์„œ๋ฒ„๋กœ ๋ณ€๊ฒฝํ•  ๊ฒƒ์ด๋‹ค. 


1. Active

  1) keepalived ์„ค์น˜ ๋ฐ ์„ค์ •
	yum install -y keepalived

	vi /etc/keepalived/keepalived.conf

	14๋ฒˆ ๋ผ์ธ ์ฃผ์„์ฒ˜๋ฆฌ
	18๋ฒˆ ๋ผ์ธ ๋ฐ‘์œผ๋กœ ์ „๋ถ€ ์‚ญ์ œ
    ๋ฐ‘์— ๋‚ด์šฉ์„ ๋’ค์— ์ถ”๊ฐ€


vrrp_script chk_mysql {
        script "pidof mysqld"
        interval 2                       # every 2 seconds 
        weight 2
}

vrrp_instance VI_1 {
        interface ens160
        state MASTER
        virtual_router_id 123		# Standby๋ž‘ ๋งž์ถฐ์ค˜์•ผ ํ•˜๋Š” ๊ฐ’ (์ž„์˜๋กœ)
        unicast_src_ip 192.168.100.20   # Active IP
        unicast_peer {
                192.168.100.30          # Standby IP
        }

        priority 102			# Standby๋ณด๋‹ค Active๊ฐ€ ๋†’์•„์•ผ ํ•˜๋Š” ๊ฐ’

        track_script {
             chk_mysql
        }

        virtual_ipaddress {
                192.168.100.100/24 dev ens160   # Standby๋ž‘ ๋งž์ถฐ์ค˜์•ผ ํ•˜๋Š” ๊ฐ’ (์ž„์˜๋กœ)
        }
}
	
2) keepalived ์„ค์ • ํŒŒ์ผ์„ ๋ฐ”๊ฟจ์œผ๋‹ˆ, ์žฌ์‹œ์ž‘
	systemctl restart keepalived

2. Standby

2. Standy
  1) keepalived ์„ค์น˜ ๋ฐ ์„ค์ •
	yum install -y keepalived

	vi /etc/keepalived/keepalived.conf

	14๋ฒˆ ๋ผ์ธ ์ฃผ์„์ฒ˜๋ฆฌ
	18๋ฒˆ ๋ผ์ธ ๋ฐ‘์œผ๋กœ ์ „๋ถ€ ์‚ญ์ œ

vrrp_script chk_mysql {
        script "pidof mysqld"
        interval 2                       # every 2 seconds
        weight 2
}

vrrp_instance VI_1 {
        interface ens160
        state BACKUP
        virtual_router_id 123		# Standby๋ž‘ ๋งž์ถฐ์ค˜์•ผ ํ•˜๋Š” ๊ฐ’
        unicast_src_ip 192.168.100.30   # Standby IP
        unicast_peer {
                192.168.100.20          # Active IP
        }

        priority 101			# Standby๋ณด๋‹ค Active๊ฐ€ ๋†’์•„์•ผ ํ•˜๋Š” ๊ฐ’

        track_script {
             chk_mysql
        }

        virtual_ipaddress {
                192.168.100.100/24 dev ens160
        }
}

	2) ์žฌ์‹œ์ž‘
	systemctl restart keepalived

3. DB ์„œ๋ฒ„ Failover ํ…Œ์ŠคํŠธ

	 1) workbench์—์„œ ์ ‘์† ํ…Œ์ŠคํŠธ
	hostname : [keepalived์—์„œ VIP]
	username : [์ƒ์„ฑํ•œ ๊ณ„์ •]

	์ ‘์† ํ›„ 

	show variables LIKE '%server_id%'; ์‹คํ–‰ํ•ด์„œ server-id๋ฅผ ํ™•์ธ, Active ์„œ๋ฒ„๋ฅผ ๋„๊ณ  ์ˆ˜ ์ดˆ ํ›„ ๋‹ค์‹œ ์ ‘์†