MariaDB 덤프를 이전 또는 최신 MariaDB로 옮기기
mariadb-dump, mysqldump, phpMyAdmin, Adminer 덤프(.sql 또는 .sql.gz)를 놓으면 MariaDB 10.11 이상에서 불러와지는 스크립트를 받아요. UUID, INET4, INET6, JSON, 시퀀스는 그대로이고, VECTOR는 11.7 이전 버전용으로 실수 JSON 배열이 되며, 모든 변경은 보고서에 나와요.
18개 행 변환, 수정 없음, 거부 없음
shop_2024_mariadb.sql의 테이블MariaDB 11.8.9-MariaDB-ubu2404 덤프 · mariadb-dump(으)로 작성됨 · utf8mb4
customers8개 행
8개 열 id int(10) unsigned not null name varchar(100) not null email varchar(150) not null country char(2) not null is_active tinyint(1) not null signed_up date not null created_at timestamp not null last_ip inet6 orders10개 행
12개 열 id int(10) unsigned not null customer_id int(10) unsigned not null status enum('pending','paid','shipped','cancelled') not null total decimal(10,2) not null items smallint(5) unsigned not null ordered_at datetime not null shipped_at datetime note varchar(255) order_ref uuid not null invoice int(11) not null details json updated_at timestamp not null
-- Written by IntoSQL from a MySQL dump. Load it with: mariadb --default-character-set=utf8mb4 <database> < <file>
SET NAMES utf8mb4;
SET TIME_ZONE = '+00:00';
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO,ALLOW_INVALID_DATES';
CREATE SEQUENCE `invoice_numbers` START WITH 1000 MINVALUE 1 MAXVALUE 9223372036854775806 INCREMENT BY 1;
SELECT SETVAL(`invoice_numbers`, 2000, 0);
CREATE TABLE `customers` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`email` varchar(150) NOT NULL,
`country` char(2) NOT NULL DEFAULT 'US',
`is_active` tinyint(1) NOT NULL DEFAULT 1,
`signed_up` date NOT NULL DEFAULT '0000-00-00',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`last_ip` inet6 DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci COMMENT='People who bought at least once';
CREATE TABLE `orders` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`customer_id` int(10) unsigned NOT NULL,
`status` enum('pending','paid','shipped','cancelled') NOT NULL DEFAULT 'pending',
`total` decimal(10,2) NOT NULL,
`items` smallint(5) unsigned NOT NULL DEFAULT 1,
`ordered_at` datetime NOT NULL,
`shipped_at` datetime DEFAULT NULL,
`note` varchar(255) DEFAULT NULL,
`order_ref` uuid NOT NULL,
`invoice` int(11) NOT NULL DEFAULT (nextval(`invoice_numbers`)),
`details` json DEFAULT NULL,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_customer` (`customer_id`),
KEY `idx_status_date` (`status`,`ordered_at`),
CONSTRAINT `fk_orders_customer` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`,`last_ip`) VALUES (1,'Ana Martínez','ana@example.com','MX',1,'2023-01-15','2023-01-15 10:24:00','::ffff:203.0.113.7'),(2,'Zoë Müller','zoe@example.de','DE',1,'2023-02-03','2023-02-03 08:11:42','2001:db8::1'),(3,'José Peña','jose@example.es','ES',0,'2023-03-21','2023-03-21 19:05:17',NULL),(4,'李雷','lilei@example.cn','CN',1,'2023-05-09','2023-05-09 02:40:00','::ffff:198.51.100.23'),(5,'Noah O\'Brien','noah@example.ie','IE',1,'0000-00-00','2023-06-30 14:00:00',NULL),(6,'Amélie Laurent','amelie@example.fr','FR',1,'2024-01-02','2024-01-02 09:30:00','2001:db8:85a3::8a2e:370:7334'),(7,'Ravi Patel','ravi@example.in','IN',0,'2024-02-29','2024-02-29 23:59:59','::ffff:192.0.2.200'),(8,'Sofia Rossi 🌻','sofia@example.it','IT',1,'2024-04-12','2024-04-12 12:12:12',NULL);
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`order_ref`,`invoice`,`details`,`updated_at`) VALUES (1,1,'shipped',129.90,3,'2024-03-01 10:00:00','2024-03-02 16:30:00',NULL,'0b7a4c2e-3f1d-4e8a-9c55-1a2b3c4d5e6f',1000,'{\"gift\": false}','2024-03-02 16:30:00'),(2,2,'paid',54.00,1,'2024-03-02 11:15:00',NULL,'Gift wrap 🎁','1c8b5d3f-4a2e-4f9b-8d66-2b3c4d5e6f70',1001,'{\"gift\": true, \"wrap\": \"red\"}','2024-03-02 11:20:00'),(3,1,'cancelled',12.50,1,'2024-03-03 09:45:00',NULL,'Customer changed their mind','2d9c6e4a-5b3f-4a0c-9e77-3c4d5e6f7081',1002,NULL,'2024-03-03 10:00:00'),(4,4,'shipped',980.00,12,'2024-03-05 02:10:00','2024-03-07 08:00:00','请小心轻放','3e0d7f5b-6c4a-4b1d-8f88-4d5e6f708192',1003,'{\"fragile\": true}','2024-03-07 08:00:00'),(5,5,'pending',45.75,2,'2024-03-08 17:20:00',NULL,'Leave at the door; ring twice','4f1e806c-7d5b-4c2e-9a99-5e6f708192a3',1004,NULL,'2024-03-08 17:20:00'),(6,6,'shipped',310.40,5,'2024-03-10 13:00:00','2024-03-11 09:00:00','Fragile: \"glass\"','50f2917d-8e6c-4d3f-8baa-6f708192a3b4',1005,'{\"fragile\": true}','2024-03-11 09:00:00'),(7,8,'paid',76.20,2,'2024-03-11 18:45:00',NULL,NULL,'6103a28e-9f7d-4e40-9cbb-708192a3b4c5',1006,NULL,'2024-03-11 18:46:00'),(8,2,'',19.99,1,'2024-03-12 08:00:00',NULL,'Status lost in an old import','7214b39f-a08e-4f51-8dcc-8192a3b4c5d6',1007,NULL,'2024-03-12 08:00:00'),(9,3,'shipped',64.00,2,'2024-03-14 15:30:00','0000-00-00 00:00:00','Shipping date never recorded','8325c4a0-b19f-4062-9edd-92a3b4c5d6e7',1008,'{\"parcels\": [1, 2]}','2024-03-15 10:00:00'),(10,7,'paid',1499.00,1,'2024-03-15 21:05:00',NULL,'C:\\Users\\ravi\\invoice.pdf','9436d5b1-c2a0-4173-8fee-a3b4c5d6e7f8',1009,NULL,'2024-03-15 21:05:00');
SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
수정 사항
수정할 부분이 없었어요.
파일은 이 컴퓨터에서 변환되고 업로드되지 않아요.
다른 샘플:
파일과 스크립트에서 바뀌는 점
각 행은 변환기가 적용하는 규칙이며, 규칙이 데이터를 바꿀 때 보고서에 쓰는 줄이 함께 나와요.
utf8mb4_0900_* and utf8mb4_uca1400_* collations
utf8mb4_0900_*는 utf8mb4_unicode_520_ci (바이너리는 utf8mb4_bin)
MariaDB는 새 콜레이션을 몰라요. 대부분의 MySQL 8 덤프가 다른 곳에서 불러와지지 않는 오류가 바로 이것이에요. unicode_520이 같은 Unicode 규칙을 가장 가깝게 따라요.
보고서 줄: collation_replaced
zero, partial or impossible dates (0000-00-00, 2024-02-30)
유지
스크립트는 ALLOW_INVALID_DATES를 켜고 NO_ZERO_DATE 없이 불러오므로, MariaDB는 원본과 같은 값을 유지해요.
TIME
TIME, 기간 포함
같은 타입이고 범위도 같아요.
TINYINT(1), BOOL
TINYINT(1)
같은 타입이고 값도 같아요.
UNSIGNED and ZEROFILL
유지
같은 타입이에요.
ENUM and SET, the '' error value included
유지
같은 타입이에요. 스크립트는 strict 모드 없이 불러오므로 오류 값도 그대로 들어가요.
JSON
JSON(MariaDB가 검사하는 LONGTEXT)
MariaDB는 같은 JSON 텍스트를 읽어요.
NUL bytes in text
유지
값은 원본과 같은 이스케이프로 복사해요.
AUTO_INCREMENT
테이블 카운터가 있는 AUTO_INCREMENT
카운터는 MyISAM의 그룹별 카운터를 포함해 원본이 멈춘 곳부터 이어져요.
MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump
열에 대한 인덱스와 테이블당 카운터 하나
InnoDB는 인덱스의 첫 열일 때만 열에 번호를 매기고, 카운터는 테이블 전체에 하나예요.
보고서 줄: myisam_group_autoincrement
ON UPDATE CURRENT_TIMESTAMP
유지
같은 절이며, 열의 초 소수부도 같아요.
generated columns
원본과 같은 VIRTUAL 또는 STORED
같은 수식을 항목별로 변환해요.
generated columns with functions IntoSQL doesn't read
일반 열
IntoSQL이 읽을 수 없는 수식은 일반 열로 남고 보고서에 한 줄 기록돼요.
보고서 줄: generated_not_translated
INVISIBLE columns
INVISIBLE 열
보이지 않는 열은 MySQL은 8.0.23부터, MariaDB는 10.3부터 있어요.
CHECK constraints
유지
같은 체크 제약을 항목별로 변환해요.
CHECK constraints with functions IntoSQL doesn't read
만들지 않음
IntoSQL이 읽을 수 없는 체크 제약은 제외하고 보고해요.
보고서 줄: check_skipped
CHECK ... NOT ENFORCED
만들지 않음
MySQL 5.7과 MariaDB는 체크 제약을 적용하지 않고 보관할 수 없고, 행이 제약을 어길 수 있어요.
보고서 줄: check_not_enforced
expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY
유지
MySQL은 8.0.13부터 받아요. 스크립트는 5.7에서도 불러오므로 이 값은 제외하고 보고해요. MariaDB는 받아요.
보고서 줄: default_not_translated
functional indexes, KEY ((expr))
만들지 않음
MySQL은 8.0.13부터 식을 인덱싱하고 MariaDB는 전혀 하지 않아요. 인덱스가 있는 생성 열로 같은 효과를 낼 수 있어요.
보고서 줄: index_skipped
keys and indexes on a prefix, c(20)
유지
같은 인덱스예요.
FULLTEXT indexes
유지
같은 인덱스예요. MATCH ... AGAINST는 전처럼 작동해요.
SPATIAL indexes
유지
같은 인덱스예요.
foreign keys
유지, FOREIGN_KEY_CHECKS=0으로 불러옴
같은 키예요. 행은 원본 덤프에서처럼 불러와요.
GEOMETRY, POINT, POLYGON...
유지, 값마다 SRID 포함
서버 고유의 지오메트리 바이트를 SRID까지 포함해 복사해요.
INET4, INET6, UUID (MariaDB)
유지
MySQL에는 이런 타입이 없어요. MariaDB가 이 타입에 쓰는 텍스트를 유지해요.
BINARY, VARBINARY, BLOB
유지
바이트는 바이트 그대로 남아요.
PARTITION BY
하나의 테이블
행은 같아요. 필요하면 테이블을 다시 파티션으로 나누세요.
보고서 줄: partitions_dropped
WITH SYSTEM VERSIONING (MariaDB)
WITH SYSTEM VERSIONING, 현재 행부터 시작
덤프에는 현재 행만 들어 있어요. MySQL에는 시스템 버전 관리가 없어요.
Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB)
유지
MySQL에는 이 엔진들이 없어요. 다른 엔진은 모두 유지돼요.
CREATE SEQUENCE (MariaDB)
다음 값을 포함한 CREATE SEQUENCE
MySQL에는 시퀀스가 없어요.
views, triggers, procedures, functions and events
보고서에 나열
직접 다시 만들 수 있도록 나열해요. 이 코드에는 정의자와 서버 기능이 적혀 있는 경우가 많아요.
보고서 줄: not_converted_objects
NOT NULL columns with values that become NULL
NOT NULL 제거
값을 NULL로 바꿔야 했던 열은 NOT NULL을 유지할 수 없어요. 유지하면 불러오기가 멈춰요.
보고서 줄: not_null_relaxed
text that isn't valid in its character set
잘못된 바이트를 대체 문자로
스크립트는 UTF-8이에요. UTF-8이 아닌 바이트가 있으면 불러오기가 멈춰요.
보고서 줄: invalid_utf8_replaced
text decoded twice (ñ)
그대로 복사
덤프에 정확히 이 문자들이 있으므로 그대로 복사하고, 보고서에서 알려 줘요.
보고서 줄: mojibake_suspected
dumps without CREATE TABLE
값으로 판단한 타입
--no-create-info로 만든 덤프에는 행만 있어서 타입을 값으로 판단해요.
보고서 줄: no_schema
geometries in a dump without CREATE TABLE
GEOMETRY
MySQL의 지오메트리 형식을 값에서 알아봐요.
SET NAMES utf8 from utf8mb4 tables
변환하고 경고 표시
MySQL 5.x의 mysqldump는 기본으로 3바이트 utf8을 쓰고, 변환기가 파일을 보기 전에 모든 이모지를 물음표로 바꿔요.
보고서 줄: dump_lost_four_byte_chars
dumps without SET NAMES whose text isn't UTF-8
Latin-1 (Windows-1252)로 읽음
MySQL의 latin1은 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
BLOB은 어떤 값의 바이트든 담아요. 불러온 뒤 타입을 바꾸세요.
보고서 줄: unknown_type
values that don't fit their column
NULL
손상되었거나 직접 작성한 덤프에는 열이 담을 수 없는 값이 있을 수 있어요. 나머지를 불러올 수 있도록 이 값은 NULL이 돼요.
보고서 줄: invalid_value_null
unreadable geometries
NULL
지오메트리가 아닌 바이트는 지오메트리로 저장할 수 없어요.
보고서 줄: bad_geometry
TIMESTAMP
유지, 덤프에 명시된 시간대로 불러옴
스크립트가 덤프와 같은 시간대를 설정하므로 모든 시점이 같아요.
VECTOR(n) (MariaDB 11.7+)
부동소수점 값을 배열로 담은 json
스크립트는 vector 타입이 없는 MariaDB 10.11 이상에서 불러와져요. JSON 배열은 모든 부동소수점 값을 유지하고, VEC_FromText로 다시 읽을 수 있어요.
보고서 줄: type_replaced
| 파일에서 | 스크립트에서 | 보고서 줄 |
|---|---|---|
| utf8mb4_0900_* and utf8mb4_uca1400_* collations | utf8mb4_0900_*는 utf8mb4_unicode_520_ci (바이너리는 utf8mb4_bin)MariaDB는 새 콜레이션을 몰라요. 대부분의 MySQL 8 덤프가 다른 곳에서 불러와지지 않는 오류가 바로 이것이에요. unicode_520이 같은 Unicode 규칙을 가장 가깝게 따라요. | collation_replaced |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | 유지스크립트는 ALLOW_INVALID_DATES를 켜고 NO_ZERO_DATE 없이 불러오므로, MariaDB는 원본과 같은 값을 유지해요. | |
| TIME | TIME, 기간 포함같은 타입이고 범위도 같아요. | |
| TINYINT(1), BOOL | TINYINT(1)같은 타입이고 값도 같아요. | |
| UNSIGNED and ZEROFILL | 유지같은 타입이에요. | |
| ENUM and SET, the '' error value included | 유지같은 타입이에요. 스크립트는 strict 모드 없이 불러오므로 오류 값도 그대로 들어가요. | |
| JSON | JSON(MariaDB가 검사하는 LONGTEXT)MariaDB는 같은 JSON 텍스트를 읽어요. | |
| NUL bytes in text | 유지값은 원본과 같은 이스케이프로 복사해요. | |
| AUTO_INCREMENT | 테이블 카운터가 있는 AUTO_INCREMENT카운터는 MyISAM의 그룹별 카운터를 포함해 원본이 멈춘 곳부터 이어져요. | |
| MyISAM AUTO_INCREMENT on the second column of a key, in a table that isn't MyISAM in the dump | 열에 대한 인덱스와 테이블당 카운터 하나InnoDB는 인덱스의 첫 열일 때만 열에 번호를 매기고, 카운터는 테이블 전체에 하나예요. | myisam_group_autoincrement |
| ON UPDATE CURRENT_TIMESTAMP | 유지같은 절이며, 열의 초 소수부도 같아요. | |
| generated columns | 원본과 같은 VIRTUAL 또는 STORED같은 수식을 항목별로 변환해요. | |
| generated columns with functions IntoSQL doesn't read | 일반 열IntoSQL이 읽을 수 없는 수식은 일반 열로 남고 보고서에 한 줄 기록돼요. | generated_not_translated |
| INVISIBLE columns | INVISIBLE 열보이지 않는 열은 MySQL은 8.0.23부터, MariaDB는 10.3부터 있어요. | |
| CHECK constraints | 유지같은 체크 제약을 항목별로 변환해요. | |
| CHECK constraints with functions IntoSQL doesn't read | 만들지 않음IntoSQL이 읽을 수 없는 체크 제약은 제외하고 보고해요. | check_skipped |
| CHECK ... NOT ENFORCED | 만들지 않음MySQL 5.7과 MariaDB는 체크 제약을 적용하지 않고 보관할 수 없고, 행이 제약을 어길 수 있어요. | check_not_enforced |
| expression defaults, and defaults on TEXT, BLOB, JSON and GEOMETRY | 유지MySQL은 8.0.13부터 받아요. 스크립트는 5.7에서도 불러오므로 이 값은 제외하고 보고해요. MariaDB는 받아요. | default_not_translated |
| functional indexes, KEY ((expr)) | 만들지 않음MySQL은 8.0.13부터 식을 인덱싱하고 MariaDB는 전혀 하지 않아요. 인덱스가 있는 생성 열로 같은 효과를 낼 수 있어요. | index_skipped |
| keys and indexes on a prefix, c(20) | 유지같은 인덱스예요. | |
| FULLTEXT indexes | 유지같은 인덱스예요. MATCH ... AGAINST는 전처럼 작동해요. | |
| SPATIAL indexes | 유지같은 인덱스예요. | |
| foreign keys | 유지, FOREIGN_KEY_CHECKS=0으로 불러옴같은 키예요. 행은 원본 덤프에서처럼 불러와요. | |
| GEOMETRY, POINT, POLYGON... | 유지, 값마다 SRID 포함서버 고유의 지오메트리 바이트를 SRID까지 포함해 복사해요. | |
| INET4, INET6, UUID (MariaDB) | 유지MySQL에는 이런 타입이 없어요. MariaDB가 이 타입에 쓰는 텍스트를 유지해요. | |
| BINARY, VARBINARY, BLOB | 유지바이트는 바이트 그대로 남아요. | |
| PARTITION BY | 하나의 테이블행은 같아요. 필요하면 테이블을 다시 파티션으로 나누세요. | partitions_dropped |
| WITH SYSTEM VERSIONING (MariaDB) | WITH SYSTEM VERSIONING, 현재 행부터 시작덤프에는 현재 행만 들어 있어요. MySQL에는 시스템 버전 관리가 없어요. | |
| Aria, ColumnStore, CONNECT, Spider, RocksDB (MariaDB) | 유지MySQL에는 이 엔진들이 없어요. 다른 엔진은 모두 유지돼요. | |
| CREATE SEQUENCE (MariaDB) | 다음 값을 포함한 CREATE SEQUENCEMySQL에는 시퀀스가 없어요. | |
| views, triggers, procedures, functions and events | 보고서에 나열직접 다시 만들 수 있도록 나열해요. 이 코드에는 정의자와 서버 기능이 적혀 있는 경우가 많아요. | not_converted_objects |
| NOT NULL columns with values that become NULL | NOT NULL 제거값을 NULL로 바꿔야 했던 열은 NOT NULL을 유지할 수 없어요. 유지하면 불러오기가 멈춰요. | not_null_relaxed |
| text that isn't valid in its character set | 잘못된 바이트를 대체 문자로스크립트는 UTF-8이에요. UTF-8이 아닌 바이트가 있으면 불러오기가 멈춰요. | invalid_utf8_replaced |
| text decoded twice (ñ) | 그대로 복사덤프에 정확히 이 문자들이 있으므로 그대로 복사하고, 보고서에서 알려 줘요. | mojibake_suspected |
| dumps without CREATE TABLE | 값으로 판단한 타입--no-create-info로 만든 덤프에는 행만 있어서 타입을 값으로 판단해요. | no_schema |
| geometries in a dump without CREATE TABLE | GEOMETRYMySQL의 지오메트리 형식을 값에서 알아봐요. | |
| SET NAMES utf8 from utf8mb4 tables | 변환하고 경고 표시MySQL 5.x의 mysqldump는 기본으로 3바이트 utf8을 쓰고, 변환기가 파일을 보기 전에 모든 이모지를 물음표로 바꿔요. | dump_lost_four_byte_chars |
| dumps without SET NAMES whose text isn't UTF-8 | Latin-1 (Windows-1252)로 읽음MySQL의 latin1은 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 | LONGBLOBBLOB은 어떤 값의 바이트든 담아요. 불러온 뒤 타입을 바꾸세요. | unknown_type |
| values that don't fit their column | NULL손상되었거나 직접 작성한 덤프에는 열이 담을 수 없는 값이 있을 수 있어요. 나머지를 불러올 수 있도록 이 값은 NULL이 돼요. | invalid_value_null |
| unreadable geometries | NULL지오메트리가 아닌 바이트는 지오메트리로 저장할 수 없어요. | bad_geometry |
| TIMESTAMP | 유지, 덤프에 명시된 시간대로 불러옴스크립트가 덤프와 같은 시간대를 설정하므로 모든 시점이 같아요. | |
| VECTOR(n) (MariaDB 11.7+) | 부동소수점 값을 배열로 담은 json스크립트는 vector 타입이 없는 MariaDB 10.11 이상에서 불러와져요. JSON 배열은 모든 부동소수점 값을 유지하고, VEC_FromText로 다시 읽을 수 있어요. | type_replaced |
스크립트를 MariaDB에 불러오기
스크립트는 테이블을 만들고 행을 복사한 다음 키, 인덱스, 외래 키를 추가해요. 그래서 빨리 불러오고 첫 오류에서 멈춰요.
mariadb --default-character-set=utf8mb4 mydb < mariadb.mariadb.sql외래 키는 덤프에 선언된 대로 만들고, mysqldump처럼 행을 불러오는 동안 FOREIGN_KEY_CHECKS=0을 써요.
큰 덤프는 서버와 같은 컴퓨터에서 클라이언트를 실행하고, 한 행이 아주 크면 max_allowed_packet을 늘리세요.
IntoSQL Pro는 데스크톱 앱이나 명령줄에서 파일을 MariaDB에 바로 불러와요. 스크립트를 따로 만들 필요가 없어요.
좋은 결과를 위한 MariaDB 덤프 방법
변환기는 덤프에 담긴 내용을 읽어요. 다음 옵션을 쓰면 더 많은 데이터가 덤프에 남아요:
- --default-character-set=utf8mb4는 이모지와 다른 4바이트 문자를 유지해요. utf8mb3 덤프는 변환기가 보기 전에 이 문자를 잃어요.
- --hex-blob은 바이너리 열과 VECTOR 값을 16진수로 써서, 시스템 사이에 복사해도 손상되지 않아요.
- --routines --triggers --events는 이 객체들을 덤프에 넣어 보고서가 나열할 수 있게 해요.
변환되지 않는 것
뷰, 트리거, 프로시저, 함수 등 MariaDB 자체 언어로 작성된 객체는 몰래 빠지지 않고 보고서에 이름으로 나와요. 불러올 MariaDB 버전에서 확인한 뒤 다시 만들 수 있어요.
MariaDB 버전 간 이동 질문
여기에 답이 없나요? 문의 페이지로 연락하시면 담당자가 답장해요. 문의 페이지
덤프가 업로드되나요?
아니요. 변환기는 브라우저에서 실행되고 디스크의 덤프를 조각조각 읽으므로, 덤프가 컴퓨터 밖으로 나가지 않아요. 데스크톱 앱과 명령줄도 컴퓨터에서 변환해요.
덤프는 얼마나 커도 되나요?
변환기는 덤프 전체를 메모리에 올리지 않아요. 파일을 범위별로 두 번 읽고, 읽는 대로 스크립트를 써요. 수 GB 덤프도 브라우저, 데스크톱 앱, 명령줄에서 변환돼요.
어떤 MariaDB 버전의 덤프를 읽나요?
MariaDB 10.3부터 12까지의 mariadb-dump와 mysqldump로 만든 덤프예요. INSERT는 테이블마다 하나여도 행마다 하나여도 돼요. 모든 테스트 덤프는 MariaDB 10.11, 11.4, 11.8에서 만들고 원본과 셀 단위로 비교해요.
UUID, INET6, JSON, VECTOR 열은 유지되나요?
VECTOR를 포함해 그대로 유지되며, VECTOR에는 MariaDB 11.7 이상이 필요해요. JSON은 유효성 검사와 함께 JSON으로 남아요.
AUTO_INCREMENT 값과 시퀀스는 유지되나요?
네. AUTO_INCREMENT와 시퀀스는 그대로 유지되고, 시퀀스에서 값을 가져오는 기본값은 계속 그 시퀀스에서 가져와요.
저장 프로시저와 트리거는 어떻게 되나요?
변환하지 않고 보고서에 이름으로 나열하므로, 다시 만들기 전에 불러올 MariaDB에서 각각을 확인할 수 있어요.
스크립트는 어떤 MariaDB 버전에서 불러올 수 있나요?
덤프를 만든 버전과 관계없이 MariaDB 10.11 이상이에요. 모든 테스트 덤프를 10.11과 11.4에서 불러와요.