AWS CLI を使って RDS のパラメータグループの差分を取る

Posted on

RDS for MySQL から Amazon Aurora へ移行するために、既存の MySQL に設定したパラメータグループの変更点を確認する必要がありました。

ですが Management Console ではパラメータグループ同士の差分を取ることができません。見落としていましたが、Management Console からも差分を取れました。

ちょっと面倒ですが AWS CLI を使ってやってみました。

AWS CLI を使ってパラメータグループの差分を取る

まずはパラメータグループ名の一覧を取得します。

$ aws rds describe-db-parameter-groups \
--query 'DBParameterGroups[].DBParameterGroupName'
[
    "default.aurora5.6",
    "default.mysql5.6",
    (snip)
]

目的のパラメータグループから --query オプションを使って ParameterValuenull でないものだけ抜き出して JSON を組み立てます。

$ aws rds describe-db-parameters \
--db-parameter-group-name default.mysql5.6 \
--query 'Parameters[?ParameterValue!=`null`].{ParameterName:ParameterName, ParameterValue:ParameterValue}'
[
    {
        "ParameterName": "basedir",
        "ParameterValue": "/rdsdbbin/mysql"
    },
    {
        "ParameterName": "binlog_cache_size",
        "ParameterValue": "32768"
    },
    {
        "ParameterName": "binlog_format",
        "ParameterValue": "MIXED"
    },
    (snip)
]

比較しやすいように jq コマンドで sort してからファイルに書き出します。これを比較したいパラメータグループに対して行います。

$ aws rds describe-db-parameters \
--db-parameter-group-name default.mysql5.6 \
--query 'Parameters[?ParameterValue!=`null`].{ParameterName:ParameterName, ParameterValue:ParameterValue}' | \
jq -r 'sort_by(.ParameterName)' > default.mysql5.6.json

あとは diff コマンドで書き出したファイルの差分を取ります。

$ diff -u *.json
--- default.aurora5.6.json 2017-02-17 12:58:46.000000000 +0900
+++ default.mysql5.6.json  2017-02-17 12:56:28.000000000 +0900
@@ -1,22 +1,22 @@
 [
   {
-    "ParameterName": "aurora_lab_mode",
-    "ParameterValue": "0"
-  },
-  {
     "ParameterName": "basedir",
-    "ParameterValue": "/rdsdbbin/oscar"
+    "ParameterValue": "/rdsdbbin/mysql"
   },
   (snip)

まとめ

RDS for MySQL にしろ Amazon Aurora にしろパラメータグループを正しく設定しないと本来の性能を引き出せません。差分をしっかり確認して漏れのないようにしたいですね。