2015/10/29

RDS MySQLのログファイルをまとめてきれいにダウンロードする

RDS MySQLのインスタンスがクラッシュしたりしたときに mysql-error.log や mysql-general.log を一括してダウンロードしたいときに使うコマンドのメモ。

■mysql-errorログのダウンロード

## インスタンス名を指定
$ DB_INSTANCE_NAME=rds-test-instance

## RDSログ一覧を取得→ログの更新日時で並び替え→ログファイルのサイズが0以上→errorを含むログを抽出→一括ダウンロード
$ aws rds describe-db-log-files --db-instance-identifier ${DB_INSTANCE_NAME} \
   | jq -r '.DescribeDBLogFiles | sort_by(.LastWritten)[] | select(.Size>0) | .LogFileName' \
   | grep 'error' \
   | xargs -I% \
     aws rds download-db-log-file-portion --db-instance-identifier ${DB_INSTANCE_NAME} --log-file-name % --output text \
     > mysql-error.log

■mysql-generalログのダウンロード

## インスタンス名を指定
$ DB_INSTANCE_NAME=rds-test-instance

## RDSログ一覧を取得→ログの更新日時で並び替え→ログファイルのサイズが0以上→generalを含むログを抽出→一括ダウンロード
$ aws rds describe-db-log-files --db-instance-identifier ${DB_INSTANCE_NAME} \
   | jq -r '.DescribeDBLogFiles | sort_by(.LastWritten)[] | select(.Size>0) | .LogFileName' \
   | grep 'general' \
   | xargs -I% \
     aws rds download-db-log-file-portion --db-instance-identifier ${DB_INSTANCE_NAME} --log-file-name % --output text \
     > mysql-general.log