728x90
반응형
A라는 테이블을 파티셔닝 테이블로 만들기 위해 A_temp로 변경 후 새로 A라는 파티셔닝 테이블을 만든 뒤, A 테이블에 A_temp의 데이터를 넣다 오류가 발생하여 A_temp의 테이블을 삭제 후 재생성 하는 과정에서
SQL Error [1050] [42S01]: (conn=429) Table 'schema.A_temp /* Partition p202401 */' already exists
라는 에러가 발생하고 맙니다.
구글링을 해보니 테이블 삭제 했을 때 관련된 파티션이 함께 삭제되지 않아 발생한 문제였습니다.
그래서 잔여 파티션 파일이 존재하여 이를 삭제해주어야 했습니다.
이 부분은 보통 /var/lib/mysql/shema안에 있기 때문에 저 역시 이 디렉토리 안에 있는 삭제되지 않은 .ibd과 .frm파일을 확인할 수 있었고, 이를 삭제하였습니다.
그 이후 docker를 재실행했고, 아래와 같은 docker log를 맞이하게 되었습니다.
2024-11-19 18:55:37+09:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.9.3+maria~ubu2204 started.
2024-11-19 18:55:37+09:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2024-11-19 18:55:37+09:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.9.3+maria~ubu2204 started.
2024-11-19 18:55:38+09:00 [Note] [Entrypoint]: MariaDB upgrade not required
2024-11-19 18:55:38 0 [Note] mysqld (server 10.9.3-MariaDB-1:10.9.3+maria~ubu2204) starting as process 126 ...
2024-11-19 18:55:38 0 [Note] CONNECT: Version 1.07.0002 March 22, 2021
2024-11-19 18:55:38 0 [Note] InnoDB: !!! innodb_force_recovery is set to 1 !!!
2024-11-19 18:55:38 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2024-11-19 18:55:38 0 [Note] InnoDB: Number of transaction pools: 1
2024-11-19 18:55:38 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-11-19 18:55:38 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
2024-11-19 18:55:38 0 [Note] InnoDB: Using liburing
2024-11-19 18:55:38 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
2024-11-19 18:55:38 0 [Note] InnoDB: Completed initialization of buffer pool
2024-11-19 18:55:38 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2024-11-19 18:55:38 0 [Note] InnoDB: Starting crash recovery from checkpoint LSN=235928999166
2024-11-19 18:55:38 0 [Note] InnoDB: At LSN: 235930377572: unable to open file ./DBNAME/TABLE#P#p202401.ibd for tablespace 2221
.ibd 파일을 직접 삭제하는 것은 데이터베이스 무결성을 해치는 행위란 걸 저 메세지를 겪고나니 알아버렸습니다.
docker를 다시 살리기 위해 도커 안에 있는 my.cnf안에
[mysqld]
innodb_force_recovery=1
이런 명령어를 쳐서 복구 시도도 해보고, 도커안에 있는 /var/lib/mysql/shema디렉토리를 복사하여 무결성을 맞춰보려 했으나 그 어떤 것으로도 죽은 도커는 살릴 수가 없었습니다.
다행히 깡통 도커라서 피해는 없었지만 이 글을 읽는 여러분들은 저와 같은 실수는 하지 않기를 바랍니다.
728x90
반응형
'MySQL(DB)' 카테고리의 다른 글
[바미] 정상적인 SELECT 문을 사용했는데 syntax 에러가 발생할 때 (0) | 2024.10.14 |
---|---|
[바미] There is no physical unique key defined. 에러 (0) | 2024.10.04 |
[바미] 데이터베이스 - Join (0) | 2024.07.28 |
[바미] 데이터 파티셔닝 (0) | 2024.06.20 |
[바미] MySQL - 프로시저에 대해 알아봅시다. (0) | 2024.03.28 |