created: 2023-10-24T08:30:41.164Z
開発環境の構築で毎回つける mysqldump のオプション
mysqldump \
--single-transaction \
--no-tablespaces \
--login-path=me \
--compression-algorithms=zstd \
--column-statistics=0 \
--set-gtid-purged=OFF
--single-transaction
このオプションをつけないと LOCK TABLE
がかかる場合がある。開発用のデータ取得は整合性はいらないのでつける。
--no-tablespaces
CREATE LOGFILE GROUP ステートメントおよび CREATE TABLESPACE ステートメントを出力に書き出さない
tablespaces
とはテーブルの中身や binlog の保管場所を特別に指定する設定情報のことで、これは通常は開発には必要ない。この情報を取得しようとすると PROCESS 権限が必要になり多くの場合で権限エラーになったりする。
--login-path
mysqldump でも login-path は使える。本番につなぐ場合とかもアカウント管理が楽になるので、もし使っていなかったら使うようにする。
--compression-algorithms=zstd
取得するデータを zstd で圧縮してくれる。mysqldump が向けられる DB サーバではほとんどの場合は CPU よりも帯域がリソースとして重要なはずなのでつける。というか zstd だと CPU 負荷も低廉。以前は --compress
というオプションで zlib で圧縮していたが容量が 10MB とかを超える場合は zstd のほうが体感できるレベルで早い。
圧縮で送信データを少なくしても CPU 負荷って下がるんじゃないのかなとも思うけどどうなんだろう。
--column-statistics=0
テーブルの統計情報を取得しない。統計情報は開発用は通常不要なのでつける。 ドキュメントには「デフォルトでは無効」と書いてあるので、今はもうつけなくてもいいのかも。
--set-gtid-purged=OFF
グローバルトランザクション識別子(GTID)を一緒にもってくるかの設定、開発用で整合性が重視されない場合なので不要としておく。GTID が有効なプロジェクトだと考慮が必要なようだ。