Mariadb11 to MySQL8.4
mariadb 11 의 DB 를 export 해서 mysql 8.4 에 복구를 한다.
콜레이션(Collation) 문제
MySQL 8에 MariaDB 11 덤프를 복원할 때, utf8mb4_0900_ai_ci 콜레이션과 관련된 문제가 발생할 수 있습니다.
MariaDB 11의 기본 콜레이션인 **utf8mb4_0900_ai_ci**는 MySQL 8에서 도입된 콜레이션으로, 호환성 문제는 거의 없습니다. 하지만, MariaDB 11에서 utf8mb4_0900_ai_ci가 아닌 다른 새로운 콜레이션이 사용되거나, MySQL 8의 버전이 매우 낮아 해당 콜레이션이 지원되지 않을 경우 문제가 발생할 수 있습니다.
특히 MySQL 8.0.0에서 8.0.12 사이 버전에서는 utf8mb4_0900_ai_ci 관련 이슈가 보고된 바 있습니다. 이 버전대에서 복원 시 에러가 발생할 수 있습니다.
해결책
MySQL 버전 확인: 복원하려는 MySQL 8의 버전을 확인합니다. 가능하다면 MySQL 8.0.13 이상 버전을 사용하면 콜레이션 호환성 문제가 크게 줄어듭니다.
덤프 파일 수정: 만약 MySQL 버전 업데이트가 어렵다면, 덤프 파일을 열어
utf8mb4_0900_ai_ci콜레이션을 **utf8mb4_general_ci**로 일괄 변경할 수 있습니다.sed명령어를 사용하는 것이 가장 효율적입니다.1
sed 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' mariadb_dump.sql > mysql_dump.sql
덤프 시 옵션 사용:
mariadb-dump를 실행할 때--default-character-set옵션을 사용하여 덤프 파일 자체의 캐릭터셋을 MySQL 8에 호환되는 것으로 지정할 수 있습니다.1
mariadb-dump --default-character-set=utf8mb4 -u [사용자명] -p [데이터베이스명] > [파일명].sql
복원 전, 덤프 파일 내의 CREATE TABLE 및 ALTER TABLE 문에 포함된 **CHARSET**과 COLLATE 선언을 확인하여 MySQL 8과 호환되는지 직접 점검하는 것이 좋습니다.
변경
$ sed ‘s/utf8mb4_uca1400_ai_ci/utf8mb4_general_ci/g’ dump_financedb.sql > dump_financedb_mysql.sql
qkboo@homebook:~/Qkboo$ mysql -u root -p < dump_work_mysql.sql