예전에 테이블 단위로 백업해놨던 것을 다시 복원할 일이 있어서 하나씩 다음과 같은 명령으로 복원하던 중에 에러를 만났습니다.
mysql -u root -p 데이터베이스명 < 테이블백업파일.sql
ERROR 3546 (HY000) at line 26: @@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED
구글링을 통해 얻은 해법은 mysql 콘솔에서 다음 명령을 실행하는 것이었습니다.
RESET MASTER
위 명령을 실행한 후에 다시 테이블 복원 명령을 실행하니 에러 없이 테이블이 잘 복원되었습니다.
RESET MASTER를 해주면 다음과 같은 일이 일어난다고 합니다[1].
1) 인덱스 파일에 있는 모든 바이너리 로그 파일들이 지워집니다.
2) 바이너리 로그 인덱스 파일이 빈(empty) 상태가 되도록 리셋됩니다.
3) .000001 접미사(suffix)를 가진 새로운 바이너리 로그 파일이 생성됩니다.
만약 쌓여있는 바이너리 로그를 잘 보존해야 하는 상황이라면 함부로 해서는 안되는 명령이겠죠. 저는 그냥 예전 데이터를 확인할 필요만 있었던 것이기 때문에 상관 없는 상황이긴 했습니다.
참고자료
[1] https://mariadb.com/kb/en/reset-master/
관련 글
'DB > SQL' 카테고리의 다른 글
[MySQL] 인덱스 사용 판단 기준 (0) | 2022.10.22 |
---|---|
[MySQL] 테이블 간 관계 맺기(primary key, foreign key) (1) | 2022.10.20 |
[MySQL] 인덱스 유무에 따른 데이터 조회 속도 차이 비교 (0) | 2022.10.19 |
[sqlite3] 이전 행의 데이터를 현재 행에 가져와야 할 때, lead() 함수 (0) | 2022.10.04 |
[MySQL] 테이블의 컬럼 개수 확인하기 (0) | 2022.09.10 |
[MySQL] 윈도우 PC에서 MySQL 환경 변수 설정하는 방법 (0) | 2022.09.09 |
MySQL Workbench에서 csv 파일 export시 한글 깨짐 현상 해결 방법 (2) | 2022.08.16 |
sqlite3에서는 컬럼 순서 변경 불가 (0) | 2022.08.06 |