백엔드 개발을 하다보면 QA용 테스트 데이터베이스를 내 컴퓨터 로컬 데이터베이스로 복사를 자주하게 된다. DBeaver, Workbench 등 데이터베이스 클라이언트 프로그램을 이용해도 되지만 번거롭다. 매번 복사할 데이터베이스를 선택하고, export 누르고, 다시 로컬 데이터베이스에 접속해서 import 누르는 과정을 진행하는데도 시간이 꽤 걸린다. 자칫 잘못하면 로컬 데이터베이스를 QA 테스트 데이터베이스로 거꾸로 복사할 수도 있으니 집중해야 해서 더 피곤하다.
그래서 셸 스크립트로 만들었다.
#!/bin/bash
# 원격 데이터베이스
MYSQL_HOST=""
MYSQL_USER=""
MYSQL_PASSWORD=""
# 로컬 데이터베이스
MYSQL_HOST_LOCAL="127.0.0.1"
MYSQL_USER_LOCAL="root"
MYSQL_PASSWORD_LOCAL="password"
DATABASE_NAME="dbname"
# 로컬 데이터베이스를 백업
mysqldump -q --column-statistics=0 --host=$MYSQL_HOST_LOCAL --user=$MYSQL_USER_LOCAL --password=$MYSQL_PASSWORD_LOCAL
$DATABASE_NAME > $DATABASE_NAME-$(date +%Y-%m-%d).sql;
# 원격 데이터베이스를 백업
mysqldump -q --column-statistics=0 --host=$MYSQL_HOST --user=$MYSQL_USER --set-gtid-purged=OFF --password=$MYSQL_PASSWORD
$DATABASE_NAME > $DATABASE_NAME.sql;
# 로컬 데이터베이스에 복구
mysql --host=$MYSQL_HOST_LOCAL --user=$MYSQL_USER_LOCAL --password=$MYSQL_PASSWORD_LOCAL $DATABASE_NAME < $DATABASE_NAME.sql
원격 데이터베이스와 로컬 데이터베이스 설정값을 입력하고 위 셸 스크립트 파일을 실행하면 원격 데이터베이스가 로컬 데이터베이스로 복사된다. 위 sh 파일이 있는 곳에서 아래처럼 명령어를 실행하면 된다.
$ sh ./copy-database-from-remote-into-local.sh