Memo/AmazonWebServices/awscli/RDS

http://dexlab.net/pukiwiki/index.php?Memo%2FAmazonWebServices%2Fawscli%2FRDS
 


RDS


メンテナンス時のOSの更新

  • メール件名:Action required: Amazon RDS Maintenanceの場合
    • apply-action: system upgrades
    • apply-pending-maintenance-actionは不要だった
    • AWS console上のRDSインスタンスのメンテナンスカラムには何も表示されない
    • 指定されたメンテナンスウィンドウの時間帯にメンテナンスが実施され、1〜2分停止する。
    • ログの例: failover started時にダウンタイムが発生する。0:00 UTC〜30分の間にメンテナンスウィンドウを設定した場合
      1. 09:02:14 AM UTC+9 db01 Multi-AZ instance failover completed
      2. 09:01:49 AM UTC+9 db01 DB instance restarted
      3. 09:01:39 AM UTC+9 db01 Multi-AZ instance failover started

RDSメンテナンスウィンドウの指定

  • 曜日、開始時刻、期間指定が面倒なので、以下では、日時を指定すれば曜日等は自動
  • バックアップウィンドウとメンテナンスウィンドウは重ねられず、エラーになる
    • メンテナンスウィンドウの前にバックアップウィンドウを設定する場合
      1.  --preferred-backup-window $(LANG=C date -u -d "$MAINTENANCE_WINDOW 60 minutes ago" '+%H:%M')-$(LANG=C date -u -d "$MAINTENANCE_WINDOW 30 minutes ago" '+%H:%M') \
  • 複数のRDSにメンテナンスウィンドウを設定
    1. AWS_PROFILE=default
    2. AWS_REGION=ap-northeast-1
    3. MAINTENANCE_WINDOW="2017-12-18 05:00 UTC"
    4. RDS_IDS="id1 id2"
    5. for id in $RDS_IDS; do \
    6. aws rds modify-db-instance \
    7.  --db-instance-identifier $id \
    8.  --preferred-maintenance-window $(LANG=C date -u -d "$MAINTENANCE_WINDOW" '+%a:%H:%M')-$(LANG=C date -u -d "$MAINTENANCE_WINDOW 30 minutes" '+%a:%H:%M') \
    9.  --profile $AWS_PROFILE \
    10.  --region $AWS_REGION > ./${id}.json; \
    11. done

初期設定

  • MySQL 5.6 設定:日本語(絵文字utf8mb4含む)ケースの例
    1. AWS_PROFILE=default
    2. AWS_REGION=ap-northeast-1
    3. DB_PARAMETER_GROUP_NAME=test
    4. DB_PARAMETER_GROUP_DESCRIPTION="For $DB_PARAMETER_GROUP_NAME"
    5. aws --profile $AWS_PROFILE --region $AWS_REGION rds create-db-parameter-group \
    6.   --db-parameter-group-name $DB_PARAMETER_GROUP_NAME \
    7.   --db-parameter-group-family mysql5.6 \
    8.   --description "$DB_PARAMETER_GROUP_DESCRIPTION"
    9. aws --profile $AWS_PROFILE --region $AWS_REGION rds modify-db-parameter-group \
    10.   --db-parameter-group-name $DB_PARAMETER_GROUP_NAME \
    11.   --parameters \
    12.   "ParameterName=max_connections,ParameterValue=1000,ApplyMethod=immediate" \
    13.   "ParameterName=max_connect_errors,ParameterValue=999999999,ApplyMethod=immediate" \
    14.   "ParameterName=character_set_client,ParameterValue=utf8mb4,ApplyMethod=immediate" \
    15.   "ParameterName=character_set_server,ParameterValue=utf8mb4,ApplyMethod=immediate" \
    16.   "ParameterName=collation_server,ParameterValue=utf8mb4_general_ci,ApplyMethod=immediate" \
    17.   "ParameterName=slow_query_log,ParameterValue=1,ApplyMethod=immediate" \
    18.   "ParameterName=long_query_time,ParameterValue=3,ApplyMethod=immediate" \
    19.   "ParameterName=max_heap_table_size,ParameterValue=$(expr 32 \* 1024 \* 1024),ApplyMethod=immediate" \
    20.   "ParameterName=tmp_table_size,ParameterValue=$(expr 32 \* 1024 \* 1024),ApplyMethod=immediate" \
    21.   "ParameterName=thread_cache_size,ParameterValue=32,ApplyMethod=immediate" \
    22.   "ParameterName=innodb_file_per_table,ParameterValue=1,ApplyMethod=immediate" \
    23.   "ParameterName=innodb_file_format,ParameterValue=Barracuda,ApplyMethod=immediate" \
    24.   "ParameterName=innodb_large_prefix,ParameterValue=1,ApplyMethod=immediate"
  • DBパラメータグループの初期化
    1. aws --profile $AWS_PROFILE --region $AWS_REGION rds reset-db-parameter-group \
    2.   --db-parameter-group-name $DB_PARAMETER_GROUP_NAME \
    3.   --no-reset-all-parameters \
    4.   --parameters "ParameterName=max_connections,ApplyMethod=immediate"
  • RDSのバージョンを取得
    1. aws --profile default --region ap-northeast-1 rds describe-db-instances --query "DBInstances[].[DBInstanceIdentifier,EngineVersion,StorageType]" --output table
    2.  
    3. -----------------------------------------------------
    4. |           DescribeDBInstances                     |
    5. +-----------------------------+----------+----------+
    6. |  example-db-01              |  5.5.40  | standard |
    7. |  example-db-02              |  5.6.13  | gp2      |
    8. +-----------------------------+----------+----------+
  • RDSのMaintenance windowを、リージョン毎に一括設定する。時間はUTC。火曜日の午前6:00-6:30に設定する場合
    1. AWS_PROFILE=default
    2. AWS_REGION=ap-northeast-1
    3. AWS_MAINTENANCE_WINDOW=Mon:21:00-Mon:21:30
    4. for id in $(aws --profile $AWS_PROFILE --region $AWS_REGION rds describe-db-instances --query "DBInstances[].[DBInstanceIdentifier]" --output text); do \
    5. aws --profile $AWS_PROFILE --region $AWS_REGION rds modify-db-instance --preferred-maintenance-window $AWS_MAINTENANCE_WINDOW --db-instance-identifier $id; \
    6. done
  • マニュアルで取ったスナップショット一覧
    1. aws --region ap-northeast-1 rds describe-db-snapshots --snapshot-type manual

RDSイベントログの取得

管理コンソールからは過去2日分しか見えないが、awscliならそれ以上に取得できる。

  1. aws --profile default rds describe-events --source-identifier <rds id> --source-type db-instance --start-time 2016-11-22T00:00:00
  2.  
  3. # 日付とイベントだけ抽出する場合、以下を追加
  4. --query 'Events[].[Date,Message]'

DBParameterGroupName?の取得

  • 全リージョンのDBParameterGroupName?を取得(mysqlを指定)
    1. AWS_PROFILE=default
    2. for region in $(aws --profile $AWS_PROFILE ec2 describe-regions --query "Regions[].[RegionName]" --output text); do \
    3.   for i in $(aws --profile $AWS_PROFILE --region $region rds describe-db-parameter-groups --query 'DBParameterGroups[?contains(DBParameterGroupFamily, `mysql`)].[DBParameterGroupName]' --output text); do \
    4.     echo "$region, $i"; \
    5.   done \
    6. done

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-12-14 (木) 12:37:50 (192d)