이번에 인프라 스터디를 하면서 실습을 하게 되었다.
이번 주 요구사항은 3-tier
로 서버를 구성하기다
개념 조사한 것은 아래 글에 작성해놨다
개념 조사
3-tier
로 서버를 구성하기 였는데 내가 졸작을 하면서 정적파일은 서빙하지 않고 Data
들만 움직이는 Restful API
를 구성해놓아서 3-tier
로 구성할 수 없었다.
그래서 졸작 서버에 SpringBoot
랑 MySQL
을 같이 띄워 놓은것을 다른 EC2
로 분리해보기로 했다.
내가 생각한 순서는 이렇다
- 새로운
EC2
구성- 기존
EC2
에서DB
덤프 뜨기- 덤프 뜬
.sql
파일DB
전용EC2
로 옮기기- 기존 프로젝트
application.yml
에서DB
경로 수정하기
EC2
를 하나 파야한다서버 배포하기
이 글의 초반부분을 참고하여 새로운 EC2
를 구성해준다
위의 인스턴스가 기존에 SpringBoot
와 MySQL
이 둘 다 있던 EC2
이고
아래의 senier-db
가 DB를 분리하기 위해 새로 판 EC2
이다
EC2
를 만들고 MySQL
을 깔아준다기존 프로젝트에서 MySQL
로 DB
를 만들어줬기 때문에 동일하게 해주어야 한다
sudo apt update
sudo apt install mysql-server
MySQL
에서 외부 접속을 허용해줘야한다sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
sudo ufw allow 3306
mysqlId
가 아니고 mysqld
라서 조심해야 한다
이거때문에 30분을 날렸다!
여기에 들어가서 bind-address
부분을 0.0.0.0
으로 해줘서 모든 접속을 허용해준다
ctrl + x
로 저장 후 나가기!
sudo systemctl restart mysql
sudo mysql -u root 를 통해서 mysql서버에 접속
CREATE USER '이름'@'%' IDNTIFIED BY '비밀번호'; - 사용자 생성
GRANT ALL PRIVILEGES ON *.* TO 'jkHeo'@'%'; - 권한 주기
FLUSH PRIVILEGES; - 캐시를 지우고 새로운 설정 적용
SELECT user, host FROM mysql.user WHERE user = '이름' - 제대로 들어갔는지 확인
위의 코드를 통해서 새로운 사용자를 만들어 줬다
sud systemctl start mysql
sudo systemctl enable mysql
sudo systemctl restart mysql
MySQl
서버가 비활성화 되어 있을 수 있으니 활성화를 해준다
mysql -u 계정이름 -p -h DB용 EC2 IP
뒤의 IP
는 혹시 몰라서 가려놨다
그러면 이렇게 접속에 성공한 것을 볼 수 있다!!
이제 외부에서 접속이 되는걸 확인했으니 기존 EC2
에 있는 DB
를 덤프 떠서 옮겨야 한다
sudo mysqldump -u root -p 덤프 뜰 DB > 저장할 경로
나는 shuttle
이라는 DB를 사진에 있는경로에 저장을 해 주었다.
그러면 이렇게 .sql
파일이 생긴 것을 볼 수 있다!!
이제 덤프를 떴으니 새로 만든 DB
용 EC2
로 옮겨줘야 한다
나는 옮기기 위해서 http 통신을 사용했다
기존 EC2
에서 백업파일을 만들어 놓은 경로에서 http 통신을 실행해줬다
다른 포트는 사용중이어서 443 포트로 실행을 해줬다
그 후 DB
용 EC2
에서 파일을 가져와준다
wget http://ip주소/shuttle_backup.sql -P /home/ubuntu/
그럼 이렇게 가져오는 것을 볼 수 있다!!!!
이제 파일을 가져왔으니 DB
에 적용을 해줘야한다
MySQL
에 접속 후 적용할 DB
를 생성해준다
이렇게 db를 생성해줬으면 .sql
파일을 적용해주어야 한다
mysql -u 사용자이름 -p DB이름 < 덤프파일 경로
위의 명령어를 실행하고 다시 MySQL
에 접속해서 확인을 해주면 적용이 된 것을 볼 수 있다
DB
를 분리했다고 끝이 아니다!
이제 기존 SpringBoot
프로젝트에서 새로운 DB
로 연결을 하기 위해서 application.yml에 있는 MySQL
경로를 수정해주어야 한다
이 부분을 분리한 EC2
의 주소로 바꿔주고 저장 후 프로젝트를 재시작해주면 된다!
이제 스웨거를 통해서 제대로 변경이 되었는지 확인해보자
회원가입 api를 통해 확인을 해봤다
기존 DB
분리한 DB
확인을 해보니 기존 DB
에는 추가되지 않고 분리한 DB
에만 생성된 것을 볼 수 있다!