1. 덤프(restore)
# 덤프 명령어
mysqldump -h <RDS_ENDPOINT> -P <PORT> -u <USERNAME> -p <DATABASE_NAME> > dump01.sql
- <RDS_ENDPOINT>: RDS 인스턴스의 엔드포인트 주소.
- <PORT>: MySQL 서버 포트 (기본값 3306).
- <USERNAME>: 데이터베이스 사용자 이름.
- <DATABASE_NAME>: 덤프할 데이터베이스의 이름.
- dump01.sql: 생성될 덤프 파일의 이름.
- 생성되는 경로 : 현재 경로
# 덤프시 생기는 에러
경고 메세지 (넘버링은 편의상 사용):
1. "Warning:
A partial dump from a server that has GTIDs will by default include
the GTIDs of all transactions, even those that changed suppressed parts of
the database."
2. "If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a
complete dump, pass --all-databases --triggers --routines --events.
Warning:
A dump from a server that has GTIDs enabled will by default include
the GTIDs of all transactions, even those that were executed during its extraction
and might not be represented in the dumped data. This might result in an
inconsistent data dump. In order to ensure a consistent backup of the database,
pass --single-transaction or --lock-all-tables or --master-data."
이 경고 메시지는 MySQL 데이터베이스를 덤프할 때 GTID (Global Transaction Identifier)와 관련된 사항과 데이터의 일관성을 보장하기 위한 설정에 대한 경고이다.
1. GTID 관련 경고
- 해석: GTID가 활성화된 서버에서 덤프를 생성하면 기본적으로 모든 트랜잭션의 GTID가 포함된다. 이 GTID는 덤프 파일에서 제외된 데이터베이스의 일부를 변경한 트랜잭션의 GTID도 포함될 수 있다.
- 해결 방법: GTID를 덤프에서 제외하려면 --set-gtid-purged=OFF 옵션을 사용해야 한다.
mysqldump -h <RDS_ENDPOINT> -P <PORT> -u <USERNAME> -p --set-gtid-purged=OFF <DATABASE_NAME> > dumpfile01.sql
2. 일관성 있는 백업 경고
- 해석: 전체 데이터베이스의 덤프를 만들려면 --all-databases, --triggers, --routines, --events 옵션을 추가하여 덤프를 생성해야 한다.
mysqldump -h <RDS_ENDPOINT> -P <PORT> -u <USERNAME> -p --all-databases --triggers --routines --events > dumpfile01.sql
- 일관성 보장: 데이터베이스의 일관성을 보장하려면 --single-transaction 또는 --lock-all-tables 또는 --master-data 옵션을 추가할 수 있다.
- --single-transaction: InnoDB 테이블을 사용하는 경우, 트랜잭션을 시작하고 전체 덤프를 한 트랜잭션 내에서 실행한다. (데이터베이스의 일관성을 유지 가능)
mysqldump -h <RDS_ENDPOINT> -P <PORT> -u <USERNAME> -p --single-transaction <DATABASE_NAME> > dumpfile01.sql
- --lock-all-tables: 모든 테이블을 잠그고 덤프를 생성한다. 이 옵션은 MyISAM 테이블을 사용할 때 유용하다.
mysqldump -h <RDS_ENDPOINT> -P <PORT> -u <USERNAME> -p --lock-all-tables <DATABASE_NAME> > dumpfile01.sql
- --master-data: 복제 정보를 포함하여 덤프를 생성한다. 주로 복제 설정을 위한 덤프에서 사용된다.
mysqldump -h <RDS_ENDPOINT> -P <PORT> -u <USERNAME> -p --master-data <DATABASE_NAME> > dumpfile01.sql
* 에러 해결 요약
- GTID 제외: --set-gtid-purged=OFF 옵션을 사용하여 GTID를 덤프에서 제외한다.
- 전체 덤프: --all-databases, --triggers, --routines, --events 옵션을 추가하여 전체 데이터베이스 덤프를 만든다.
- 데이터 일관성: --single-transaction, --lock-all-tables, --master-data 중 하나를 사용하여 데이터의 일관성을 보장한다.
2. 복원(restore)
# 복원시 주의사항
1. 데이터베이스 존재 여부: 복원시킬 데이터베이스가 존재해야 한다. 만약 데이터베이스가 없다면, 먼저 생성해야 한다. 데이터베이스를 생성하려면 다음 명령어를 사용할 수 있다
mysql -h localhost -u <USERNAME> -p -e "CREATE DATABASE data01;"
2. 권한 문제: 사용자가 데이터베이스에 대한 적절한 권한을 가지고 있는지 확인이 필요하다.
# 복원 명령어
mysql -h localhost -u <USERNAME> -p <database명> < <dump 파일명>
# 예시
mysql -h localhost -u root -p data01 < dumpfile.sql
- localhost: 데이터베이스가 로컬호스트에 위치할 경우 사용.
- root: 데이터베이스 사용자 이름.
- data01: 복원할 데이터베이스 이름.
- dumpfile.sql: 덤프 파일의 이름.
복원 과정을 시작하면 비밀번호를 입력하라는 프롬프트가 표시된다. 비밀번호를 입력한 후 덤프 파일의 내용이 test04 데이터베이스에 복원된다.
'데이터베이스 > Mysql' 카테고리의 다른 글
Mysql 심화 정리 (0) | 2024.10.14 |
---|---|
MySQL 정리 (2) | 2024.10.12 |