This page provides a list of best practices when optimizing an Oracle RDS with Akamas.
Optimization setup
System setup
Every RDS instance fetches the initialization parameters from the definition of the DB parameter group it is bound to. A best practice is to create a dedicated copy of the baseline group for the target database, to avoid impacting any other database that may share the same configuration object.
Workflow setup
DB parameter groups must be configured through the dedicated Amazon RDS API interface. A simple way to implement this step in the Akamas workflow is to save the tested configuration in a configuration file and submit it through a custom executor leveraging the AWS Command Line Interface. The following snippets show an example of tuning an instance with id oracletest, bound to the configuration group named test-oracle:
The following script rds_update.sh updates the configuration. It requires the name of the target DB parameter group and the path of the temporary folder containing the generated configuration:
#!/bin/bashset -euo pipefailGROUP_NAME=$1TMPFLD=$2TS=`date +'%y%m%d%H%M%S'`cd ${TMPFLD}cp oraconf conf.$TSAWK_CODE='{n=$2} $2~/[0-9]+m$/ {gsub(/m$/,"",n);n=n*1024*1024} $2~/[0-9]+k$/ {gsub(/k$/,"",n);n=n*1024} {print "ParameterName="$1",ParameterValue="n",ApplyMethod=pending-reboot"}'echo Applying params:; awk "${AWK_CODE}" oraconfaws rds modify-db-parameter-group \--db-parameter-group-name ${GROUP_NAME} \--parameters `awk "${AWK_CODE}" oraconf`# dump full new confaws rds describe-db-parameters \--db-parameter-group-name ${GROUP_NAME} | jq -c '.Parameters[] | {ParameterName, ParameterValue}' > full_pars_dump.$TS.jsonl# if configuration changed wrt last one (ie: this is the first trial of the new experiment) wait for update propagationdiff -q `ls conf\.* | tail -n2` || (echo 'Configuration changed. Waiting for propagation.' && sleep 420 )
The following script rds_reboot.sh restarts the RDS instance with the provided ID: