본문 바로가기

분류 전체보기

(23)
[Aurora MySQL] 쿼리 수행중 the table tmp is full Error 발생 글을 작성하기 전에 해당 에러는 MySQL 8.0 버전 이상에서도 동일하게 발생하는 현상이지만, 해당 포스트에서는 Aurora MySQL 3.0x( MySQL 8.0 호환) 에서 발생하는 이슈에 대해 언급합니다. 1. 현상 Aurora MySQL 3.02 버전을 운영 중 서비스 담당 현업분들에게 쿼리 수행이 불가하다는 이슈를 받았다. 쿼리를 확인해보니 튜닝되지 않은 실적 추출용 쿼리수행 시 아래 에러가 발생하였다. 에러 상세 메시지 error code [xxxx]; The table '/rdsdbdata/tmp/#sqlxxxx_yyyy_z' is full 2. 분석 해당 에러는 Order by, Group by 등의 쿼리 수행으로 인한 temp 테이블을 사용할 때 파라미터로 설정된 값을 초과했을 때 발생..
DocumentDB 개요 1. DocumentDB란?? DocumentDB란 AWS에서 제공하는 MongoDB 호환 NoSQL 완전 관리형 데이터베이스 서비스. 이름처럼 MongoDB와 동일하게 NoSQL의 여러 종류 중 하나인 Document store로 구성되어 있으며, 데이터를 문서(대부분 json) 형태로 데이터를 저장한다. DocumentDB는 메이저 버전으로만 관리되며 현재 3.6, 4.0, 5.0 3개의 버전이 릴리즈 되어 있다. AWS 에서는 MongoDB 3.6, 4.0 및 5.0 API를 구현하여 모든 기능에 호환된다고 주장한다. 2. DocumentDB와 기존 RDBMS의 차이점 용어의 차이 : 기존 관계형 데이터베이스와 다르게 Document store 형태로 구성되어 있기 때문에 테이블, 로우, 컬럼 등의..
PostgreSQL & EDB PAS - 실행 계획 재사용( Plan Reuse) 글을 작성하기 전에 이 포스팅에서는 PostgreSQL SQL 처리 과정 시 리소스를 줄일 수 있는 실행 계획 재사용 여부에 대해 확인해보려고 합니다. 실행계획 재사용에 대해 확인을 위해 SQL 처리 과정에 대한 내용도 간단하게 포함되어 있습니다. 추후 PostgreSQL SQL 처리 과정에 대한 포스팅도 작성 할 예정입니다. PostgreSQL & EDB PAS - 실행 계획 재사용( Plan Reuse) 결론을 먼저 기술하자면, PostgreSQL은 세션 전체적으로 실행계획을 공유하지 않습니다. 각 세션마다 실행 계획을 공유할 수 있으나 그것은 특정한 PREPARE 구문 사용시에만 적용됩니다. SQL Parsing SQL요청이 Client로부터 들어오게 되면 DB 내부에서 다양한 과정을 거쳐 쿼리가 ..
MySQL Major/Minor Upgrade MySQL Major/Minor Upgrade 목표 - MySQL Minor/Major Upgrade의 방법론에 대해 이해한다. - 무중단이나 순단으로 서비스연속성이 유지되도록 업그레이드 작업을 진행한다. - 실 서비스에 사용할 수 있도록 최대한의 특이사항과 유의사항에 대해 정리한다. - MySQL Upgrade시 수행 되는 내부 로직에 대해 이해하고 업그레이드 시나리오를 작성하도록 한다. MySQL Upgrade 방법 In-Place Upgrade - MySQL 서버의 데이터 파일을 그대로 두고 업그레이드하는 방법 - 여러가지 제약사항이 존재하지만 업그레이드 시간을 단축가능 Logical Upgrade - mysqldump 도구 등을 이용해 MySQL 서버의 데이터를 SQL 문장이나 텍스트 파일로 덤프..
MySQL GTID 복제 환경에서 Reset Master 수행 시 발생 장애 케이스 글을 작성하기 전에 GTID Replication 구성 시 마스터의 Binlog 및 GTID 가 Reset Master로 초기화 되었을 때 슬레이브와의 실제 연결은 끊어졌지만 Show Slave status 상에서는 정상으로 보이는 케이스가 있어 케이스 별 내용을 정리하는 포스팅입니다. Reset Master/ Reset Slave 명령어에 대해서는 아래 포스팅을 참고하면 좋습니다. 2022.12.27 - [MySQL & MariaDB] - MySQL GTID 복제 환경에서 Reset Master/Reset Slave 명령어 MySQL GTID 복제 환경에서 Reset Master 수행 시 발생 케이스 예외 조건 현재까지 생성된 binlog 파일이 스위치 된 상황이라면 Reset Master 시 show..
MySQL GTID 복제 환경에서 Reset Master/Reset Slave 명령어 글을 작성하기 전에 해당 포스팅은 복제 환경에서 초기 환경 구성시 자주 사용되는 Reset Master / Reset Slave 명령어에 대해 정리는 포스팅입니다. 그중 GTID 기반 Replication시 명령어를 수행하면 변경되는 내용에 중점을 둘 예정입니다. GTID 개념에 대해서는 아래 포스팅을 참고하면 좋습니다. 2022.12.22 - [MySQL & MariaDB] - MySQL GTID Replication 실습 MySQL GTID Replication 환경에서 Reset Master/Reset Slave 명령어 복제 환경에서 쉽게 상태를 확인할 수 있는 명령어는 Slave에서 수행하는 show slave status; 명령어이다. mysql> show slave status\G show m..
MySQL Multi Source Replication(MSR) 실습 MySQL Multi Source Replication(MSR) 실습 목표 - MySQL 8.0에서 기본적인 GTID 기반 Multi Source Replication을 구축한다. Multi Source Replication ?? 여러개의 Master DB를 1개의 Slave(Replica) 인스턴스에 연결하여 복제하는 구조로, 여러개의 Master DB의 내용을 하나의 Slave 에 모으는 기능 MSR 활용도 - 여러 서버에 존재하는 각기 다른 데이터를 하나의 MySQL 서버로 통합하는 용도( ex) EDW 등 데이터 분석 용도) - 여러 서버에 샤딩되어 있는 테이블 데이터를 하나의 데이터로 통합 (ex 기존 샤딩된 데이터베이스를 Merge할 때 사용 할 수 있음) - 여러 서버의 데이터를 모아 하나의..
MySQL GTID Replication 실습 MySQL GTID Replication 목표 - MySQL 8.0에서 기본적인 GTID Replication을 구축한다. - 서비스 연속성을 고려한 Topology 및 manual Failover를 수행한다. GTID ?? GTID란 Global Transaction Identifier의 약자로 UUID:transaction_id(순차번호) 로 구성되어 있다. 기존의 복제 구성시 binary log의 포지션을 찾고 구성을 했던 오퍼레이션을 단순화할 수 있으며, GTID를 통해 각 서버마다 고유한 트랜잭션을 관리 할 수 있다 GTID 설정을 위한 파라미터 No Options Variable Scope Dynamic Variable Comments 1 log-bin Global No binary-log 활..
AWS Data Pipeline??? 글을 작성하기 전에 DBA로 업무를 수행하면 데이터 엔지니어(DE), 데이터 사이언티스트등과 협업하는 일이 생길 수 있습니다. 협업 시 기본적인 용어를 모르고 있어 DB입장에서 ETL,CDC을 통해 수집되어 활용될 수 있는 데이터 파이프라인에 대해서 개인적으로 정리하는 포스팅입니다. 1. What Is Data Pipeline?? - 다양한 데이터 저장소에서 데이터를 수집하여 데이터 웨어하우스와 같은 데이터 저장소로 이전하는 과정(물이 공급 될 때 수도꼭지에서 나오기 까지 과정과 비슷) - 일반적으로 RDBMS에서 데이터 추출 시의 데이터를 그대로 사용할 수 없기 때문에 데이터를 적절하게 추출, 병합하는 과정들이 포함되어야 함 * 파이프 라인의 분류 : 배치용 파이프라인, 스트리밍 데이터 파이프라인 이 ..
PostgreSQL vs MySQL - 2. DDL Operation (+DCL) 글을 작성하기 전에 PostgreSQL DB 운영을 먼저 시작하고 MySQL DB 운영을 처음 접했을 때 놀랐던건 DDL Operation에 대한 수행시간 및 리스크였습니다. DBA 입장에서 운영서버의 스키마를 변경/관리하는 DDL은 Lock을 발생 시킬 수 있으므로 서비스에 대한 영향도를 검토 이후에 직접 수행 해야하는 것은 당연하지만, PostgreSQL DDL 작업 시 작업간 모니터링을 포함한다면 비교적 짧은시간 내 작업이 완료되었으나 MySQL의 경우에는 Online DDL이 5.6버전 이후에서야 지원되기 시작하였고 수행시 리스크가 많이 있어 다양한 3rd Party 툴을 사용하는 경우가 많이 있었습니다. 이 글을 통해 Operation 시 검토 사항에 대해 정리하고 각각의 DBMS를 비교해보려고..