목록전체 글 (30)
HeeLee_DBA
DBMS : Atlas MongoDB 7.0MongoDB를 운영하다 보면, 간혹 컬렉션 크기를 줄이기 위해 compact 작업이 필요할 때가 있음 - Compact란?compact는 컬렉션의 디스크 사용량을 줄이기 위해 내부적으로 데이터를 재배치하는 작업이며,삭제된 데이터로 인한 단편화(fragmentation)를 줄이고, 실제 디스크 공간을 확보할 수 있음 *주의 사항- 대상 컬렉션이 잠금(lock) 되므로, compact 중에는 해당 노드에서 해당 컬렉션에 대한 읽기/쓰기 모두 불가- 운영 환경인 경우, Replica Set에서는 Secondary 노드부터 compact 작업을 진행하고 마지막에 Primary를 처리하는 것이 일반적인 권장 - Compact 명령어//Atlas에서는 true 옵션이 있..
대용량 데이터 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 사용 시 한글이 깨지는 경우만..
RDS 다중 AZ 아키텍처 및 마이너 업그레이드 테스트 DBMS : RDS MySQL 8.0.36 💡 RDS의 Standby, Read Instance 차이 Standby (대기 인스턴스)Read Replica (읽기 복제본)목적고가용성 (장애 조치) 및 내구성 향상읽기 성능 향상, 읽기 부하 분산복제 방식동기 복제 (Primary와 Standby는 항상 동일)비동기 복제 (Primary의 데이터 변경을 주기적으로 복제)읽기/쓰기쓰기 작업만 Primary에서 처리, 읽기 작업은 Standby에서 처리 안 됨읽기 전용, Primary에서 발생한 변경 사항을 복제본에서 읽기 가능수보통 1개 (Multi-AZ 배포)여러 개 가능 (읽기 부하 분산용으로 다수 설정 가능)1. 대기가 1개인 Amazon RDS ..
✅ 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:..
1. Homebrew 설치 (필요 시)Homebrew는 macOS에서 패키지 관리 시스템입니다. 먼저 Homebrew가 설치되어 있어야 합니다.Homebrew 설치:터미널에서 아래 명령어로 Homebrew를 설치합니다./bin/bash -c "$(curl -fsSL )"설치가 완료되면 brew 명령어가 제대로 작동하는지 확인합니다.brew --version2. MongoDB 설치Homebrew를 사용하여 MongoDB를 설치할 수 있습니다. MongoDB는 mongodb-community라는 이름으로 Homebrew에 포함되어 있습니다.MongoDB 설치:MongoDB를 설치하려면 터미널에서 아래 명령어를 입력하세요.brew tap mongodb/brewbrew install mongodb-communi..
MySQL 테이블 작업 시 아래 알고리즘이 사용되며, MySQL 8.0버전 부터는 INSTANT방식이 도입되어 부담을 줄일 수 있다. - MySQL DDL 알고리즘 차이점 - COPY INPLACE INSTANT 정의 데이터를 복사하여 새로운 테이블을 만든 후 변경사항을 적용 데이터를 복사하지 않고 기존 테이블의 구조를 변경 테이블 구조 변경 시 메타데이터만 즉시 수정하여 변경 작업 방식 새 테이블을 ..
파라미터 값 권장 사항1. lower_case_table_names의 값은 1로 설정MySQL은 기본적으로 테이블명에 대소문자를 구분하지만, 이를 비활성화하여 대소문자 구분 없이 일관되게 처리 하도록 합니다.2. character set의 값은 utf8mb4을 사용MySQL 공식문서에 따르면 utf8mb3은 향후 릴리즈에서 제거될 것으로 예상됩니다.utf8mb3은 3바이트 문자까지만 지원되며, 이모지와 같은 4바이트 문자는 저장할 수 없습니다.utf8mb4은 4바이트 문자를 지원하므로, 이모지 및 특수 문자를 저장하려면 utf8mb4를 사용하는 것이 필수적입니다.MySQL 공식문서 : MySQL :: MySQL 8.4 Reference Manual :: 12.10.1 Unicode Character Se..
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-..