---
title: "MySQL 덤프를 다른 MySQL 버전으로"
description: "MySQL 덤프를 불러올 버전에 맞게 변환. 8.0이나 9 덤프는 5.7이 받는 콜레이션이 돼요. 같은 테이블, 키, 데이터와 모든 변경 보고서."
canonical: https://intosql.com/ko/mysql-to-mysql
last_updated: 2026-10-15
---

# MySQL 덤프를 다른 MySQL 버전으로

MySQL 5.5~9의 mysqldump, mysqlpump, phpMyAdmin, Adminer 덤프(.sql 또는 .sql.gz)를 놓으면 MySQL 5.7 이상에서 불러와지는 스크립트를 받아요. utf8mb4_0900_ai_ci처럼 MySQL 8 이상만 아는 콜레이션은 utf8mb4_unicode_520_ci가 되고, 모든 변경은 보고서에 나와요.

[MySQL에서 MySQL로 마이그레이션 가이드](https://intosql.com/docs/migrations/mysql-to-mysql)

[MySQL에서 MySQL로의 데이터 타입](https://intosql.com/docs/types/mysql-to-mysql)

## 파일과 스크립트에서 바뀌는 점

각 행은 변환기가 적용하는 규칙이며, 규칙이 데이터를 바꿀 때 보고서에 쓰는 줄이 함께 나와요.

| 파일에서 | 스크립트에서 | 보고서 줄 |
| --- | --- | --- |
| utf8mb4_0900_* and utf8mb4_uca1400_* collations | utf8mb4_unicode_520_ci (바이너리는 utf8mb4_bin) | `collation_replaced` |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | 유지 |  |
| TIME | TIME, 기간 포함 |  |
| TINYINT(1), BOOL | TINYINT(1) |  |
| UNSIGNED and ZEROFILL | 유지 |  |
| ENUM and SET, the '' error value included | 유지 |  |
| JSON | JSON |  |
| NUL bytes in text | 유지 |  |
| AUTO_INCREMENT | 테이블 카운터가 있는 AUTO_INCREMENT |  |
| MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump | 열에 대한 인덱스와 테이블당 카운터 하나 | `myisam_group_autoincrement` |
| ON UPDATE CURRENT_TIMESTAMP | 유지 |  |
| generated columns | 원본과 같은 VIRTUAL 또는 STORED |  |
| generated columns with functions IntoSQL doesn't read | 일반 열 | `generated_not_translated` |
| INVISIBLE columns | 일반 열 | `invisible_column` |
| CHECK constraints | 유지(MySQL 5.7은 구문만 읽고 무시해요) |  |
| CHECK constraints with functions IntoSQL doesn't read | 만들지 않음 | `check_skipped` |
| CHECK ... NOT ENFORCED | 만들지 않음 | `check_not_enforced` |
| expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY | 기본값 없음 | `default_not_translated` |
| functional indexes, KEY ((expr)) | 만들지 않음 | `index_skipped` |
| keys and indexes on a prefix, c(20) | 유지 |  |
| FULLTEXT indexes | 유지 |  |
| SPATIAL indexes | 유지 |  |
| foreign keys | 유지, FOREIGN_KEY_CHECKS=0으로 불러옴 |  |
| GEOMETRY, POINT, POLYGON... | 유지, 값마다 SRID 포함 |  |
| INET4, INET6, UUID (MariaDB) | varchar(15), varchar(39), char(36) | `type_replaced` |
| BINARY, VARBINARY, BLOB | 유지 |  |
| PARTITION BY | 하나의 테이블 | `partitions_dropped` |
| WITH SYSTEM VERSIONING (MariaDB) | 현재 행만 담은 테이블 | `system_versioning_dropped` |
| Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB) | InnoDB | `engine_dropped` |
| CREATE SEQUENCE (MariaDB) | 만들지 않음 | `sequence_not_converted` |
| views, triggers, procedures, functions and events | 보고서에 나열 | `not_converted_objects` |
| NOT NULL columns with values that become NULL | NOT NULL 제거 | `not_null_relaxed` |
| text that isn't valid in its character set | 잘못된 바이트를 대체 문자로 | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | 그대로 복사 | `mojibake_suspected` |
| dumps without CREATE TABLE | 값으로 판단한 타입 | `no_schema` |
| geometries in a dump without CREATE TABLE | GEOMETRY |  |
| SET NAMES utf8 from utf8mb4 tables | 변환하고 경고 표시 | `dump_lost_four_byte_chars` |
| dumps without SET NAMES whose text isn't UTF-8 | Latin-1 (Windows-1252)로 읽음 | `charset_guessed` |
| sjis, cp932, gbk, big5 dumps | UTF-8로 읽고 경고 표시 | `unsupported_charset` |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | 계산함 |  |
| other expressions in rows | NULL | `expression_value` |
| DEFAULT in VALUES | 열의 기본값 | `default_keyword_filled` |
| DEFAULT in VALUES without a literal default | NULL | `default_keyword_null` |
| REPLACE and INSERT IGNORE | 일반 행 | `replace_as_insert` |
| types IntoSQL doesn't know | LONGBLOB | `unknown_type` |
| values that don't fit their column | NULL | `invalid_value_null` |
| unreadable geometries | NULL | `bad_geometry` |
| TIMESTAMP | 유지, 덤프에 명시된 시간대로 불러옴 |  |
| VECTOR(n) (MariaDB 11.7+) | 부동소수점 값을 배열로 담은 json | `type_replaced` |

## 스크립트를 MySQL에 불러오기

스크립트는 테이블을 만들고 행을 복사한 다음 키, 인덱스, 외래 키를 추가해요. 그래서 빨리 불러오고 첫 오류에서 멈춰요.

```shell
mysql --default-character-set=utf8mb4 mydb < mysql.mysql.sql
```

외래 키는 덤프에 선언된 대로 만들고, 행을 불러오는 동안 FOREIGN_KEY_CHECKS=0을 써요. 그래서 존재하지 않는 행을 가리키는 행이 있어도 불러오기가 멈추지 않아요.

큰 덤프는 서버와 같은 컴퓨터에서 클라이언트를 실행하고, 한 행이 아주 크면 max_allowed_packet을 늘리세요.

IntoSQL Pro는 데스크톱 앱이나 명령줄에서 파일을 MySQL에 바로 불러와요. 스크립트를 따로 만들 필요가 없어요.

## 좋은 결과를 위한 MySQL 덤프 방법

변환기는 덤프에 담긴 내용을 읽어요. 다음 옵션을 쓰면 더 많은 데이터가 덤프에 남아요:

- --default-character-set=utf8mb4는 이모지와 기타 4바이트 문자를 유지해요. utf8 덤프는 변환기가 보기 전에 이 문자를 잃어요.
- --hex-blob은 바이너리 열을 16진수로 써서, 시스템 간에 복사해도 손상되지 않아요.
- --routines --triggers --events는 이 객체들을 덤프에 추가해서 보고서에 나열할 수 있게 해요.

## 변환되지 않는 것

뷰, 트리거, 프로시저, 함수 등 MySQL 자체 언어로 작성된 객체는 몰래 빠지지 않고 보고서에 이름으로 나와요. 불러올 MySQL 버전에서 확인한 뒤 다시 만들 수 있어요.

## MySQL 버전 간 이동 질문

### 덤프가 업로드되나요?

아니요. 변환기는 브라우저에서 실행되고 디스크의 덤프를 조각조각 읽으므로, 덤프가 컴퓨터 밖으로 나가지 않아요. 데스크톱 앱과 명령줄도 컴퓨터에서 변환해요.

### 덤프는 얼마나 커도 되나요?

변환기는 덤프 전체를 메모리에 올리지 않아요. 파일을 범위별로 두 번 읽고, 읽는 대로 스크립트를 써요. 수 GB 덤프도 브라우저, 데스크톱 앱, 명령줄에서 변환돼요.

### MariaDB 덤프도 읽나요?

네. mariadb-dump와 MariaDB 10.3부터 12까지의 덤프도 같은 방식으로 변환되며, MariaDB의 INET6, INET4, UUID 열도 포함돼요.

### 0000-00-00 날짜는 어떻게 되나요?

MySQL은(는) 그대로 유지해요. 스크립트가 불러오는 동안 0과 불가능한 날짜를 받는 SQL 모드를 설정해서 그대로 들어가요.

### AUTO_INCREMENT 값은 유지되나요?

네. AUTO_INCREMENT는 그대로이고, 테이블 카운터는 덤프가 멈춘 곳부터 이어져요.

### TINYINT(1)은 boolean이 되나요?

원본처럼 TINYINT(1)로 남아서 모든 값이 숫자를 유지해요.

### 저장 프로시저와 트리거는 어떻게 되나요?

보고서에 이름으로 나오고 변환하지 않아요. 불러올 MySQL 버전에서 확인한 뒤 다시 만들 수 있어요. ON UPDATE CURRENT_TIMESTAMP는 그대로예요.

### 스크립트는 어떤 MySQL 버전에서 불러올 수 있나요?

MySQL 5.7 이상이에요. 모든 테스트 덤프가 5.7과 9에서 불러와지고, 문제가 생기면 첫 오류에서 멈춰요.

## MySQL에서

- [MySQL에서 PostgreSQL로](https://intosql.com/ko/mysql-to-postgresql)
- [MySQL에서 MariaDB로](https://intosql.com/ko/mysql-to-mariadb)
- [MySQL에서 SQLite로](https://intosql.com/ko/mysql-to-sqlite)
- [MySQL에서 SQL Server로](https://intosql.com/ko/mysql-to-sql-server)
- [MySQL에서 Oracle로](https://intosql.com/ko/mysql-to-oracle)

## MySQL로

- [MariaDB에서 MySQL로](https://intosql.com/ko/mariadb-to-mysql)
- [PostgreSQL에서 MySQL로](https://intosql.com/ko/postgresql-to-mysql)
- [SQL Server에서 MySQL로](https://intosql.com/ko/sql-server-to-mysql)
- [SQLite에서 MySQL로](https://intosql.com/ko/sqlite-to-mysql)
- [Oracle에서 MySQL로](https://intosql.com/ko/oracle-to-mysql)

## 가이드와 모든 조합

- [MySQL에서 MySQL로 마이그레이션 가이드](https://intosql.com/docs/migrations/mysql-to-mysql)
- [MySQL에서 MySQL로의 데이터 타입](https://intosql.com/docs/types/mysql-to-mysql)
- [모든 데이터베이스 조합](https://intosql.com/ko/database-migration)
