본문으로 건너뛰기
IntoSQL 홈

MariaDB 덤프를 이전 또는 최신 MariaDB로 옮기기

mariadb-dump, mysqldump, phpMyAdmin, Adminer 덤프(.sql 또는 .sql.gz)를 놓으면 MariaDB 10.11 이상에서 불러와지는 스크립트를 받아요. UUID, INET4, INET6, JSON, 시퀀스는 그대로이고, VECTOR는 11.7 이전 버전용으로 실수 JSON 배열이 되며, 모든 변경은 보고서에 나와요.

내 파일
sqlshop_2024_mariadb.sql샘플 파일, 6.6kB
내 데이터베이스

18개 행 변환, 수정 없음, 거부 없음

보기

shop_2024_mariadb.sql의 테이블MariaDB 11.8.9-MariaDB-ubu2404 덤프 · mariadb-dump(으)로 작성됨 · utf8mb4

  • customers8개 행
    8개 열
    idint(10) unsigned not null
    namevarchar(100) not null
    emailvarchar(150) not null
    countrychar(2) not null
    is_activetinyint(1) not null
    signed_update not null
    created_attimestamp not null
    last_ipinet6
  • orders10개 행
    12개 열
    idint(10) unsigned not null
    customer_idint(10) unsigned not null
    statusenum('pending','paid','shipped','cancelled') not null
    totaldecimal(10,2) not null
    itemssmallint(5) unsigned not null
    ordered_atdatetime not null
    shipped_atdatetime
    notevarchar(255)
    order_refuuid not null
    invoiceint(11) not null
    detailsjson
    updated_attimestamp 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_* collationsutf8mb4_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는 원본과 같은 값을 유지해요.
TIMETIME, 기간 포함같은 타입이고 범위도 같아요.
TINYINT(1), BOOLTINYINT(1)같은 타입이고 값도 같아요.
UNSIGNED and ZEROFILL유지같은 타입이에요.
ENUM and SET, the '' error value included유지같은 타입이에요. 스크립트는 strict 모드 없이 불러오므로 오류 값도 그대로 들어가요.
JSONJSON(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 columnsINVISIBLE 열보이지 않는 열은 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 NULLNOT 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 TABLEGEOMETRYMySQL의 지오메트리 형식을 값에서 알아봐요.
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-8Latin-1 (Windows-1252)로 읽음MySQL의 latin1은 Windows-1252이며, 이런 덤프에서 흔히 쓰는 인코딩이에요.charset_guessed
sjis, cp932, gbk, big5 dumpsUTF-8로 읽고 경고 표시이 인코딩은 아직 디코딩하지 않아요.unsupported_charset
UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows계산함일부 덤프 도구는 값을 이런 함수 호출로 써요. 호출이 만드는 값으로 읽어요.
other expressions in rowsNULL데이터베이스를 실행하지 않는 변환기는 이 식을 계산할 수 없어요.expression_value
DEFAULT in VALUES열의 기본값리터럴 기본값을 행에 복사해요.default_keyword_filled
DEFAULT in VALUES without a literal defaultNULL복사할 값이 없어요.default_keyword_null
REPLACE and INSERT IGNORE일반 행덤프에는 키마다 행이 하나라서 행은 같아요.replace_as_insert
types IntoSQL doesn't knowLONGBLOBBLOB은 어떤 값의 바이트든 담아요. 불러온 뒤 타입을 바꾸세요.unknown_type
values that don't fit their columnNULL손상되었거나 직접 작성한 덤프에는 열이 담을 수 없는 값이 있을 수 있어요. 나머지를 불러올 수 있도록 이 값은 NULL이 돼요.invalid_value_null
unreadable geometriesNULL지오메트리가 아닌 바이트는 지오메트리로 저장할 수 없어요.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에서 불러와요.