MySQL의 Partition 사용했을 때에 나온 에러의 대응 메모
환경
AWS RDS Aurora 5.7.12
실행
mysql> CREATE TABLE `hoge` (
-> `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-> `parent_id` int(10) unsigned NOT NULL,
-> `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
-> `modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-> PRIMARY KEY (`id`),
-> ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC
-> /*!50100 PARTITION BY HASH (parent_id)
-> PARTITIONS 1024 */;
ERROR 1030 (HY000): Got error 168 from storage engine
에러적으로는 스토리지의 여유가 없는 것처럼 보인다.
여러가지 조사해도, 파일 용량을 비우고 싶은 기사가 많지만, RDS는 그러한 것 어떻게 하면 좋을까?
검증
Partition없이 실행
결과: OK
일반 테이블이 생겼습니다.
하지만 Partition을 사용하고 싶다…
DB 복사 및 생성 및 실행
결과:NG
같은 오류가 반환됩니다.
테이블 이름 변경 및 실행
결과: OK
mysql> CREATE TABLE `fuga` (
-> `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-> `parent_id` int(10) unsigned NOT NULL,
-> `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
-> `modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-> PRIMARY KEY (`id`),
-> ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC
-> /*!50100 PARTITION BY HASH (parent_id)
-> PARTITIONS 1024 */;
Query OK, 0 rows affected (14.62 sec)
아무것도 모릅니다 ...
대응
데이터베이스 자체가 손상되었다고 판단.
임시 데이터베이스를 만들고 현재 데이터를 저장하고 기존 데이터베이스를 삭제하여 해결했습니다.
/*退避用DBを作成*/
CREATE DATABASE temp;
/*現状のデータを退避*/
CREATE TABLE temp_db.users LIKE now_db.users;
...
INSERT INTO temp_db.users SELECT * FROM now_db.users;
...
/*壊れたDBを削除*/
DROP DATABASE now_db;
/*新しくDBを作成*/
CREATE DATABASE now_db;
RENAME TABLE temp_db.users TO now_db.users;
...
/*一時退避したDBを削除*/
DROP DATABASE temp_db;
참고:
htps : // 코 m / 가코 351 / ms / ba d052c55c 6d85903d
htps : // 이 m / ぃ s pe r0077 / ms / 06 d22b692 a 25bd19b5
테이블명에 구애가 없는 것이라면, 테이블명을 바꾼 것만이 빠르 것 같습니다…
이번은 develop 환경이었기 때문에 이런 대응으로 끝냈습니다만, production에서는 하고 싶지 않네요…
뭔가 더 좋은 해결책이 있다면 알려주세요.
Reference
이 문제에 관하여(MySQL의 Partition 사용했을 때에 나온 에러의 대응 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kyon_g/items/9daa0f2aa97562f57c4f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)