Windows 10 (WSL Ubuntu) + AWSCI 를 이용하여 Aurora MySQL SlowQuery Logs Percona-Toolkit 쿼리 분석 하기
Windows 10 환경에서 Percona-Toolkit(pt-query-digest) 을 이용한 Aurora MySQL SlowQuery 분석
1. Microsoft Sotre 의 Ubuntu 설치
- Ubuntu 22.04.1 LTS 버전으로 설치하였으며 버전은 각 환경에 맞게 설치한다.
2. Ubuntu Username, Password 등록
3. Ubuntu 창 마우스 오른쪽 클릭하여 복사/붙여넣기 사용 체크
4. apt 명령어를 이용하여 패키지 설치
#ubuntu gzip error 발생하여 offset value 변경
echo -en '\x10' | sudo dd of=/usr/bin/gzip count=1 bs=1 conv=notrunc seek=$((0x189))
sudo apt update
sudo apt install net-tools
sudo apt install jq
sudo apt install awscli
sudo apt install percona-toolkit
5. open-ssh 패키지 설치 및 환경설정 (Optional 설치로 ssh 접속이 필요없는 경우 해당 스텝은 무시한다.)
# root 패스워드 설정
sudo passwd
#New password:
#Retype new password:
#passwd: password updated successfully
# root 로 switch
su -
#Password:
# ssh 패키지 설치
apt install openssh-server
# sshd_config 설정
cd /etc/ssh
vi sshd_config
# 아래의 설정 변경
Port 22
PasswordAuthentication yes
# ssh-keygen
ssh-keygen -A
# sshd restart
service ssh --full-restart
# root 에서 일반 user 로 switch
exit
6. awscli 환경 설정
- 아래의 링크를 참조하여 config 와 credentials 파일에 프로파일 및 인증 정보를 설정한다.
2022.08.30 - [AWS/AWS SDK for Python] - AWS CLI 설치 및 환경 설정 방법
cd
mkdir .aws
vi .aws/config
vi .aws/credentials
7. Aurora MySQL SlowQuery Logs 를 이용하여 Percona-Toolkit(pt-query-digest) 쿼리 스크립트 작성
# 디렉토리 생성
cd
mkdir percona
cd percona
# pt-query-digest 스크립트 생성 (스크립트는 aws profile 설정에 맞게 수정)
vi slowquery-pt-query-digest.sh
#!/bin/bash
#########################################################################
# aws profile 과 db 명을 선택
PS3='Please Select one: '
select AWS_PROFILE in "dev" "stg" "prd"
do
echo "The one you have selected is : $AWS_PROFILE"
break
done
select TARGET_NAME in "mysql-bk" "mysql-dw" "mysql-core"
do
echo "The one you have selected is : $TARGET_NAME"
break
done
#########################################################################
# set variables
LogGroupName="/aws/rds/cluster/aurora-rds-cluster-$TARGET_NAME/slowquery"
LogStreamName="aurora-instance-$TARGET_NAME-0"
#타임스탬프 컬럼 한국 시간 기준
#start_time="2022-09-29 09:00:00"
#end_time="2022-09-29 18:00:00"
start_time=$1
end_time=$2
#########################################################################
# parse to microseconds unixtime
format='%Y-%m-%d %H:%M:%S'
timestamp_start=$(TZ=KST-9 date -d "$format" -d "$start_time" +%s%3N)
timestamp_end=$(TZ=KST-9 date -d "$format" -d "$end_time" +%s%3N)
#########################################################################
# colorable
readonly cf="\\033[0m"
readonly red="\\033[0;31m"
#########################################################################
# secion header
display_section_header() {
echo -e "${red}==================== $1 ====================${cf}"
}
#########################################################################
# get log events
cloudwatch_log_events() {
aws logs get-log-events --profile "$AWS_PROFILE" \
--log-group-name "$LogGroupName" \
--log-stream-name "$LogStreamName" \
--start-time "$timestamp_start" \
--end-time "$timestamp_end" \
--query 'events[].message' | jq -r '.[]'
}
#########################################################################
while read -r stream; do
# get stream events
display_section_header "$stream"
events="$(cloudwatch_log_events "$stream")"
# list SQL Query
# Query를 실행 횟수 순서로 나열
# grep -v 에서 특정 패턴을 제외
# display_section_header "Queries"
# echo "$events" | grep -v ^SET | grep -v ^# | grep -v ^use | sort | uniq -c | sort -r
# pt-query-digest
display_section_header "Pt-query-digest"
echo "$events" | pt-query-digest | more
done <<<"$LogStreamName"
8. 스크립트 권한 부여 및 실행
# 실행 권한 부여
chmod 750 slowquery-pt-query-digest.sh
# start_time, end_time 을 입력(Aurora MySQL SlowQuery 기간)하여 스크립트 실행
bash slowquery-pt-query-digest.sh "2022-09-29 09:00:00" "2022-09-30 18:00:00"
- AWSCLI + WSL Ubuntu + Percona Toolkit 조합으로 Aurora MySQL SlowQuery 를 보다 편하게 분석이 가능하다.
반응형
댓글