목록MySQL (10)
HeeLee_DBA
대용량 데이터 import시 Tool(Workbench등..)을 사용할 경우 시간이 오래 걸리는데 LOAD DATA를 이용하면 빠르게 import할 수 있다.1. MySQL 접속 및 설정 확인mysql -h {HOST} -u {USER} -p --local-infile=1--local-infile=1: LOAD DATA LOCAL INFILE 사용을 활성화비밀번호 입력 후 접속2. CSV 파일 인코딩 확인 및 변환(MacOS 기준)file -I /path/to/file.csv출력 결과: charset=iso-8859-1UTF-8 변환 필요 시:iconv -f CP949 -t UTF-8 /path/to/file.csv > /path/to/file-utf8.csv⚠️ iconv 사용 시 한글이 깨지는 경우만..
✅ CONVERT_TZ(UTC_TIMESTAMP(), 'UTC','+9:00') 제거 후 별도 처리 개념👉 1. 문제: SELECT 절에서 함수 사용 시 비효율 발생SELECT id, CONVERT_TZ(UTC_TIMESTAMP(), 'UTC','+9:00') AS my_timeFROM my_table;이렇게 하면,✅ UTC_TIMESTAMP()는 한 번만 실행되지만,❌ CONVERT_TZ()는 모든 행(row)마다 실행됨 (비효율적!)👉 즉, UTC_TIMESTAMP()는 MySQL 내부에서 바로 처리하지만, CONVERT_TZ()는 타임존 테이블을 조회하고 연산을 수행해서 상대적으로 느림🔹 예시) 10만 건 조회 시CONVERT_TZ(UTC_TIMESTAMP(), 'UTC','+9:..
MySQL 테이블 작업 시 아래 알고리즘이 사용되며, MySQL 8.0버전 부터는 INSTANT방식이 도입되어 부담을 줄일 수 있다. - MySQL DDL 알고리즘 차이점 - COPY INPLACE INSTANT 정의 데이터를 복사하여 새로운 테이블을 만든 후 변경사항을 적용 데이터를 복사하지 않고 기존 테이블의 구조를 변경 테이블 구조 변경 시 메타데이터만 즉시 수정하여 변경 작업 방식 새 테이블을 ..
MySQL InnoDBCluster 구성 후 자동 failover를 하기 위해 MySQL Router를 구성해야함공식 아키텍처를 보면 MySQL Router를 별도의 서버에 구성하는 것을 권장하는 듯함하지만 비용 및 유지보수 측면에서 미들웨어와 함께 통합하여 구성하는 것도 실용적인 선택이 될 수 있음 OS : AWS EC2 - Red Hat Linux8.5DBMS : MySQL 8.0.36 1. MySQL Router 설치[root@1.1.1.4 ~]# wget https://downloads.mysql.com/archives/get/p/41/file/mysql-router-8.0.21-el7-x86_64.tar.gz [root@1.1.1.4 ~]# tar -zxvf mysql-router-8.0.21-..

MySQL5.7버전은 Master-Slave로 이중화하고 MHA로 fail-over를 구성했다면, MySQL8.0부터는 InnoDBCluster로 이중화하고 MySQL Router로 로드밸런싱 및 장애 조치 작업을 할 수 있다. *MHA는 Red Hat Linux7.9버전까지만 사용 권장 *InnoDBCluster는 EE버전에서만 가능하며,Multi Primary가 가능하나 권장사항이 아님 OS : AWS EC2 - Red Hat Linux8.5 DBMS : MySQL8.0.36 1. 아키텍처https://dev.mysql.com/doc/mysql-shell/8.4/en/mysql-innodb-cluster.html MySQL :: MySQL Shell 8.4 :: 7 MySQL InnoDB Cluste..

MySQL 8.0에서 my.cnf 파일의 server_id를 수정한 후 서버를 재시작했는데도 변경 사항이 적용되지 않는 경우, 아래와 같이 변경할 수 있음 -- MySQL8.0 server_id 변경하기SET PERSIST server_id = 1; -- mysqld-auto.cnf를 통해서 변경하기/var/lib/mysql/mysqld-auto.cnf 파일의 : servier_id Value 값 변경 후 재시작ex ) "server_id": {"Value": "1", "Metadata": {"Host": "localhost", "User": "root", "Timestamp": 1724992654940674} * mysqld-auto.cnf 파일은 MySQL 8.0에서 서버의 글로벌 설정 변수 값을 ..

PMM(Percona Monitoring and Management)은 오픈소스 모니터링 솔루션이며, MySQL, PostgreSQL등을 지원한다. Docker 방식으로 구성 테스트 진행함 참조 : https://www.percona.com/doc/percona-monitoring-and-management/2.x/index.html Percona Monitoring and ManagementWelcome Percona Monitoring and Management (PMM) is an open-source database monitoring, management, and observability solution for MySQL, PostgreSQL, and MongoDB. It allows you t..
MySQL의 binlog_format은 3가지(statement, row, mix) 종류가 있다. ▶ STATEMENT 방식 가장 전통적인 방식으로 문장방식 로깅이라고 이며, 마스터에서 실행한 SQL을 그대로 바이너리 로그에 작성하고 그 로그를 슬레이브로 전송하여 슬레이브에도 실행하게 하는 방식임 장점 : 쿼리문으로 기록되기 때문에 용량을 적게 차지하고 버전특성을 타지 않음 단점 : 일관된 데이터에 대한 보장이 적음(sysdate(), now()등...) ▶ Row-Based 방식 행기반 방식이며, SQL 문법이 아니라 결과값을 바이너리 로그에 저장함 장점 : 데이터 일관성을 보장함 단점 : 용량이 큼 ▶ Mix-Logging 방식 혼합로깅 방식이며, STATEMENT와 ROW 방식의 장점을 취합한 형태..