지원되지 않는 MySQL 스토리지 엔진을 사용하는 자동 백업

지원되지 않는 MySQL 스토리지 엔진을 사용하는 자동 백업

MySQL DB 엔진에서는 InnoDB 스토리지 엔진에 대해서만 자동 백업이 지원돼요. MyISAM 같은 다른 스토리지 엔진을 쓰면 백업에서 복원할 때 불안정한 동작이 나타날 수 있으니, 가능하면 InnoDB를 사용하는 걸 권장해요.

출처: 문서

본문

MySQL DB 엔진의 경우 자동 백업은 InnoDB 스토리지 엔진에서만 지원돼요. MyISAM을 포함한 다른 MySQL 스토리지 엔진에서 이러한 기능을 사용하면 백업에서 복원할 때 불안정한 동작이 발생할 수 있어요. 특히 MyISAM 같은 스토리지 엔진은 안정적인 충돌 복구(crash recovery)를 지원하지 않으므로, 충돌이 발생하면 테이블이 손상될 수 있어요. 이러한 이유로 InnoDB 스토리지 엔진을 사용할 것을 권장해요.

기존 MyISAM 테이블을 InnoDB 테이블로 변환하려면 ALTER TABLE 명령을 사용할 수 있어요. 예: ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;

MyISAM을 사용하기로 선택했다면, 충돌 후 손상된 테이블을 REPAIR 명령으로 수동 복구를 시도할 수 있어요. 자세한 내용은 MySQL 문서의 REPAIR TABLE statement를 참고하세요. 하지만 MySQL 문서에 설명된 대로, 모든 데이터를 복구하지 못할 가능성이 높아요.

복원 전에 MyISAM 테이블의 스냅샷을 찍으려면 다음 단계를 따르세요.

  1. MyISAM 테이블에 대한 모든 활동을 중지합니다(즉, 모든 세션을 닫습니다).
    • SHOW FULL PROCESSLIST 명령이 반환하는 각 프로세스에 대해 mysql.rds_kill 명령을 호출해 모든 세션을 닫을 수 있어요.
  2. 각 MyISAM 테이블을 잠그고 플러시(flush)합니다. 예를 들어 다음 명령은 myisam_table1과 myisam_table2라는 두 테이블을 잠그고 플러시해요.
mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
  1. DB 인스턴스나 Multi-AZ DB 클러스터의 스냅샷을 만듭니다. 스냅샷이 완료되면 잠금을 해제하고 MyISAM 테이블에서 활동을 재개합니다. 다음 명령으로 테이블의 잠금을 해제할 수 있어요.
mysql> UNLOCK TABLES;

이러한 단계는 MyISAM이 메모리에 저장된 데이터를 디스크로 플러시하도록 강제해서, DB 스냅샷에서 복원할 때 깨끗하게 시작되도록 보장해요. DB 스냅샷 생성에 대한 자세한 내용은 Amazon RDS용 Single-AZ DB 인스턴스의 DB 스냅샷 생성을 참고하세요.

더 알아보기 (Learn more)