전체 글 96

MySQL에서 하지말아야 할 것들

Count(*) 함수를 검증 로직에 태우는 것MySQL은 Oracle 처럼 row_num을 저장하지 않기 때문에 카운트 쿼리가 매우매우 느립니다.특히 개발자 분들은 페이지 네이션 할 때 전체 카운트를 세는걸 많이 하는데, 데이터가 많아지면 결과값 리턴이 엄청 늦어집니다.검증 로직이 아니더라도, 운영중에 데이터가 많은 테이블에 count(*) 하는건 매우 위험한 일입니다.- show table status 를 보면 간략 통계 조회 가능- innodb_stats_persistent 파라미터를 on 하면 통계정보를 디스크에 저장한다 근데 이것도 정확한 total 건수는 아니다    Primary Key는 되도록 int 계열 데이터 타입에 Auto Increment를 사용MySQL PK는 기본적으로 클러스터드 ..

Mysql & Maria/admin 2024.08.26

ip 저장시 inet_aton 함수 사용

INET_ATONIP 저장시 `INET_ATON` 함수를 사용하면 문자열이 아닌 int unsigned 로 저장 할 수 있습니다.IP 주소를 저장할 때 정수로 변환하여 삽입INSERT INTO ip_addresses (ip_address) VALUES (INET_ATON('192.168.0.1'));정수로 변환된 IP 주소를 이용하여 검색SELECT * FROM ip_addresses WHERE ip_address = INET_ATON('192.168.0.1');+--------------------------+| INET_ATON('192.168.0.1') |+--------------------------+| 3232235521 |+--------------------------+정수로 변환하면 4바..

Mysql & Maria/admin 2024.08.26

mysql 처음 설치시 초기파라미터

binlog_row_image- minimal :  CDC를 하지 않고 복제 기능만 사용할 때 설정합니다.- full : binlog를 통한 CDC를 사용하는 경우 설정해 줍니다.binlog_row_image = FULL:모든 컬럼의 값을 로그에 기록합니다.UPDATE 문의 경우, 변경 전과 후의 모든 컬럼 값을 기록합니다.더 많은 디스크 공간과 네트워크 대역폭을 사용합니다.복제 과정에서 더 많은 정보를 제공하므로 문제 해결이 용이합니다.원본 테이블과 복제 테이블의 구조가 다르더라도 안전하게 복제할 수 있습니다.binlog_row_image = MINIMAL:변경된 컬럼의 값만 로그에 기록합니다.UPDATE 문의 경우, 변경된 컬럼과 기본 키(또는 고유 키)만 기록합니다.디스크 공간과 네트워크 대역폭 사..

Mysql & Maria/admin 2024.08.26

CentOS 7 Maria 10.3 이중화 Galera Cluster

[테스트 시나리오] 지난번에 생성해둔 서버를 Galera Cluster를 사용하여 이중화 한다 1. Galera Cluster 설치 rpm -qa | grep galera 명령어로 사전 설치되어 있는지 확인 maria 이미 설치했기 때문에 설치되어 있었음 yum install -y galera 2. MariaBackup 설치 (sst 방식 중 하나로 다른 노드와 동기화하기 위해서) yum install -y MariaDB-backup 3. Galera Cluster 동기화 유저 생성 ( 각 노드별로 생성) CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'sst1234'; SHOW GRANTS FOR 'sstuser'@'localhost'; GRANT ALL ON *..

Mysql & Maria/admin 2024.04.18

CentOS 7 Maria 10.3 복제 환경구축

[테스트 시나리오] master db를 이용해 maria db 복제 구성 및 동기화를 진행한다. 복제 구성을 위한 사전작업 1. master db 데이터 백업 및 복제서버 구성 2. binlog 설정 on 3. replication 계정생성 4. replication 동기화 설정 - OS : centos 7.9.2009 - DB : maria 10.9.3 1. master db의 host name 변경 (db서버 구별을 위해) hostnamectl set-hostname kmleeDB1 hostname 서버 1 (kmleedb1) 전체 백업 진행 > 생성 파일 확인 mysqldump -uroot -p --all-databases > kmleedb1.sql 서버 2 (kmleedb2) OS 설치 및 mar..

Mysql & Maria/admin 2024.04.18

mysqlslap 사용 부하테스트

mysqlslap 사용하여 부하/성능 테스트 진행 mysql, maria 설치 시 기본으로 제공하는 유틸리티이며 Concurrency 파라미터를 통해 여러 client 가 동시 접속 하는것처럼 작동한다. mysqlslap --concurrency=200 --iterations=100 --auto-generate-sql --auto-generate-sql-guid-primary --auto-generate-sql-load-type=read --verbose 위의 명령어는 동시접속자 200 session이 100번 수행함을 의미 --auto-generate-sql 파라미터를 통해 테스트 db와 테이블을 자동생성, 삭제 하며 테스트 한다. * 자동생성된 mysqlslap 스키마와 t1 테이블 확인 (테스트 도..

Mysql & Maria/admin 2024.04.18

CentOS 7 Maria 10.3 환경구축

- OS : centos 7.9.2009 - DB : maria 10.9.3 [사전 설치사항] VMware : https://www.vmware.com/products/workstation-player/workstation-player-evaluation.html CentOS 이미지 파일 : https://www.centos.org/download/ > download now 클릭하여 vmware 설치 > 설치 시 기본 설정값 그대로 next >> x86_64 click >> kakao 미러 사이트 click >> CentOS-7-x86_64-DVD-2009.iso 파일 다운로드 [vmware 에 centos 설치] kyumin/test1234 [mariadb 설치 및 서비스등록] 1. 접속 후 su -..

Mysql & Maria/admin 2024.01.31

mariadb 에서 unsigned 컬럼 join 시 문제점

unsigned 컬럼은 부호 없는 정수를 나타내며, 일반적으로 양수만을 저장할 때 사용됩니다. DB 관점에서의 문제점 1. 데이터 불일치: unsigned 컬럼을 가진 테이블을 다른 테이블과 조인할 때, 부호 있는 정수 컬럼을 가진 테이블과 조인하면 데이터 불일치 문제가 발생할 수 있습니다. 이는 음수 값을 가지는 부호 있는 정수 컬럼과 양수 값을 가지는 unsigned 컬럼 간에 일치하지 않는 데이터가 발생할 수 있음을 의미합니다. 2. 인덱스 문제 ✨: unsigned 컬럼을 사용하면 해당 컬럼에 대한 인덱스가 부호 없는 정수 범위 내에서만 작동합니다. 따라서 음수 값이 있는 컬럼을 조인하거나 비교할 때 인덱스를 사용하지 못할 수 있습니다. 3. 형변환 오버헤드: unsigned 컬럼과 부호 있는 정..

DA 2024.01.24

Mysql xtrabackup 백업 및 복구 (slave 서버 재구성)

포스팅은 full backup 기준이며 slave 서버 재구성하는 시나리오 임. xtrabackup 방식 - mysqldump 형식이 아니므로 event_scheduler, 논리적 복구는 따로 적용해줘야함. - xtrabackup version : 8.0 - mysql version : mysql 8.0.27 ZSTD 가 compress 옵션 사용시 기본 압축 방식으로 변경되어 qpress 설치할 필요가 없어짐. 1. 백업 수행 xtrabackup --defaults-file=/etc/my.cnf \ --user="userid" \ --password="password" \ --backup \ --no-lock --parallel=4 \ --compress \ --compress-threads=4 \ -..

Mysql & Maria/admin 2024.01.11