전체 글 1383

[MySQL] MySQL 저장 프로시저 - 소개

[MySQL] MySQL 저장 프로시저 - 소개 l Version : MySQL MySQL 저장 프로시저와 장, 단점에 대해서 알아본다. 아래 스크립트는 테이블에 있는 데이터를 조회한다. SELECT customer_id, first_name, last_name, email FROM customer ORDER BY first_name; MySQL Workbench 또는 mysql 셸을 사용하여 MySQL Server에 쿼리를 실행하면 MySQL은 쿼리를 처리하고 결과 집합을 반환한다. 나중에 실행하기 위해 이러한 쿼리를 데이터베이스 서버에 저장하기 위해 저장 프로시저를 사용할 수 있다. 아래 스크립트에서 CREATE PROCEDURE 문은 위의 쿼리를 래핑하여 새 저장 프로시저를 만든다. DELIMITE..

MySQL, MariaDB 2023.10.23

[MySQL] MySQL에서 기본키로 UUID를 선택했을 때의 장단점 및 특징

[MySQL] MySQL에서 기본키로 UUID를 선택했을 때의 장단점 및 특징 l Version : MySQL PXC 8.0.X MySQL UUID에 대해서 알아보고 테이블의 기본키로 사용하는 방법 및 UUID를 기본키로 했을 때의 장단점에 대해서 알아본다. UUID는 universally unique Identifier의 약자로 RFC 4122를 기반으로 정의된다. UUID는 공간과 시간에 있어서 전 세계적으로 고유한 숫자로 설계되었다. 두 개의 UUID 값은 두개의 독립적인 서버에 생성되더라도 서로 구별되어야 한다. MySQL에서 UUID값은 다음 형식의 5개의 16진수 숫자로 구성된 utf8 문자열로 표시되는 128비트 숫자이다. aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee U..

MySQL, MariaDB 2023.10.20

[MySQL] MySQL PXC (Percona XtraDB Cluster) 5.7에서 8.0 업그레이드시 timeout 문제 및 해결 방법

[MySQL] MySQL PXC (Percona XtraDB Cluster) 5.7에서 8.0 업그레이드시 timeout 문제 및 해결 방법 l Version : MySQL PXC 8.0.X MySQL PXC (Percona XtraDB Cluster) 5.7환경에서 8.0으로 업그레이드 진행중에 발생한 이슈가 있어, 문제 및 해결 방법에 대해서 정리한다. [Problem] 기존에 운영중이던 MySQL PXC 5.7.X 버전에서 MySQL 8.0.X로 업그레이드 작업이 필요 했으며, 업그레이드를 위해 여러 상황을 검토한 결과 XtraBackup을 사용하여 백업(5.7) 및 복원(8.0)으로 진행하였다. 복원 과정 (리스토어 및 서비스 시작)에서 timeout 오류가 발생하였다. 해당 데이터베이스는 테이블..

MySQL, MariaDB 2023.10.19

[MySQL] MySQL의 다양한 주석(comment) 방법 살펴보기

[MySQL] MySQL의 다양한 주석(comment) 방법 살펴보기 l Version : MySQL MySQL 주석은 데이터베이스 스키마, SQL 쿼리 및 저장 프로시저를 문서화하는데 필수적이다. 특히 주석의 작성은 다른 개발자가 코드의 목적을 이해하는데 도움이 된다. [한 줄 주석] 한 줄 주석은 한 줄에 주석을 추가하는데 사용된다. MySQL은 두가지 유형의 한 줄 주석을 지원한다. -- (하이픈 두개) : 두개의 하이픈 뒤에 텍스트는 주석으로 사용되며, 같은 줄에 이어지는 모든 텍스트는 주석으로 처리 된다. -- This is a single-line comment SELECT * FROM employees; # (해시) : 해시 기호를 사용하여 한 줄 주석을 추가할 수 있다. 같은 줄에 이어지는..

MySQL, MariaDB 2023.10.18

[MySQL] MySQL(mariadb) Galera Cluster 장애 시나리오에 따른 다양한 복구 방법

[MySQL] MySQL(mariadb) Galera Cluster 장애 시나리오에 따른 다양한 복구 방법 l Version : MySQL(mariadb) Galera Cluster Galera Cluster는 동기 복제를 사용하여 데이터를 복제하는 MySQL, MariaDB용 다중 마스터 클러스터이다. Galera Cluster를 사용하면 클러스터의 모든 노드가 마스터 역할을 하고 한 번에 모든 노드에 쓸 수 있다. Galera Cluster의 Active-Active 구성은 장애 조치가 없기 때문에 더 많은 로드 밸런싱과 내결함성을 제공한다. l MySQL/MariaDB 환경에서 다중 마스터 복제를 지원하는 Galera Cluster 알아보기 : https://sungwookkang.com/entry..

MySQL, MariaDB 2023.10.17

[MySQL] MySQL 오류 로그 이해

[MySQL] MySQL 오류 로그 이해 l Version : MySQL 시스템을 운영할 때, 오류를 완벽히 피하기는 거의 불가능에 가깝다고 생각한다. 그렇다면 문제가 발생하였을 때, 문제의 원인을 빠르게 파악하고 해결하기 위해서 가장 먼저 하는 행동은 무엇일까? 정답은 각종 로그를 확인하는 것이다. 이번 포스트에서는 MySQL 오류 로그를 통해 어떠한 정보를 확인할 수 있는지 알아본다. 이 글에서는 오류 로그는 5.6버전을 설명하고 있지만, 이후 버전에서도 충분히 활용할 수 있다고 판단된다. 모든 오류 내용을 다루지는 않지만 예제에서 확인할 수 있는 몇 가지 정보를 공유한다. MySQL 오류 로그에는 MySQL 상태 및 활동과 관련한 다양한 정보가 기록되어 있다. 정상적인 MySQL 시작, 종료에 대한..

MySQL, MariaDB 2023.10.16

[MySQL] ProxySQL 연결이 실패할 때 확인해야 할 기본 체크리스트

[MySQL] ProxySQL 연결이 실패할 때 확인해야 할 기본 체크리스트 l Version : ProxySQL MySQL서버를 여러대로 구성해야하는 경우 (예, Replication, Sharding 등) 어플리케이션 수에 따라 MySQL 서버와 맺게 되는 커넥션수가 급격하게 늘어난다. 예를들어 MySQL 서버가 30대, 어플리케이션 서버가 200대이고, 각 서버별로 커넥션을 10개씩 유지한다면 30 * 200 * 10 = 60000 커넥션이 발생한다. 이런 이슈를 피하기 위해 중간에 미들웨어 개념으로 프록시 역할을 해주는 것이 ProxySQL이다. ProxySQL은 효율적인 커넥션 관리뿐만 아니라 라우팅 기능 등 여러 기능을 제공한다. l ProxySQL 이란 무엇인가 : https://sungwo..

MySQL, MariaDB 2023.10.11

[MySQL] MySQL Percona XtraDB Cluster 소개 및 설정 변수 알아보기

[MySQL] MySQL Percona XtraDB Cluster 소개 및 설정 변수 알아보기 l Version : MySQL Percona 8.X Percona XtraDB Cluster는 MySQL을 위한 완전한 오픈 소스 고가용성 솔루션으로 MySQL용 Percona Server 및 Percona XtraBackup을 Galera 라이브러리와 통합하여 동기식 다중 소스 복제를 가능하게 한다. Galera 라이브러리에 대한 내용은 아래 링크를 참고한다. l MySQL/MariaDB 환경에서 다중 마스터 복제를 지원하는 Galera Cluster 알아보기 : https://sungwookkang.com/entry/MySQLMariaDB-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-..

MySQL, MariaDB 2023.09.27

[Linux] 리눅스 디스크 용량 확인

[Linux] 리눅스 디스크 용량 확인 l Linux 리눅스 시스템을 운영하다 보면 디스크 공간 사용률이 100%가 되어 서비스에 장애가 발생하는 경우가 있다. 일반적으로 실수하는 부분이 로그 파일을 방치하여 어느 순간 디스크 공간을 모두 소진하였거나, 데이터베이스 서버의 경우 데이터를 백업할 때 순간적으로 디스크를 모두 소진하여 발생할 때가 있다. 주기적인 시스템 모니터링으로 디스크 공간에 대한 사용률을 확인하여 사전에 이러한 부분을 방지할 수 있도록 하는 것이 중요하다. 그렇다면 어느 디렉터리에서 많은 공간을 사용하는지를 확인하는 방법은 무엇일까? 이번 포스트에서는 리눅스에서 디스크 사용량을 확인하는 방법에 대해서 알아본다. 리눅스에서 디스크 공간을 확인하는 명령어는 df (Disk Free)이다. ..

Linux 2023.09.26

[MySQL] MySQL 5.7에서 8.0으로 업그레이드시 변경되는 설정 및 옵션 정리

[MySQL] MySQL 5.7에서 8.0으로 업그레이드시 변경되는 설정 및 옵션 정리 l Version : MySQL 8.X MySQL 5.7 버전과 MySQL 8.0은 큰 변화가 있기 때문에, 업그레이드하기 전에 많은 주의가 필요하다. 현재 운영중인 MySQL 5.7X 버전에서 MySQL 8.0.X로 업그레이드 프로젝트를 진행하게 되어, 업그레이드시 주의해야 될 사항 및 변경되는 사항을 정리해본다. [Data Dictionary] MySQL Server 8.0에는 트랜잭션 테이블의 데이터베이스 개체에 대한 정보가 포함된 전역 Data Dictionary가 통합되어 있다. 이전 MySQL 시리즈에서는 Data Dictionary가 메타데이터 파일과 InnoDB 시스템 테이블에 저장되었다. 이전에는 in..

MySQL, MariaDB 2023.09.13