Skip to content

Instantly share code, notes, and snippets.

@voxxit
Last active October 31, 2023 16:13
Show Gist options
  • Save voxxit/d1e4b4e8240ad3174d0f to your computer and use it in GitHub Desktop.
Save voxxit/d1e4b4e8240ad3174d0f to your computer and use it in GitHub Desktop.
Downloads RDS slow query logs for the last 24 hours using the AWS CLI
#!/bin/bash
instanceID=$1
date=$(date +%Y%m%d)
function downloadLog () {
local log=$1
aws rds download-db-log-file-portion \
--output text \
--db-instance-identifier $instanceID \
--log-file-name $log
}
downloadLog slowquery/mysql-slowquery.log > slow-$date.log
for i in $(seq 0 23); do
downloadLog slowquery/mysql-slowquery.log.$i >> slow-$date.log
done
# Runs pt-query-digest from the Percona toolkit, if found
if which pt-query-digest >/dev/null; then
pt-query-digest slow-$date.log > slow-digest-$date.log
fi
@fguillen
Copy link

The aws cli command that worked for me was:

aws rds download-db-log-file-portion --db-instance-identifier <db-instance-id> --profile <profile-name> --log-file-name slowquery/mysql-slowquery.log --output text > ~/slow-queries.log

@shubhamgoyal41
Copy link

This one worked for me:

#!/bin/bash

instanceID=$1
date=$2

function downloadLog () {
  local log=$1

  aws rds download-db-log-file-portion \
    --output text \
    --db-instance-identifier $instanceID \
    --log-file-name $log \
    --region ap-south-1
}

downloadLog slowquery/mysql-slowquery.log > slow-$date.log

for i in $(seq -w 0 23); do
  downloadLog slowquery/mysql-slowquery.log.$date.$i >> slow-$date.log
done

usage : ./download-slow-query-log.sh my-db-1 '2020-07-18'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment