Cronで、MySQLのSQLクエリを定期的に実行する
Contents
Cronを使ってMySQLのSQLクエリを自動実行する方法
MySQLのDBのメンテンナンスで定期的にupdate, delete分を実行したい場合があります。
そのようなケースではMySQLのSQL文を実行するシェルスクリプトを作成してCronで実行すると便利ですのでその方法を紹介します。
具体的な流れは以下となります
- 実行するSQL文をテキストファイルに書き出す
- SQLファイルを実行するシェルスクリプトを作成
- Cronに登録する
実行するSQLをテキストファイルに書き出す
実行するSQL文をテキストファイルに保存します。今回はサンプルとして、my_databaseデータベースのlogsテーブルから30日以上前のレコードを削除するクエリを実行する下記のようなSQL分です
# 実行するSQL文 DELETE FROM logs WHERE log_date < NOW() - INTERVAL 30 DAY;
上記のSQL文をテキストファイルに保存します
$ echo "DELETE FROM logs WHERE log_date < NOW() - INTERVAL 30 DAY;" > /home/admin/script/script.sql
SQLファイルを実行するシェルスクリプトを作成
SQLファイルを実行するシェルスクリプトを作成します。MySQLのユーザー名・パスワード・DB名を以下となります
- ユーザー名=“db_admin"
- PASSWORD=“dercv034m1"
- DATABASE=“my_database"
$ vim /home/admin/script/run_query.sh #!/bin/bash # データベースの認証情報 # ユーザー名 USER="db_admin" # パスワード PASSWORD="dercv034m1" # データベース DATABASE="my_database" # SQLクエリの実行 mysql -u $USER -p$PASSWORD $DATABASE < /home/admin/script/script.sql
シェルスクリプトを作成したら、実行権限を付与します
$ chmod +x /home/admin/script/run_query.sh
Cronに登録する
Cronで深夜2時に作成したシェルスクリプトを実行するように設定します
$ crontab -e 0 2 * * * /home/admin/script/run_query.sh >/dev/null 2>&1
ディスカッション
コメント一覧
まだ、コメントがありません