반응형
종종 DB스키마, 데이터를 복제해야하는 경우가 있다
스키마만 복제하는 경우, 기존 DB에서 DDL을 추출하면되어서 비교적 간단하고, DB Client로도 진행하기 편리한데
데이터까지 복제하는 경우 CLI로 하는게 더 간편한 것 같다.
나는 DB 복제할 일이 꽤 자주 있어서, 한번 정리해두고 필요할 때마다 보고 하려고 한다!
1. mysqldump가 설치되어있는지 확인
mysqldump 실행
설치되어 있지 않으면 homebrew로 설치
brew install mysql-client
echo 'export PATH="/opt/homebrew/opt/mysql-client/bin:$PATH"' >> ~/.zshrc
2. 복제될 DB 담긴 sql 파일 생성
mysqldump -u admin -p --host alyce.clsou4b7zkj5.ap-northeast-2.rds.amazonaws.com --port 3579 --databases exercise_dictionary > alyce.sql
mysqldump -u 사용자이름 -p --host 호스트이름 --port 포트이름 --databases 데이터베이스이름 > 파일명.sql
예시)
mysqldump -u admin -p --host routebox-db.cv.ap-northeast-2.rds.amazonaws.com --port 3306 --databases routebox-dev > routebox-dev.sql
따로 경로 설정을 안한 경우, 명령어를 실행한 위치에 sql 파일이 생성됨
3. 원하는 DB에 데이터 복제
이제 sql문을 실행해서 원하는 DB에 넣어줘야함
mysql -u admin -p --host 호스트이름 --port 포트 데이터베이스이름 < 파일명.sql
예시)
mysql -u admin -p --host routebox-db.cv.ap-northeast-2.rds.amazonaws.com --port 3306 routebox-prod < routebox-dev.sql
주의) 충분한 권한이 있어야함. 테이블을 만들 수 있어야함
오류 1
Enter password:
ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation
해결방법 - sql문 생성할 때, 아래 옵션 붙여서 실행
--set-gtid-purged=OFF
mysqldump -u 사용자이름 -p --set-gtid-purged=OFF --host 호스트이름 --port 포트이름 --databases 데이터베이스이름 > 파일명.sql
https://sonnson.tistory.com/15
반응형
'🔙 Backend > 🗄️ Database' 카테고리의 다른 글
[Mysql] 날짜 시간 더하기, 빼기 (DATE_ADD, DATE_SUB) (0) | 2022.04.04 |
---|---|
[Mysql] mysql에서 현재 연결된 connection 찾기 (0) | 2022.03.11 |
[MySql] 숫자/문자 자리수 맞추기 (LPAD, RPAD) (0) | 2022.03.02 |
[MySql] GROUP BY 내부 정렬하기 (0) | 2022.03.02 |
[Mysql] 현재 날짜 기준으로 특정기간만 가져오기 (0) | 2021.05.29 |