mysql과 postgres를 사용하면서 어떻게 db를 마이그레이션 하는지, 그 중에 dump방식을 어떻게 사용하는지 살펴 보고자 한다. 이번 경우엔AWS RDS -> AWS RDS 또는 로컬DB -> AWS RDS 의 상황에 따른 dump 기능을 사용하는 방법을 예시를 들고자 한다. 신규DB를 구축하고, 기존 DB에서 dump를 통해 신규 DB를 구축하는 상황이라고 생각하면 될 듯하다.
0.먼저, 신규 DB를 구축하기 위해 AWS콘솔을 통해 RDS 데이터베이스 생성하고 스키마를 생성한다.(여기서 말하는 데이터베이스는 DB서버 그 자체를 지칭하고, 스키마는 DB서버 내에 database라고 생각하면 된다.)
아래의 덤프작업은 rds가 설치된 서버에서 직접 작업하는 것이 아닌, rds로 접근 가능한 ec2에서 아래의 작업을 하는 것으로 가정한다. 그러므로, 목적지인 대상host를 -h옵션으로 주고 명령어를 실행하게 될 것이다. 아래 작업을 위해서 ec2 리눅스에는 mysql, 또는 postgres가 설치되어 있어야 해당 DBMS의 명령어 실행이 가능하다.
1.MYSQL
1)dump파일 생성
mysqldump --set-gtid-purged=OFF --column-statistics=0 -h 복제대상엔드포인트주소 --user=계정명 --password=패스워드 복제대상데이터베이스명 > 생성할덤프파일명.sql
위 명령어를 통해 기존의 DB에서 dump파일을 sql확장자를 가진 파일로 만들어 낸다.
옵션을 하나씩 살펴보면,
-set-gtid-purged : 덤프 된 서버의 일부 데이터만 가지고, 작업할 경우에 ON을 시키므로 일반적으론 OFF 옵션을 주면된다.
-column-statistics : 덤프파일을 만들면서, 통계정보(histogram statistics)를 추가적으로 테이블형태로 generate하여 사용할경우에 옵션을 주는 것인데, 일반적으로 0을 주면 될것이다.
-h 옵션 : 복제 대상 호스트 주소를 지정하는 것(RDS탭의 데이터베이스를 들어가보면 연결&보안이라고 되어 있는 탭에 엔드포인트 정보를 복사해서 붙여넣으면된다.)
2)신규 DB에 dump파일을 통해 DB복사
mysql -h 목적지호스트--user=계정명 --password=비밀번호 목적지데이터베이스명 < 생성한덤프파일명.sql
2.POSTGRES
1)dump파일 생성
pg_dump -h 복제대상엔드포인트주소 -U 계정명 -f 생성할덤프파일명.sql 복제대상데이터베이스명
위 명령어 실행 후 password입력
2)신규 DB에 dump파일을 통해 DB복사
psql -U 계정명 -d 신규데이터베이스명 -h 목적지호스트 -f 생성한덤프파일명.sql
참고) 기업용 서버환경이라면, vpc가 분리된 private한 구성으로 DB, 서버가 구축되어 있을 것이다. 그때에는 상황에 맞게 DB와 같은 네트워크에 존재하는 bation서버에서 작업을 위 작업을 수행하든 터널링을 통해 작업을 수행하면 될 것이다.
'프로그래밍 > database' 카테고리의 다른 글
redis expire time(set, hset, zadd) 에 관하여 (0) | 2022.12.16 |
---|---|
RDB index 원리 (0) | 2022.12.15 |
MYSQL SHOW INDEX (0) | 2022.12.15 |
GROUP BY 2개 이상 (0) | 2022.12.10 |
mysql csv file export (0) | 2022.07.07 |