[개발 후 운영] 1-1. 운영 데이터베이스와 테스트 데이터베이스의 분리

반응형

WHY

운영 전에는 데이터베이스를 분리하지 않고 내 맘대로 해도 아무 문제가 없지만

서비스를 배포한 뒤에는 기존 데이터베이스는 매우 소중하게 여겨야한다는 것을 알게됐다.

데이터베이스는 우리 서비스의 핵심이니 가장 보수적으로 다뤄야한다.

 

그와중에 우리는 테스트 서버도 없는 상태 (그저 감자)

테스트 서버를 배포하기 전 운영 데이터베이스와 테스트 데이터베이스를 분리하자

 

WHAT

TEST DB 생성 ▷ TEST DB에 기존 DB 데이터 복사 ▷ 추가 설정 

 

TEST DB 생성

1. linux 서버 접속 (루트권한으로)

 

2. MySQL 접속

mysql -u root -p

 

2. test DB 생성

create database 데이터베이스이름;

 

3. test용 user 생성

create user '유저이름'@'%' identified by '비밀번호';

  • % : 외부 모든 아이피 접근 허용

4. user에게 DB에 대한 권한 부여

grant all privileges on `데이터베이스이름`.* to '유저이름'@'%';

=> 항상 최소의 권한만 줘야하는 것을 명심!

 

5. 변경사항 저장

flush privileges;

 

 TEST DB에 기존 DB 데이터 복사

1. 복사할 DB 백업해놓기

mysqldump -u 사용자이름 -p 백업할DB이름 > 백업이름.sql

 

2. 생성한 DB에 백업한 sql  복사

mysql -u 사용자이름 -p 복사할DB이름 < 백업이름.sql

 

확인해보면 복사가 아주 잘된 것을 볼 수 있다

주기적으로 해당 명령을 통해 db를 백업해놓는 것도 아주 좋을듯하다

 

추가 설정 

test에는 user들의 정보가 필요하지 않고, 보안을 위해 test를 위한 admin user들을 제외하고는 모두 삭제했다.

또한 spring application의 application.properties에서 이제 개발시에는 testDB에만 접속하도록한다.

 

운영 DB는 항상 보수적으로 소중하게 다루자

반응형