[PR] あなたが Kindle で読みたいその本、Kindle に対応したら Twitter でお知らせします。

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

Posted on

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

ですが 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 にしろパラメータグループを正しく設定しないと本来の性能を引き出せません。差分をしっかり確認して漏れのないようにしたいですね。