본문 바로가기

MySQL & MariaDB

(9)
[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 테이블을 사용할 때 파라미터로 설정된 값을 초과했을 때 발생..
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 활..
[Real MySQL 8.0] 02. 설치와 설정 & 03. 사용자 및 권한 글을 작성하기 전에 Real MySQL 8.0 (위키북스/ 백은빈,이성욱 지음)을 읽어보고 Real MySQL 8.0 + 기존의 알고 있던 내용을 나름대로 정리하고자 합니다. 본 서적에 대한 정리 외에도 MySQL의 특징을 개인적으로 학습한 오픈소스 DBMS인 PostgreSQL와 비교할만한 점을 추가하여 포스팅할 예정이니 잘못기입된 내용이 있다면 자유롭게 댓글 부탁드립니다. Real MySQL 8.0 02장 설치와 설정 2.1 MySQL 서버 설치 OS 종류에 따라 매우 다양한 방법을 통해 설치 할 수 있으므로 해당 포스팅에서는 다루지 않음 작성자가 주로 사용했던 리눅스에서는 아래와 같은 방법등을 통하여 설치하였음 - Tar 파일 압축 해제 방식( 바이너리 파일 압축 해제) - 패키지로 설치 ( Y..
MySQL System Architecture - 2. Memory MySQL System Architecture - 2. Memory Overall MySQL 서버에서 사용하는 메모리 구조는 크게 2가지로 분류할 수 있다. 1.글로벌 메모리 영역(Shaerd Memory) - MySQL 내 모든 쓰레드들이 사용하는 공유 메모리 영역 - MySQL 서버가 시작될때 OS에 의해 할당 되며, 설정 변경 시 재기동이 필요 2.세션 메모리 영역(Local Memory) - Foreground Thread 마다 할당되는 메모리 - 쓰레드 마다 할당되는 메모리로 커넥션 갯수와 연계하여 설정필요 - Query를 수행하는 시점에서 할당됐다고 해제되는 메모리 영역이 존재 글로벌 메모리 영역 Buffer Pool - 각 세션들이 사용할 데이터들을 디스크에서 가져와 저장하는 영역 - Dat..
MySQL System Architecture - 1. Process/Thread 글을 작성하기 전에 대부분의 RDBMS는 아키텍처 부분에서 많은 공통점을 가지고 있습니다.데이터를 궁극적으로 디스크에 저장하지만, 데이터베이스의 일부를 메모리에 저장하고 유지함으로써 더 빠른 성능을 유지할 수 있도록 합니다. 또한 ACID 를 충족하기 위해 대부분 WAL 기법을 사용하고 있습니다.이 글은 MySQL System Architectire 를 PostgreSQL과 비교를 통하여 정리해보겠습니다. MySQL System Architecture (PostgreSQL과 비교를 통하여) MySQL의 시스템 아키텍처는 데이터베이스(MySQL) 엔진과 스토리지 엔진으로 분류한다. MySQL 엔진에서 쿼리의 수행을 담당하고, 그 쿼리에 결과에 따른 데이터 저장의 부분은 스토리지 엔진에서 담당한다. Post..