何がしたいか
現行稼働の RDS(mysql) が 5 系なので、8 系に更新したい
手始めに、パラメーターグループについて
- mysql 5系(現行稼働)
- mysql 8系(デフォルト値)
の 2 種を txt 形式で出力し、パラメーター差分を把握可能としたい
作業環境
- awscli v2
- bash
現行稼働のパラメーターグループを取得
- DB インスタンス名は
DB_INSTANCE_NAME_X
とする
# 変数設定 >>>>> インスタンス名に合わせて変える <<<<<<
$ db_instance="DB_INSTANCE_NAME_X"
# 変数設定
$ current_parameter_group=$(aws rds describe-db-instances \
--db-instance-identifier $db_instance \
--query "DBInstances[].[DBParameterGroups[0].DBParameterGroupName]" \
--output text)
# txt 出力
$ aws rds describe-db-parameters \
--db-parameter-group-name ${current_parameter_group} \
--query "Parameters[].[ParameterName,ParameterValue]" \
--output text > ${current_parameter_group}.txt
# 出力確認
$ cat DB_INSTANCE_NAME_X.txt | head -3
allow-suspicious-udfs None
autocommit None
auto_generate_certs None
mysql 8系 のデフォルトパラメーターグループを取得
- 一時的に
temp-paramg
というパラメーターグループを作成- mysql 8 系 デフォルトパラメーターが適用済
-
temp-paramg
を txt で出力 - 後始末で
temp-paramg
を削除
# temp-paramg という名の一時的なパラメーターグループを作成
$ parameter_group_family="mysql8.0"
$ aws rds create-db-parameter-group \
--db-parameter-group-name temp-paramg \
--db-parameter-group-family ${parameter_group_family} \
--description default.${parameter_group_family}_tmp
# txt 形式で出力
$ aws rds describe-db-parameters \
--db-parameter-group-name temp-paramg \
--query "Parameters[].[ParameterName,ParameterValue]" \
--output text > default-${parameter_group_family}.txt
# 出力確認
$ cat default-mysql8.0.txt | head -3
activate_all_roles_on_login 0
allow-suspicious-udfs None
autocommit None
# 後始末 <<<<<<<<<< 実施を忘れないこと
$ aws rds delete-db-parameter-group --db-parameter-group-name temp-paramg
差分把握
diff ツールを使って差分把握する
$ vimdiff default-mysql8.0.txt DB_INSTANCE_NAME_X.txt
参考