마이그레이션 작업 중 오류 1236이 발생한 원인은 작업이 필요한 바이너리 로그를 읽기 전에 소스에서 해당 로그가 삭제되었기 때문입니다. 이미 삭제된 로그는 복구할 수 없으므로 기존 마이그레이션 작업을 재개할 수 없습니다.
해결 방법:
- 바이너리 로그 보존 기간 연장: MySQL 8.0에서는
binlog_expire_logs_seconds = 604800으로 설정하여 7일간 로그를 보존합니다. MySQL 5.7에서는expire_logs_days = 7을 사용합니다. - 로그 설정 확인:
log_bin이 활성화되어 있고,binlog_format이ROW,binlog_row_image가FULL로 설정되어 있는지 확인합니다. - 관리형 데이터베이스 설정: Amazon RDS에서는 바이너리 로그 보존 기간을 168시간으로 설정하고 자동 백업을 활성화합니다. Aurora MySQL과 Cloud SQL은 각각의 보존 정책을 확인해야 하며, Azure Database for MySQL은 플랫폼의 백업 정책에 따라 보존 기간이 결정됩니다.
- 로그 삭제 및 디스크 공간 확인:
PURGE BINARY LOGS,RESET BINARY LOGS AND GTIDS명령이나 정리 스크립트가 로그를 조기에 삭제하지 않는지 확인합니다. 또한 바이너리 로그 디렉터리에 충분한 디스크 공간을 확보합니다. - 마이그레이션 재시작: 새로운 보존 설정을 적용하고 확인한 후, 기존 작업을 재개하는 대신 새로운 전체 로드(full load)부터 마이그레이션을 다시 시작합니다. 이를 통해 새로운 스냅샷과 로그 위치를 함께 설정할 수 있습니다.
VPHAN