์ด๋ฒ ์ค์ต์ AWS์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ Amazon RDS๋ฅผ ๋ฐฐํฌํ๊ณ ์น ์๋ฒ์ ์ฐ๋ํ๋ ๊ฒ์ผ๋ก, ๊ณ ๊ฐ์ฉ์ฑ ํ๋ณด๋ฅผ ์ํ Multi-AZ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ํ์ฅ์ ์ํ Read Replica ๊ธฐ๋ฅ์ ์์๋ณด์
์น ์๋ฒ์ Amazon RDS ์ฐ๋ํ๊ธฐ
CloudFormation์ผ๋ก ๊ธฐ๋ณธ ์ธํ๋ผ ๋ฐฐํฌํ
์ค์ต์ ํ์ํ ๊ธฐ๋ณธ ์ธํ๋ผ ์์์ AWS CloudFormation์ผ๋ก ์๋ ๋ฐฐํฌํ๋ค
AWS ๊ด๋ฆฌ ์ฝ์์์ ์๋น์ค > ๊ด๋ฆฌ ๋ฐ ๊ฑฐ๋ฒ๋์ค > CloudFormation์ผ๋ก ๋ค์ด๊ฐ ์คํ ์์ฑ์ ๋๋ฅธ๊ณ
Amazon S3 URL์ https://cloudneta-aws-book.s3.ap-northeast-2.amazonaws.com/chapter6/dblab.yaml ์ ์ ๋ ฅํ๋ค!
์คํ ์ธ๋ถ ์ ๋ณด ์ง์ ํ์ด์ง์์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ๊ณ ๋ค์์ ๋๋ฅธ๋ค
์คํ ์ต์ ๊ตฌ์ฑ์์๋ ๋ณ๋ ์ค์ ์์ด ๋ฐ๋ก ๋ค์์ ๋๋ฅด๊ณ ๊ณ์ํด์ dblab ๊ฒํ ๋ ๋ณ๋ ์ค์ ์์ด ์ ์ก์ ๋๋ฅธ๋ค
=> ์ฝ 5๋ถ์ด ์ง๋ ์คํ ์ํ๊ฐ "CREATE_COMPLETE"๊ฐ ๋๋ฉด ๋ชจ๋ ์ธํ๋ผ ๋ฐฐํฌ๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๋ ๊ฒ์ด๋ค
Amazon RDS๋ฅผ ์์ฑํ๊ณ ์น ์๋ฒ์ ์ฐ๋ํ๊ธฐ
์ด๋ฒ ์ค์ต์์๋ ๋ ๊ฐ์ Amazon RDS๋ฅผ ์์ฑํ๋ค
=> ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ, ์์ , ์ญ์ ๋ฑ์ ๊ฐ 5~15๋ถ ์ ๋ ์๊ฐ์ด ์์๋๋ฏ๋ก ์ค์ต ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์!
Amazon RDS1 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด AWS ๊ด๋ฆฌ ์ฝ์์์ ์๋น์ค > ๋ฐ์ดํฐ๋ฒ ์ด์ค > RDS๋ฅผ ์ฐจ๋ก๋ก ์ ํํ๊ณ
๋์๋ณด๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ์ ๋๋ฅธ๋ค
[์์ง ์ต์ ] ์์ง ์ ํ์ MySQL ์ ํ
ํ ํ๋ฆฟ๊ณผ ๊ฐ์ฉ์ฑ ๋ฐ ๋ด๊ตฌ์ฑ ์ค์ ์ ํด์ฃผ๊ณ
์ค์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ๋ค
(๋น๋ฐ๋ฒํธ๋ 'qwe12345'๋ก ์ ๋ ฅํ์)
์ธ์คํด์ค ๊ตฌ์ฑ์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ๋ค
[์ฐ๊ฒฐ] ์ Virtual Private Cloud(VPC)๋ CH6-VPC ์ ํํ๊ณ
๊ธฐ์กด VPC ๋ณด์ ๊ทธ๋ฃน(๋ฐฉํ๋ฒฝ)์ 'default'๋ฅผ ์ ๊ฑฐํ ํ dblab-CH6SG2-XXXX ์ ํ
[๋ชจ๋ํฐ๋ง] 'Enhanced ๋ชจ๋ํฐ๋ง ํ์ฑํ'์ ์ฒดํฌ ํด์
๋งจ ์๋์ชฝ์ผ๋ก ๋ด๋ ค๊ฐ ์ถ๊ฐ ๊ตฌ์ฑ์ ํด๋ฆญํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ค ํ
๋งจ ์๋์ชฝ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ์ ๋๋ฅธ๋ค
RDS1 ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ฑ๋๊ธฐ๊น์ง ์ฝ 12๋ถ ์ ๋ ์์๋๋ค
์ด๋ฒ์ ์์ฑํ RDS1 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง์ '๋ค์ค AZ DB ์ธ์คํด์ค'๋ฅผ ์ ํํ์ฌ Multi-AZ ๊ธฐ๋ฅ์ ํ์ฑํํ๋ค
=> Multi-AZ ๊ธฐ๋ฅ์ ํ์ฑํํ๋ฉด Primary DB์ Standby Replica๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์ ์์ฑ ์๊ฐ์ด ๊ธธ์ด์ง๋ค
๋ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ RDS2๋ฅผ ์์ฑํ๋ ์์ ๋ ์งํํด๋ณด์
์๊น์ ๋์ผํ๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ์ ๋๋ฌ์ฃผ๊ณ
RDS1๊ณผ ๋๊ฐ์ด ์งํํ๋ฉด ๋๋๋ฐ ๋ค๋ฅธ ๋ถ๋ถ์
1. ํ ํ๋ฆฟ์ ํ๋ฆฌ ํฐ์ด ์ ํ
2. ์ค์ ์์ DB ์ธ์คํด์ค ์๋ณ์์ 'rds2' ์ ๋ ฅ
3. ์ธ์คํด์ค ๊ตฌ์ฑ์์ db.t2.micro ์ ํ
4. ์ฐ๊ฒฐ์์ ๊ฐ์ฉ ์์ญ์ ap-northeast-2a ์ ํ
์ถ๊ฐ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ฃผ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ค
์ด๋ฒ์ ์์ฑํ RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง์ 'Multi-AZ ๊ธฐ๋ฅ์ด ๋นํ์ฑํ๋' ์ํ๋ก, ๋ฐฑ์ ๋ณด์กด ๊ธฐ๊ฐ์ 0์ผ๋ก ์ค์ ํ์ฌ
'์๋ ๋ฐฑ์ ๊ธฐ๋ฅ์ ๋นํ์ฑํ'ํ๋ค.
=> ์๋ฌด๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋๋ง ๋จ๋ ์ผ๋ก ์์ฑ๋๋ฏ๋ก RDS1 ๋ณด๋ค๋ ๋น ๋ฅด๊ฒ ์์ฑ๋จ
Amazon RDS > ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ๋ด๋ฅผ ์ ํํ๋ฉด ์์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ธํ ์ ์๋ค!
์ด๋ฒ์๋ ์น ์๋ฒ(CH6-WebSrv) ๋ฐ Amazon RDS์ ์ฐ๋ํด๋ณด์
RDS1๊ณผ RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ํฌ์ธํธ ์ฃผ์๋ฅผ ํ์ธํ๋ค
(์์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ DB ์๋ณ์๋ฅผ ๊ฐ๊ฐ ํด๋ฆญํ๋ฉด ์๋์ชฝ์ ์๋ ์ฐ๊ฒฐ & ๋ณด์ ํญ์์ ํ์ธ ๊ฐ๋ฅ)
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS1๊ณผ RDS2์ ์๋ํฌ์ธํธ ์ฃผ์๋ฅผ ๋ณ์๋ก ์ ์ธ(๊ฐ์์ ์๋ํฌ์ธํธ ์ฃผ์๋ก ์
๋ ฅ)
RDS1=rds1.ctakkq48ob60.ap-northeast-2.rds.amazonaws.com
RDS2=rds2.ctakkq48ob60.ap-northeast-2.rds.amazonaws.com
# ์ ์ธ๋ ๋ณ์ ํธ์ถ
echo $RDS1
echo $RDS2
RDS1๊ณผ RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ MySQL ๋ช ๋ น์ด๋ก ์ ์ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ณด๋ฅผ ํ์ธํ๋ค
MySQL ๋ช ๋ น์ด์์ -h ์ต์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฃผ์($RDS1)๋ฅผ ์ง์ ํ๊ณ , -u ์ต์ ์ผ๋ก ์ฌ์ฉ์ฌ ID(root)๋ฅผ ์ ๋ ฅํ๋ฉฐ, -p ์ต์ ์ผ๋ก ์ํธ(qwe12345)๋ฅผ ์ ๋ ฅํจ
=> ์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋น ์ ธ๋์ฌ ๋๋ ctrl + c
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS1 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์(RDS2๋ ๋์ผํ๊ฒ ์ํ)
mysql -h $RDS1 -uroot -pqwe12345
# ์ํ ์ ๋ณด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ธ
status;
show databases;
์ด์ CH6-WebSrv์ index.php ํ์ผ์ ์์ ํ์ฌ RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ๋ค
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# index.php ํ์ผ์ ์์ ๋ค์ฏ ์ค๋ง ํ์ธ
head -5 /var/www/html/index.php
index.php ํ์ผ์์ DB_SERVER ๊ฐ์ ์์๋ก ์ค์ ๋์ด ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฃผ์๋ฅผ ์ ๋ ฅํด์ผ ํ๋ค
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# index.php ํ์ผ์ DB_SERVER ๊ฐ์ RDS2 ์๋ํฌ์ธํธ ์ฃผ์๋ก ์นํ
sed -i "s/dbaddress/$RDS2/g" /var/www/html/index.php
# index.php ํ์ผ์ ์์ ๋ ์ค๋ง ํ์ธ
head -2 /var/www/html/index.php
DB_SERVER ์ฃผ์๋ ๋ณ์๋ก ์ ์ธํ RDS2 ์๋ํฌ์ธํธ ์ฃผ์๋ก ๋ณํ๋์ด CH6-WebSrv์ RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ ์ฐ๋ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ค
์ด์ EC2 ์ธ์คํด์ค(CH6-WebSrv)์ ํผ๋ธ๋ฆญ IP ์ฃผ์๋ฅผ ์ ๋ ฅํ์ฌ ์ธํฐ๋ท ์น ๋ธ๋ผ์ฐ์ ๋ก ์ ์ํ ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ค
๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ํ ๋ค์ SSH๋ก WebSrv์ ์ ์ํด์ MySQL ๋ช ๋ น์ด๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ํ์ธํ๋ค
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS2์ ๋ฐ์ดํฐ๋ฒ ์ด์ค EMPLOYEES ํ
์ด๋ธ ํ์ธ(1ํ)
mysql -h $RDS2 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"
# RDS2์ ๋ฐ์ดํฐ๋ฒ ์ด์ค EMPLOYEES ํ
์ด๋ธ ํ์ธ(๋ฐ๋ณต๋ฌธ)
while true; do mysql -h $RDS2 --connect-timeout=2 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"; host $RDS2; date; sleep 1; done
์ด๋ ๊ฒ RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ง์ ํ์ง ์๊ณ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ EMPLOYEES ํ ์ด๋ธ์ ํ์ธํ ์ ์๋ค
RDS2๊ฐ ์ค์ง๋ ๊ฒฝ์ฐ ๋์ ํ์ธํ๊ธฐ
ํ์ฌ RDS2๋ Multi-AZ ๊ธฐ๋ฅ์ด ๋์ํ์ง ์๊ณ ๋จ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋์ํ๊ธฐ ๋๋ฌธ์
RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฅ์ ๋ฐ์์ผ๋ก ์ค์ง๋๋ฉด ์ฅ์ ์ ๋ํ ํ์ผ์ค๋ฒ(failover-์ฅ์ ๊ทน๋ณต ๊ธฐ๋ฅ)๋ฅผ ์ํํ ์ ์๋ค
CH6-WebSrv์ SSH ํฐ๋ฏธ๋์ ์ ์ํ์ฌ MySQL ๋ช ๋ น์ด๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ํ์ธํ๋ ๋ฐ๋ณต๋ฌธ์ ์ํํ๋ค
(๋ช ๋ น์ด๊ฐ ๊ธธ์ด ํธ์๋ฅผ ์ํด ์คํฌ๋ฆฝํธ SELECT_TABLE_RDS2.sh๋ฅผ ๊ตฌ์ฑํด ๋์๋ค๊ณ ํ๋ค..๐)
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS2์ ๋ฐ์ดํฐ๋ฒ ์ด์ค EMPLOYEES ํ
์ด๋ธ ํ์ธ ์คํฌ๋ฆฝํธ(๋ฐ๋ณต๋ฌธ)
. /db_sh/SELECT_TABLE_RDS2.sh
RDS2 EMPLOYEES ํ ์ด๋ธ์ ํ์ธํ๋ ๋ฐ๋ณต๋ฌธ์ ์ ์งํ ์ํ์์ RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์งํ๋ค
RDS2๋ฅผ ์ ํํ ํ ์์ > ์ผ์์ ์ผ๋ก ์ค์ง๋ฅผ ์ ํ
=> ์ด๋ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ์ ์ฐฝ์ด ์ด๋ฆฌ๋๋ฐ "7์ผ ํ DB ์ธ์คํด์ค๊ฐ ์๋์ผ๋ก ๋ค์ ์์ํ๋ ๊ฒ์ ๋์ํฉ๋๋ค"์ ์ฒดํฌํ ํ ์ผ์์ ์ผ๋ก ์ค์ง๋ฅผ ํด๋ฆญํ๋ฉด ๋จ
๊ทธ๋ผ ์ฌ์ง์ฒ๋ผ RDS๊ฐ ์ค์ง๋์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๋๊ฑธ ํ์ธํ ์ ์๋ค
=> RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋จ์ผ๋ก ๋์ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค์ง๋๊ฑฐ๋ ์ฌ๋ถํ ์ด ๋ฐ์ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐพ์ ์ X
์ด์ ์ฅ์ ์ ๋ฐ๋ผ ์ง์์ ์ธ ์๋น์ค๊ฐ ๋ถ๊ฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Multi-AZ ๊ธฐ๋ฅ์ ํ์ธํด๋ณด์!
(๋ค์ ์ค์ต์ ์ํด ์ค์ง๋ RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ > ์์์ ์ ํํด์ ๋ค์ ์์)
Amazon RDS์ ๊ณ ๊ฐ์ฉ์ฑ์ ์ํ Multi-AZ ๋์ ํ์ธํ๊ธฐ
์ด๋ฒ์๋ Multi-AZ ๊ธฐ๋ฅ์ ์์๋ณด๊ธฐ ์ํด CH6-WebSrv๋ฅผ Multi-AZ ๊ธฐ๋ฅ์ด ํ์ฑํ๋ RDS1๋ก ์ฐ๊ฒฐํ๋ค
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# index.php ํ์ผ์ DB_SERVER ๊ฐ์ RDS1 ์๋ํฌ์ธํธ ์ฃผ์๋ก ์นํ
sed -i "s/$RDS2/$RDS1/g" /var/www/html/index.php
# index.php ํ์ผ์ ์์ ๋ ์ค๋ง ํ์ธ
head -2 /var/www/html/index.php
RDS1 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ EMPLOYEES ํ ์ด๋ธ ์ ๋ณด๋ฅผ ํ์ธํ๋ค
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS1์ ๋ฐ์ดํฐ๋ฒ ์ด์ค EMPLOYEES ํ
์ด๋ธ ํ์ธ ์คํฌ๋ฆฝํธ(๋ฐ๋ณต๋ฌธ)
. /db_sh/SELECT_TABLE_RDS1.sh
ํ์ฌ RDS1์ EMPLOYEES ํ ์ด๋ธ์ด ์์ด ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ฐ์ํ๋ค
=> ์น ์๋ฒ์ ์น ํ์ด์ง์ ์ ์ํ๋ฉด ์์ฑ๋์ง๋ง ์ด๋ฒ์๋ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ํ ์ด๋ธ์ ์์ฑํด๋ณด์!
# CH6-WEbSrv์ SSH ํฐ๋ฏธ๋
# EMPLOYEES ํ
์ด๋ธ ์์ฑ
mysql -h $RDS1 -uroot -pqwe12345 -e "USE sample;CREATE TABLE EMPLOYEES(ID int, NAME CHAR(20), ADDRESS CHAR(20));"
์ด๋ ๊ฒ ํ ์ด๋ธ์ ์์ฑํ ํ ๋ค์ RDS1์ EMPLOYEES ํ ์ด๋ธ์ ํ์ธํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํด๋ณด๋ฉด ์ค๋ฅ X
์ด์ INSERT ๋ช ๋ น์ด๋ก RDS1์ EMPLOYEES ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด๋ณด์
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# EMPLOYEES ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ถ๊ฐ
mysql -h $RDS1 -uroot -pqwe12345 -e "USE sample;INSERT INTO EMPLOYEES VALUES ('1', 'SON', 'UK');"
๋ค์ RDS1 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ EMPLOYEES ํ ์ด๋ธ์ ํ์ธํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํด๋ณด๋ฉด
EMPLOYEES ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค!
์ด๋ ๊ฒ CH6-WebSrv๋ RDS1๊ณผ ์ฐ๋๋์ด SQL ์ง์์ ์๋ต์ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ ์กฐํํ ์ ์๋ค
=> ์ฌ๊ธฐ์ RES1์ Multi-AZ๊ฐ ํ์ฑํ๋์ด Primary DB์ Standby Replica๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ฉ ์์ญ์ ์์น
Primary DB์ Standby Replica๋ ์๋ก ๋๊ธฐํ๋์ด ํ ์ด๋ธ์ ์ ์งํ๋ฉฐ, Primary DB์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด Standby Replica๊ฐ Primary DB๋ก ์น๊ฒฉ๋์ด ํ์ผ์ค๋ฒ๋ฅผ ์ํํ ์ ์์!
RDS1 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ถํ ํ์ ๋ ํ์ผ์ค๋ฒ ๋์์ ํ์ธํด๋ณด์
. /db_sh/SELECT_TABLE_RDS1.sh๋ฅผ ํตํด RDS1 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ EMPLOYEES ํ
์ด๋ธ ์ ๋ณด๋ฅผ
๋ฐ๋ณตํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ณ ์ ์งํ๋ค
RDS1์ ์ฌ๋ถํฐ์๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ๋ด์์ RDS1์ ์ ํํ๊ณ ์์ > ์ฌ๋ถํ ์ ์ ํํ๋ค
=> ์ฌ๋ถํ ์ฐฝ์ด ์ด๋ฆฌ๋ฉด '์ฅ์ ์กฐ์น๋ก ์ฌ๋ถํ ํ์๊ฒ ์ต๋๊น?'์ ์ฒดํฌํ๊ณ ํ์ธ์ ๋๋ฅธ๋ค
RDS1์ ์ฌ๋ถํ ํ๋ฉด์ Primary DB๋ ์ค์ง๋ ๊ฒ์ด๊ณ ์ฅ์ ์กฐ์น๋ฅผ ์ํด Standby Replica๋ฅผ Primary DB๋ก ์น๊ฒฉ์์ผ ์๋์ผ๋ก ํ์ผ์ค๋ฒ๋ฅผ ์ํํ๋ค
๋ณด๋ผ์ ๊ธ์จ๋ก ๋ณด์ด๋ RDS1์ IP ์ฃผ์๋ฅผ ํ์ธํด๋ณด๋ฉด ์ฌ๋ถํ ์ 10.6.3.99์์ 10.6.2.117๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธํ ์ ์์
=> Primary DB๊ฐ ๋ณ๊ฒฝ๋ ๊ฒ์ผ๋ก ์ดํดํ๋ฉด ๋จ!!
์ด๋ฐ์์ผ๋ก Primary DB์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด Multi-AZ ์ค์ ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ฉ ์์ญ์ ์์ฑ๋ Standby Replica ๋ฅผ ์๋์ผ๋ก ์น๊ธํ๊ธฐ ๋๋ฌธ์ Primary DB ์ญํ ๋ก ์๋น์ค๋ฅผ ์ง์์ ์ผ๋ก ์ ์งํ ์ ์์
Amazon RDS์ ์ฑ๋ฅ์ ํ์ฅํ๋ Read Replica ๋์ ํ์ธํ๊ธฐ
์ด๋ฒ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ ํ์ฅ์ ์ํ Read Replica ๊ธฐ๋ฅ์ ์ดํด๋ณธ๋ค
Read Replica๋ Multi-AZ ๊ฐ์ ๊ณ ๊ฐ์ฉ์ฑ ์๋น์ค๊ฐ ์๋
=> ์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ Read Replica ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต์ ํ์ฌ ๋ฐ์ดํฐ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ด๋ ๊ธฐ๋ฅ
RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ReadReplica๋ฅผ ์ค์ ํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ๋ด์์ RDS2๋ฅผ ์ ํํ๊ณ
์์
> ์ฝ๊ธฐ ์ ์ฉ ๋ณต์ ๋ณธ ์์ฑ์ ์ ํํ๋ค
ํ์ง๋ง ๋ฉ๋ด๊ฐ ๋นํ์ฑํ๋์ด ์ค์ ํ ์ ์๋ค
์ด๋ Read Replica ์ค์ ์กฐ๊ฑด ์ค์๋ ์๋ ๋ฐฑ์ ๊ธฐ๋ฅ์ด ํ์ฑํ ์ํ์ฌ์ผ ํ๋ค๋ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ด๋ค
=> ์ฒ์ RDS2๋ฅผ ์์ฑํ ๋ ๋ฐฑ์ ๋ณด์กด ๊ธฐ๊ฐ์ '0์ผ'๋ก ์ค์ ํ๋๋ฐ ์ด๋ ์๋ ๋ฐฑ์ ์ ๋นํ์ฑํ ํ๋ค๋ ์๋ฏธ
์ค์ ์ ์ํ๋ค๋ฉด RDS2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ํ ์์ ์ ๋๋ฌ ๋ฐฑ์ ๋ณด์กด ๊ธฐ๊ฐ์ 1์ผ ์ด์์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค
ํ์ง๋ง, ๋๊ธฐ ์๊ฐ์ด ๋ฐ์ํ๋ ๊ด๊ณ๋ก ์ด๋ฒ์๋ Read Replica์ ์ ์ฝ ์กฐ๊ฑด์ด
์๋ ๋ฐฑ์
๊ธฐ๋ฅ์ ํ์ฑํํด์ผ ํ๋ค๋ ์ ๋ง ์ดํดํ๊ณ ๋์ด๊ฐ!
(RDS1์ ๋ฐฑ์ ๋ณด์กด ๊ธฐ๊ฐ์ 35์ผ๋ก ์ค์ ํด์ ์ ์ฝ์ด ์์ผ๋ฏ๋ก ์ค์ ์ค์ต์ RDS1์์ ์งํ)
RDS1 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Read Replica ์ค์ ์ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ๋ด์์ RDS1๋ฅผ ์ ํํ๊ณ
์์ > ์ฝ๊ธฐ ์ ์ฉ ๋ณต์ ๋ณธ ์์ฑ์ ์ ํ
๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ฃผ๊ณ ๊ฐ์ฅ ์๋์ ์๋ ์ฝ๊ธฐ ์ ์ฉ ๋ณต์ ๋ณธ ์์ฑ ๋๋ฅด๊ธฐ
์ผ์ ์๊ฐ์ ๋๊ธฐํ๊ณ RDS1-RR ์์ฑ์ด ์๋ฃ๋๋ฉด DB ์๋ณ์๋ฅผ ํด๋ฆญํ๊ณ ์๋ํฌ์ธํธ ์ฃผ์๋ฅผ ๋ฉ๋ชจํด๋๋ค!
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS1-RR์ ์๋ํฌ์ธํธ ์ฃผ์๋ฅผ ๋ณ์๋ก ์ ์ธ
RDS1RR=rds1-rr.ctakkq48ob60.ap-northeast-2.rds.amazonaws.com
# ์ ์ธ๋ ๋ณ์ ํธ์ถ
echo $RDS1RR
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS1์ EMPLOYEES ํ
์ด๋ธ ํ์ธ
mysql -h $RDS1 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"
# RDS1-RR์ EMPLOYEES ํ
์ด๋ธ ํ์ธ
mysql -h $RDS1RR -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"
=> RDS1-RR์ RDS1์ ๋ณต์ ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ์๋ก ๋์ผํ ํ ์ด๋ธ์ ์ ์งํ๋๊ฑธ ํ์ธํ ์ ์์
์ด์ MySQL INSERT ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ RDS1์ EMPLOYEES ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ค
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS1์ EMPLOYEES ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ถ๊ฐ
mysql -h $RDS1 -uroot -pqwe12345 -e "USE sample;INSERT INTO EMPLOYEES VALUES ('2', 'Park', 'Suwon');"
๋ค์ RDS1๊ณผ RDS1-RR์ ๋ฐ์ดํฐ๋ฒ ์ด์ค EMPLOYEES ํ ์ด๋ธ์ ํ์ธํ๋ค
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS1์ EMPLOYEES ํ
์ด๋ธ ํ์ธ
mysql -h $RDS1 -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"
# RDS1-RR์ EMPLOYEES ํ
์ด๋ธ ํ์ธ
mysql -h $RDS1RR -uroot -pqwe12345 -e "USE sample;SELECT * FROM EMPLOYEES;"
=> ๋ง์ฐฌ๊ฐ์ง๋ก RDS1๊ณผ RDS1-RR์ ์๋ก ๋๊ธฐํ๋์ด ํ ์ด๋ธ์ ์ ์งํจ
๋ง์ฝ INSERT ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ RDS1-RR์ EMPLOYEES ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
# CH6-WebSrv์ SSH ํฐ๋ฏธ๋
# RDS1-RR์ EMPLOYEES ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ถ๊ฐ
mysql -h $RDS1RR -uroot -pqwe12345 -e "USE sample;INSERT INTO EMPLOYEES VALUES ('3', 'Lee', 'China');"
๋ฐ๋ก ์ผ๋ฌด์ง๊ฒ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค
=> RDS1-RR์ ์ฝ๊ธฐ ์ ์ฉ(read-only) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๋ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ์ง ๋ชปํจ
๐์ ๋ฆฌ๋ฅผ ํด๋ณด์๋ฉด RDS1์ Primary DB๋ก ์ฝ๊ธฐ์ ์ฐ๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ๋ฅํ๋ฉฐ, RDS1-RR์ RDS1์ ๋ณต์ ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํด์ ์ฝ์ ์๋ง ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค!
=> ๋ณต์ ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ฉด ์ฝ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๋ถ์ฐํด์ ์ฑ๋ฅ์ ํ์ฅํ ์ ์๋ค
์ด๋ ๊ฒ ํ๋ฉด ์ค์ต์ด ๋๋๋ค...๐
์ด์ ์ค์ต์ ์ํด ์์ฑ๋ ๋ชจ๋ ์์์ ์ญ์ ํ์!!
RDS > ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ๋ด์ ๋ค์ด๊ฐ์ RDS1, RDS1-RR, RDS2๋ฅผ ๊ฐ๊ฐ ์ ํํ ํ ์์ > ์ญ์ ๋ฅผ ์ ํํ๋ค
๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ ํ ์ญ์ ๋ฅผ ์งํํ๋ฉด ๋๋๋ฐ 10๋ถ ๋ด์ธ๊ฐ ์์๋๋ฏ๋ก
๋๊ธฐ ์๊ฐ ์ดํ ์ญ์ ๋์๋์ง ๊ผญ ํ์ธํด์ผํจ~!
์ด์ CloudFormation ์คํ์ ์ญ์ ํ๊ธฐ ์ํด CloudFormation > ์คํ ๋ฉ๋ด์ ๋ค์ด๊ฐ์
'dblab' ์คํ์ ์ ํํ ํ ์ญ์ ๋ฅผ ๋๋ฅธ๋ค
=> ์ดํ ๋ํ๋๋ ์ฐฝ์์ ์คํ ์ญ์ ๋ฅผ ๋๋ฅด๋ฉด ๋๋ค

6์ฅ ๋!!
'๐ Infra > AWS ๊ต๊ณผ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS ๊ต๊ณผ์] 7์ฅ - AWS ๊ณ ๊ธ ๋คํธ์ํน ์๋น์ค(2) (0) | 2024.01.18 |
---|---|
[AWS ๊ต๊ณผ์] 7์ฅ - AWS ๊ณ ๊ธ ๋คํธ์ํน ์๋น์ค(1) (0) | 2024.01.18 |
[AWS ๊ต๊ณผ์] 6์ฅ - AWS ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค(1) (1) | 2024.01.15 |
[AWS ๊ต๊ณผ์] 5์ฅ - AWS ์คํ ๋ฆฌ์ง ์๋น์ค(2) (1) | 2024.01.15 |
[AWS ๊ต๊ณผ์] 5์ฅ - AWS ์คํ ๋ฆฌ์ง ์๋น์ค(1) (3) | 2024.01.13 |