반응형
기억을 했음에도 잊어버리곤 하기에 글을 남겨 본다.
AWS RDS를 사용하다보면 아주 가끔은 dump를 실행해야 하는 경우는 필요하다.
mysqldump 명령어를 이용해서 dump시 아래와 같은 warning을 마주하게 된다.
이때 당황해 하지 말고 옵션을 추가하여 dump를 진행하면 된다.
Warning msg #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. If you don't want to restore GTIDs,
pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
warnign msg#1에 나와 있듯이 "--set-gtid-purged=OFF" 옵션을 추가하면 해당 warning은 없앨 수 있다.
Warning msg#2
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.
warnign msg#2도 마찬가지로 warning message에 나와 있듯이 "--single-transaction" or "--lock-all-tables" or "--master-data" 중 하나를 옵션으로추가 하면 된다.
- --single-transaction
- 이 옵션은 트랜잭션 격리 모드를 REPEATABLE READ로 설정하고 데이터를 덤프하기 전에 START TRANSACTION SQL 문을 서버에 보냅니다. 이는 InnoDB와 같은 트랜잭션 테이블에서만 유용합니다. 왜냐하면 애플리케이션을 차단하지 않고 START TRANSACTION이 실행된 당시 데이터베이스의 일관된 상태를 덤프하기 때문입니다.
데이터의 크기가 크다면 --quick 옵션을 추가하여 사용하도록 합니다. - 이 옵션 은 --lock-tables와 같이 사용되어서는 안됩니다.
- 이 옵션은 트랜잭션 격리 모드를 REPEATABLE READ로 설정하고 데이터를 덤프하기 전에 START TRANSACTION SQL 문을 서버에 보냅니다. 이는 InnoDB와 같은 트랜잭션 테이블에서만 유용합니다. 왜냐하면 애플리케이션을 차단하지 않고 START TRANSACTION이 실행된 당시 데이터베이스의 일관된 상태를 덤프하기 때문입니다.
- --lock-all-tables
- 모든 데이터베이스의 모든 테이블을 잠급니다. 이는 전체 덤프 기간 동안 전역 읽기 잠금을 획득하여 달성됩니다. 이 옵션은 --single-transaction 및 --lock-tables를 자동으로 해제합니다.
Warning msg#3
-- Warning: column statistics not supported by the server.
warnign msg#3은 "--column-statistics=0" 옵션을 사용하면 된다.
※자세한 옵션 설명 및 다른 옵션은 공식문서를 확인 하면 된다.
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
기본적으로 아래와 같이 dump명령어를 사용하겠지만 위의 warning을 없애고자할 경우 위에서 언급한 옵션을 추가하면 된다.
usage) mysqldump [-hDB_ADDRESS] -uUSER_NAME -p [DATABASE_NAME] > DUMP_FILE_NAME
option추가시
mysqldump --set-gtid-purged=OFF --single-transaction --column-statistics=0 \
[-hDB_ADDRESS] -uUSER_NAME -p [DATABASE_NAME] > DUMP_FILE_NAME
반응형