mysqlコマンドのパスワード入力を省略する
ファイルがない場合は作成する
vi ~/.my.cnf
[client] password = sql接続のパスワード
作成した場合はパーミッションを600に。
$ chmod 600 ~/.my.cnf
DBサーバに接続してWordpressのDBをdumpする
/home/username/bin/ などにmysqldump.shなどで保存。
#/bin/sh # DB全体をDUMPしてもいいが、wp_site_cacheなどの実働には影響ないが重いファイルをdumpしないように、tableを指定してdump DUMP_TABLE_ARRAY+=("wp_commentmeta") DUMP_TABLE_ARRAY+=("wp_comments") DUMP_TABLE_ARRAY+=("wp_links") DUMP_TABLE_ARRAY+=("wp_options") DUMP_TABLE_ARRAY+=("wp_postmeta") DUMP_TABLE_ARRAY+=("wp_posts") DUMP_TABLE_ARRAY+=("wp_termmeta") DUMP_TABLE_ARRAY+=("wp_comments") DUMP_TABLE_ARRAY+=("wp_terms") DUMP_TABLE_ARRAY+=("wp_term_relationships") DUMP_TABLE_ARRAY+=("wp_term_taxonomy") DUMP_TABLE_ARRAY+=("wp_usermeta") DUMP_TABLE_ARRAY+=("wp_users") RDS=rdsのホスト名 #RDSの接続passは ~/.my.cnf に設定済み DB_NAME=DB名を記載。大体localhost DUMP_DIR=/tmp/ DATE=$(date "+%Y%m%d") mysqldump --replace --compress -u solapa -h $RDS $DB_NAME ${DUMP_TABLE_ARRAY[@]} | gzip > $DUMP_DIR$DB_NAME-$DATE.sql.gz # AWSのS3にアップロード BUCKET_NAME=bucketname.jp #適宜変更 /usr/bin/aws s3 mv ${DUMP_DIR}${DB_NAME}-${DATE}.sql.gz s3://${BUCKET_SPC}/mysqldump/
cronで定期実行する
$ crontab -e #絶対に間違えてcrontab -rを押さないこと!cronの設定がすべて消えます
以下の内容を記載
5 4 * * 5 sh /home/kusanagi/bin/mysqldump.sh #金曜日の朝4時5分に実施
AWS S3にアップしたdumpファイルを定期的に削除(ライフサイクル設定
S3は定期的に削除する設定をしておかないと維持費がどんどん増えるので、ライフサイクル設定を行います。
- S3にログイン
- バケットを選択
- 管理タブを開いてライフサイクルルールの追加
- 「ルール名→mysqldump/」「プレフィックス→mysqldump/」
- 「ストレージクラスの移行」選択せず次へ
- 失効の設定→現行バージョンにチェックで90日間に設定、不完全なマルチパートアップロードをクリーンアップするにチェックで7日間に設定 7. 「保存」
で完了。
参考
mysql コマンドのパスワード入力を省略する
https://qiita.com/marcie001/items/0c0806fa4284289edc60