이 소스코드는 대량의 Aurora MySQL 데이터베이스 관리를 간소화하기 위해 LLM을 적용하는 아이디어에서 시작되었습니다.
LLM에 Agent 개념을 도입하여, 오류 로그를 분석하고 자연어로 Cloudwatch 메트릭 정보를 검색하며 그래프를 생성하는 간단한 데모를 만들었습니다.
이 프로젝트가 데이터베이스 관리 효율성을 향상시키기 위해 LLM 구현을 고려하는 고객들에게 큰 도움이 되기를 바랍니다.
- db-admin.yaml 파일은 이 GitHub 저장소에서 사용할 수 있습니다.
- 홈 디렉토리에서 yaml 파일을 다운로드하세요
- Cloudformation에 db-admin.yaml을 업로드하고 us-east-1에 스택을 생성하세요
- 실습환경에서 사용된 구성환경은 다음과 같습니다.
- python : 3.9
- pip : 24.2
- langchain-aws : 0.1.16
- mysql-connector : 2.2.9
- gdown : 5.2.0
- metaplotlib : 3.9.2
python3 -m venv myenv
source myenv/bin/activate
pip install --upgrade pip
pip install mysql-connector-python
pip install mysql.connector
pip install boto3
pip install langchain-aws
pip install gdown
pip install matplotlib
export AWS_DEFAULT_REGION=us-east-1
gdown https://drive.google.com/drive/folders/15oie9_FlNv871sIIAFBPPM5h0J8s61TU?usp=sharing --folder
- 다운받은 다음,ls 명령어로 db-admin 폴더와 파일들을 볼 수 있습니다: ls -al /home/ec2-user
- db-admin <folder>
- setup.sh
- db-admin.py
- load_data.py
- data.json
- cd db-admin 실행하여 db-admin 폴더로 들어갑니다.
- setup.sh에 chmod를 실행하고 setup.sh를 실행합니다
chmod +x /home/ec2-user/db-admin/setup.sh
/home/ec2-user/db-admin/setup.sh
- 이제 /home/ec2-user/에 복사된 db-admin.py를 찾을 수 있습니다.
- cloudformation 콘솔로 가서 db-admin.yaml로 만든 스택을 찾으세요
- resource 또는 output tab에 가서 s3 bucket명을 찾아서 copy하세요
- db-admin.py 를 열어서 s3_bucket_name 변수를 검색해서 옆에 copy한 내용을 아래와 같은 방식으로 붙여넣으세요.
ex : s3_bucket_name = "test-s3bucket-fugwilwec8mx"
- Aurora mysql 의 Performance Insight정보등이 활성화 되어있지 않으면 에러가 날수 있습니다.
에러가 난다면, RDS콘솔에서 각각의 Aurora cluster들을 선택하고 활성화 체크버튼에 체크를 해줘야 합니다.
-
ec2 인스턴스내의 db-admin 폴더밑에서 "streamlit run db-admin.py"를 실행하여 애플리케이션을 시작합니다.
-
그런 다음 채팅 창에서 다음 질문들을 테스트 해보세요 :
a. gamedb1-cluster의 sales테이블을 조회해주세요
b. gamedb2-cluster의에서 order테이블과 customer테이블을 조인하고 주문내역 5건을 주문아이디, 주문자, 일자, 금액을 주문일자의 내림차순으로 보여주세요.
c. gamedb로 시작하는 모든 클러스터의 스키마정보를 비교해주세요.
d. gamedb1-cluster의 order 테이블에 컬럼 tag4 varchar(10)을 추가해주세요
e. 어제 하루동안 gamedb로 시작하는 모든 디비의 cpu,memory의 평균,커넥션과 HLL의 max값과 각종 레이턴시(dml,select..)들의 평균값을 보여줘.
f. 모든디비의 디비로드 등 성능을 보여주고 분석까지 부탁해 (참고: 왼쪽의 리전과 클러스터들을 선택하고 날짜와 시간을 확인하세요)
g. top쿼리도 보여주세요.
h. game으로 시작하는 모든 디비들의 innodb status를 확인하고 분석해줘.
i. game으로 시작하는 모든 디비의 이벤트별 메모리 사용율을 보여줘.
j. game으로 시작하는 모든 디비의 버퍼캐시 히트율을 보여줘.
k. game으로 시작하는 모든 디비의 슬로우 쿼리를 분석해줘.
l. 어제 하루동안 game으로 시작하는 모든 디비의 에러로그를 분석해줘.
- 위와 같이 테스트할때 구현되는 데모를 아래링크에서 확인해보세요. Demolink