主要なLinuxディストリビューションは、System V の起動方法を置き換えるために systemd に切り替わっており、systemd タイマーは crontab スケジュールされたタスクのほとんどの機能を置き換えることができます。この記事では、systemd タイマーを使用してデータベース バックアップを実装する方法を紹介します。他の種類のスケジュールされたタスクも同じ方法で実装できます。 |
タイマーファイルを定義する
ディレクトリ /usr/lib/systemd/system に入り、次のファイルに従ってタイマーを作成します。
[ユニット] 説明=DB バックアップを 1 時間ごとに実行します [タイマー] # 起動後、初めて実行するまでの待機時間 OnBootSec=10分 # 連続する各実行間の時間 OnUnitActiveSec=1h ユニット=db_backup.service [インストール] WantedBy=マルチユーザー.ターゲット
サービスファイルを定義する
/usr/lib/systemd/system ディレクトリに入り、次のファイルに従ってサービスを作成します。
[ユニット] 説明=バックアップデータベース [サービス] タイプ=シンプル ExecStart=/usr/local/bin/db_backup
データベースバックアップスクリプトを作成する
ファイル /usr/local/bin/db_backup を作成し、次のようなデータベース バックアップ ステートメントを書き込みます。
#!/usr/bin/bash /usr/bin/mysqldump -umy_username -pmy_password -h192.168.1.xx --databases my_database > /path/to/backup/dir/my_database.`date +'%Y%m%d%H%'`.sql
タイマーを有効にして実行する
systemctl で db_backup.timer を有効にする systemctl start db_backup.timer
スケジュールされたタスクが実行されると、データベース バックアップ ファイルがデータベース バックアップ ディレクトリに生成されます。