MySQL 8.0에서 추가된 모든 기능

MySQL 8.0에서 추가된 모든 기능 – 데이터 딕셔너리, 원자적(atomic)이며 충돌 방지되는(crash safe) DDL, 업그레이드

Estimated reading: 2 minutes 36 views

1. 트랜잭션 기반 데이터 사전

[원본제공링크 1]

트랜잭션 기반 데이터 사전(Transactional Data Dictionary)MySQL 8.0에서 도입된 기능으로, 데이터베이스의 모든 메타데이터 정보를 InnoDB 스토리지 엔진을 통해 트랜잭션 방식으로 관리합니다. 이전 버전의 MySQL에서는 테이블 정의를 .frm 파일과 같은 파일 기반 메타데이터에 저장했습니다. 이러한 접근 방식은 파일 시스템의 제약과 복잡성으로 인해 메타데이터 관리에 어려움을 초래했습니다. MySQL 8.0부터는 이러한 파일 기반 메타데이터를 제거하고, 모든 메타데이터를 InnoDB의 트랜잭션 테이블에 저장하는 중앙 집중식 데이터 사전을 도입했습니다. 이러한 데이터 사전 테이블은 mysql 데이터베이스 내의 단일 InnoDB 테이블스페이스인 mysql.ibd에 저장되며, 이는 MySQL 데이터 디렉토리에 위치합니다. 이를 통해 데이터 사전의 일관성과 무결성을 보장하며, DDL 문장도 트랜잭션의 ACID 특성을 따르게 됩니다.

2. 모든 메타데이터를 InnoDB에 저장하여 FRM, TRG 등의 파일 필요 없음

[원본제공링크 1 2]

MySQL 8.0에서는 모든 메타데이터를 InnoDB 테이블에 저장하며, 이에 따라 기존의 .frm, .TRG, .TRN 등의 파일 의존성이 사라지고, 메타데이터 관리가 더 안정적이고 통합적으로 변경되었습니다. 이 개선은 데이터 무결성과 복구 능력을 크게 향상시킵니다.

3. 메타데이터의 중복 복사본을 SDI에 저장

[원본제공링크 1]

직렬화된 딕셔너리 정보(Serialized Dictionary Information, SDI)테이블스페이스에 메타데이터의 중복 복사본을 저장하는 기능입니다. SDI는 데이터 파일 내부에 직렬화된 형식으로 포함되며, 데이터 복구 시 중요한 정보를 제공합니다. 이를 통해 데이터베이스가 손상되거나 테이블스페이스가 분리된 경우에도 메타데이터를 복원할 수 있는 신뢰성을 제공합니다.

4. 테이블스페이스 버전 지원으로 업그레이드/다운그레이드 경험 개선

[원본제공링크 1]

MySQL 테이블스페이스 즉, .ibd 데이터 파일에 버전 정보가 포함되어, DB 업그레이드나 다운그레이드 작업 시 호환성을 확인하고 관리할 수 있습니다. 이 기능은 데이터 파일의 호환성 문제를 사전에 방지하며, 안전한 데이터베이스 마이그레이션과 복구를 지원합니다.

5. 직렬화된 딕셔너리 정보(SDI)를 포함한 자기 기술적 테이블스페이스

[원본제공링크 1]

테이블스페이스가 Serialized Dictionary Information(SDI)를 통해 메타데이터를 자체적으로 포함하게 되어, 테이블 정의와 메타데이터를 MySQL 외부에서도 읽고 복구할 수 있습니다. 이 기능은 데이터 복구 및 이식성을 크게 향상시키며, MySQL 내외부의 데이터 관리 유연성을 제공합니다.

예시:

[mysql@MySQL8032 instance]$ ./bin/ibd2sdi /data/datadir/minhang/aaa.ibd  | grep 'name\|column_type' 
        "name": "aaa",
                "name": "my_row_id",
                "column_type_utf8": "bigint unsigned",
                "name": "id",
                "column_type_utf8": "int",
                "name": "filename",
                "column_type_utf8": "varchar(200)",
                "name": "dir",
                "column_type_utf8": "varchar(2000)",
                "name": "DB_TRX_ID",
                "column_type_utf8": "",
                "name": "DB_ROLL_PTR",
                "column_type_utf8": "",
                "name": "PRIMARY",
        "name": "minhang/aaa",
                "filename": "./minhang/aaa.ibd",

이와 같이 .ibd 데이터파일에서 바로 메타데이터를 추출할 수 있습니다.

6. SDI 관리를 위한 도구

[원본제공링크 1]

SDI를 관리하고 조회하기 위한 도구가 제공됩니다. 바로 위의 예시에서 사용한 idb2sdi와 같은 툴을 의미합니다. 이를 통해 SDI에 저장된 메타데이터를 추출하거나 검증할 수 있으며, 복구 작업 시 유용하게 활용할 수 있습니다.

7. 원자적(atomic)이며 충돌 방지되는(crash safe) DDL

[원본제공링크 1]

원자적(Atomic)이며 충돌 방지되는 DDLDDL 문장을 트랜잭션처럼 처리하여 중간 실패 시에도 데이터베이스의 일관성을 유지합니다. 이는 서버 충돌이나 오류 발생 시에도 DDL 작업이 원자적으로 적용되거나 롤백되도록 보장합니다.

8. CREATE TABLE…SELECT가 원자적이고 충돌 방지되도록 개선

[원본제공링크 1]

CREATE TABLE...SELECT 문장이 원자적이고 충돌 방지되도록 개선되었습니다. 이는 테이블 생성과 데이터 삽입이 하나의 원자적 작업으로 처리되어, 중간에 오류가 발생해도 테이블이 부분적으로 생성되거나 데이터가 손실되는 상황을 방지합니다. 작업 중 중단되면 테이블과 데이터는 완전히 롤백되거고, 작업이 성공적으로 완료될 때만 전체 변경 사항이 반영됩니다.

9. 딕셔너리 테이블의 자동 업그레이드 및 강화된 검증

[원본제공링크 1]

데이터 딕셔너리 테이블이 자동으로 업그레이드되고, 무결성 검사가 강화되었습니다. 서버 업그레이드 시 메타데이터 구조가 자동으로 업데이트되며, 일관성 검사를 통해 오류를 조기에 발견할 수 있습니다.

10. 자동 업그레이드 – mysql_upgrade 스크립트 불필요

[원본제공링크 1]

MySQL 8.0부터는 서버가 시작될 때 자동으로 시스템 테이블과 데이터 딕셔너리를 업그레이드하므로, 별도의 mysql_upgrade 스크립트를 실행할 필요가 없습니다. 이는 업그레이드 과정을 간소화하고, 사용자 실수로 인한 문제를 방지합니다.

Leave a Comment



이 문서 공유

MySQL 8.0에서 추가된 모든 기능 – 데이터 딕셔너리, 원자적(atomic)이며 충돌 방지되는(crash safe) DDL, 업그레이드

링크 복사

CONTENTS