3月の2週目メモ

これから技術ブログのみならず、scrap の記事も書いていきたいと思います。週ごとなどランダムなタイミングで自分が調べた記事について書いていきます。

Aurora Binlog について

MySQL はBinlog に記載されている内容をもとにDBを復旧したり、他のBI 関連サービスにデータを送信することが可能になっている。例えば、Aurora に貯めたデータをBig Query で分析したいという要件があれば、BinlogをDatastream に転送して、Big Queryにデータを送信することも可能になっている

binlog でよく見る必要がある個所

Binlog format

format は3種類存在します。MIXED・STATEMENT・ROW があります。

# コマンド
SHOW VARIABLES LIKE 'binlog_format';

+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+

それぞれ違いについてClaude に聞いてみました。この解説を見ている限りはMIXED が一番中間を取っていて、バランス的によさそう。ただ、statement とROW が混じってしまうことになるので、エラーによって止まってしまう可能性がありそう。なので、統一するという意味でも多少Binary log の書き込みが多くてもROW にすべきなのかもしれない。

MySQL Binlogフォーマット比較

フォーマット記録内容メリットデメリット備考
STATEMENT実行されたSQL文ログファイルが軽量。NOW()UUID()などの非決定的関数で不整合が起きる。古いバージョンのデフォルト
ROW変更された行データデータの整合性が最も高い。トリガーやストアドも正確。変更行数が多いとログが肥大化し、I/O負荷が高まる。MySQL 8.0以降のデフォルト
MIXED基本は文、必要時のみ行効率と安全性のバランスが良い。どちらの形式で書かれたか追跡が少し複雑になる。特殊な事情がない限りROWが推奨

Binlog の保存期間

Aurora でもBinlog の保存期間の設定をすることができる。 コマンドは、show variables でもあるのですが、公式にはストアドプロシージャでも確認が可能だそうです。

このコマンドを使うことによって、binary log の保持期間を確認することができます。

CALL mysql.rds_show_configuration;

Aurora を使っている場合は、binlog をオフにしていても、ライターからリーダーへの同期は仕様上されるので、 オフにしていても問題ない設定にはなります。ただ、外部とのデータ同期などを実施している場合は、必要なので、 その辺りは要件に応じて設定をする必要があります。

Git 操作(復習)

アプリ開発者はもちろん、インフラエンジニアであってもGit の操作が必須になりつつあると思います。なぜなら、IaC でインフラのコード化が進んでおり、チームでそれを管理する必要があるからです。

git stash について

開発をしていると、今使っているbranch を一度切り替えて他のbranch で作業を続けたい時があると思います。その際にそのまま切り替えてしまうと今までの作業内容が消えてしまうので、それを一時退避する操作です。

Git って本当に便利ですよね。では操作方法についてです。

まずは差分があることを確認

git status
On branch develop
Your branch is up to date with 'origin/develop'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   /index.md

この変更内容をstash します。またgit add でstage に乗せてない状態なので、オプションの-u が必要になります。下記のような表示がでたら、問題なくstash できています。

# stash
git stash -u -m "index md test"
Saved working directory and index state On develop: index md test

#stash 確認
git stash list
stash@{0}: On develop: index md test

branch を移動して、このstash した内容を戻したい時は、stash apply を実行します。そうしたらstatus と同様の表示内容が出てきたら問題なく退避したものを戻せています。これで違うbranch での開発も安心ですね!

# stash を戻す
git stash apply

On branch develop
Your branch is up to date with 'origin/develop'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   /index.md

stash したものを残したくはないですよね。では、削除しておきましょう。Dropped でメッセージが表示されたら削除されています。

git stash drop

Dropped refs/stash@{0}

参考サイト

Aurora binlog について参考

https://dev.classmethod.jp/articles/enable-aurora-binary-logs/

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/mysql-stored-proc-configuring.html