DataBase 19

[DB] MariaDB 시스템 튜닝

MariaDB의 튜닝은 MariaDB의 데이터베이스 시스템 관련 파라메터들에 대한 튜닝과 각각의 스토리지 엔진 관련 튜닝으로 나뉘어진다. MariaDB의 시스템 관련 튜닝은 MariaDB의 설정 파일인 my.cnf(윈도우의 경우 my.ini)파일을 수정하게 되며 MariaDB 커넥션에 관한 부분과 메모리에 관한 부분으로 나눌 수 있다. 1. MariaDB 연결(Connection) 튜닝 실질적으로 MariaDB이 가장 많이 사용되는 분야를 꼽는다면 역시 인터넷 분야라고 할 수 있다. 포탈사이트나 게임사이트 등 매우 많은 부하가 발생하는 사이트에서 가장 문제가 되는 것은 MariaDB의 커넥션에 관련된 문제이다. (1) Connection 설정 보기 SHOW STATUS LIKE '%connect%'; S..

DataBase/Maria DB 2023.02.08

[DB/AWS] 리눅스2 MARIA DB 설치 - 3) MariaDB의 Data 위치 변경하기

아래 1강에서 추가한 스토리지에 MARIADB 의 DATA를 위치 시키기 위해서 환경파일을 변경해 줘야 한다. 리눅스2 MARIA DB 설치 - 1) 스토리지 볼륨 사용할수 있도록 만들기 :: Binary의 끄적끄적 (tistory.com) 리눅스2 MARIA DB 설치 - 1) 스토리지 볼륨 사용할수 있도록 만들기 처음 리눅스 서버를 생성 했을때 루트 볼륨을 제외 하고 추가한 볼륨은 사용가능한 상태가 아니다 추가 한 스토리지 볼륨을 사용가능하게 하는 방법은 다음과 같다 1. 추가할 볼륨 확인 2. 추가 trillion-binary.tistory.com 1. MariaDB 의 data 위치 확인 mysql -u root -p 로 mariadb에 접속한 후 select @@datadir; +--------..

DataBase/Maria DB 2023.02.08

[DB/AWS] 리눅스2 MARIA DB 설치 - 2) MariaDB 설치

OS 기본 저장소에서 사용할 수 있는 MariaDB 서버 버전은 업스트림 프로젝트에 따라 최신 버전이 아니다. Amazon Linux 2에 최신 MariaDB 설치하려면 MariaDB 공식 RPM 리포지토리를 추가해야 합니다. Amazon Linux 2에서 작동하는 것은 CentOS 7 리포지토리입니다. 현재 10.7버전 기준 1. 먼저 시스템을 업데이트하고 재부팅 sudo yum -y update sudo reboot 2. 아래 명령을 루트 또는 sudo 권한이 있는 사용자로 실행하여 MariaDB 리포지토리를 Amazon Linux 2 시스템에 추가 curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup sudo bash maria..

DataBase/Maria DB 2023.02.08

[DB/AWS] 리눅스2 MARIA DB 설치 - 1) 스토리지 볼륨 사용할수 있도록 만들기

처음 리눅스 서버를 생성 했을때 루트 볼륨을 제외 하고 추가한 볼륨은 사용가능한 상태가 아니다 추가 한 스토리지 볼륨을 사용가능하게 하는 방법은 다음과 같다 1. 추가할 볼륨 확인 2. 추가할 볼륨이 파일시스템이 있는지 여부 확인 1) 없을때 2) 있을때 3. 파일시스템이 없다면 파일시스템을 생성 4.mkfs.xfs이 발견되지 않는 오류가 발생하는 경우 다음 명령을 사용해 XFS 도구를 설치하고 3번을 반복 5.볼륨에서 사용할 디렉터리를 생성한다. 6. 디렉터리를 볼륨에 탑재한다. 7.재부팅 후에도 디렉터리를 볼륨에 자동으로 탑재 1) UUID 조회 2) 다음 항목을 /etc/fstab에 추가해 디바이스를 지정된 탑재 지점에 탑재합니다. 필드는 blkid가 반환하는 UUID 값(또는 Ubuntu 18.0..

DataBase/Maria DB 2023.02.08

[DB] MariaDB 백업 스케줄 설정과 백업파일 AWS S3 저장소 업로드

기업이나 개발자들은 정기적인 DB 백업의 중요성을 잘 알 것입니다. 디스크가 고장나거나 DB 서버에 오류가 발생할 경우 백업을 미리 해 두었는지 여부에 따라 몇 년 치의 업무 데이터가 손실되느냐 아니면 빠른 시간 내에 정상적으로 복구하느냐를 결정하게 됩니다. ​ 본 글에서는 MariaDB의 정기적인 백업을 실행하고 결과 파일을 AWS S3 저장소로 자동 업로드하는 방법을 알아볼 것입니다. ​ Windows 환경에서의 MariaDB 백업 1. 정기적 백업을 실행할 batch 파일을 작성합니다. ​ ​set CUR_DATE=%date:~0,4%-%date:~5,2%-%date:~8,2% echo %CUR_DATE% "D:\mariadb\bin\mysqldump" --single-transaction --ro..

DataBase/Maria DB 2023.02.08

[DB] MariaDB 이중화 구성 설정 방법과 분산처리 (Replication Master/Slave)

하나의 DB 서버에 많은 트래픽이 몰리게 된다면 큰 병목 현상이 일어나 정상적인 서비스를 제공하지 못하는 상황이 발생하기도 합니다. ​ 이를 개선하기 위해 MySQL과 MariaDB는 DB서버를 분산하여 처리할 수 있게 도와주는 Replication 구조를 제공합니다. Replication는 복제라는 의미로, Master/Slave 구조를 기반으로 하여 Master 서버에서의 변경 사항을 Slave 서버가 받아와서 데이터의 정합성을 맞추고 APP이나 WEB 서버의 요청을 Slave에서 처리할 수 있는 형태입니다. (여기서 정합성이란 두 서버 간의 데이터가 서로 일치하는지 여부를 말합니다.) Master/Slave Replication 구조의 특징 ​ N개의 Slave DB를 추가적으로 구성할 수 있습니다..

DataBase/Maria DB 2023.02.07

[DB] MariaDB 실행 계획

MariaDB 쿼리 계획 방법​ 실행할 쿼리 앞에 explain을 붙여주고, 실행. ​ 개요 SQL Server 실행계획 = MariaDB 쿼리 계획. MariaDB는 쿼리 처리 순서를 확인 할 수 있는 쿼리 계획(query plan) 기능을 제공한다. MariaDB에서는 쿼리 계획을 확인하는 explain, analyze가 있다. explain은 예상되는 실행 계획을 보여주고, analyze는 쿼리를 실제 실행한 후 실행한 쿼리 계획을 보여준다. ​ MariaDB는 10.0.1 이후부터 사용 가능 (비글즈 10.6.5 사용중 ) select version(); -- 버전확인 ​ 쿼리 계획 항목 1) id 대상 쿼리문에 join이 포함되어 있을 때, 어떠한 순서로 테이블이 join되는지를 나타내는 값이다..

DataBase/Maria DB 2023.02.07

[DB] 더 빠른 SQL 쿼리를 위한 데이터베이스 튜닝 규칙

- IT WORLD 매거진 참고. - 튜닝하기 위한 정답이 존재하지는 않는다. - SQL Server(MS-SQL), 오라클, DB2, 사이베이스, MySQL, MariaDB - 최고의 성형은 다이어트? 최고의 튜닝은 네트워크 트래픽 최소화. ​ 1. 가능하면 커서(Cursor)를 피하라. 커서는 속도 문제를 겪을 뿐 아니라, 다른 작업을 필요 이상 지연시킬 정도로 하나의 작업을 블록(Block)시킬 수도 있다. 우리는 BM 특성상 커서를 사용하는 부분이 있다. BM이해 없이 그대로 복사해서 작업시 문제가 될 수 있다. ​ 2. 커서를 피할 수 없다면, 임시 테이블(temp table)을 사용하라 커서를 사용해야만 할 때가 있다. 그런 경우, 라이브 테이블(Live Table)보다는 임시 테이블에 대한 ..

DataBase/Maria DB 2023.02.07

[DB] 인덱스 조회시 참고 사항

1. between, like, 등 범위 조건은 해당 컬럼은 인덱스를 타지만, 그 뒤 인덱스 컬럼들은 인덱스가 사용되지 않습니다. ​group_no, from_date, is_bonus으로 인덱스가 잡혀있는데 조회 쿼리를 where group_no=XX and is_bonus=YY and from_date > ZZ등으로 잡으면 is_bonus는 인덱스가 사용되지 않습니다. ​from_date 뒤에 있는 from_date 인덱스는 안탑니다. 2. =, in 은 다음 컬럼도 인덱스를 사용합니다. in은 결국 =를 여러번 실행시킨 것이기 때문입니다. ​단, in은 인자값으로 상수가 포함되면 문제 없지만, 서브쿼리를 넣게되면 성능상 이슈가 발생합니다. in의 인자로 서브쿼리가 들어가면 서브쿼리의 외부가 먼저 실..

DataBase 2023.02.07
BIG