logrotatge

logrotate は Cron によって実行されます。
よって /etc/logrotate.d の設定ファイルを変更しても logrotate の再起動は必要ありません(できません)。

/etc/cron.daily/logrotat が実行ファイルになります。
/etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly, /etc/cron.weekly 配下の実行時間は /etc/crontab に記載されています。

Ref.

https://qiita.com/zom/items/c72c7bac63462225971b

Cron が動作していることを確認

$ sudo systemctl status cron.service
● cron.service - Regular background program processing daemon
     Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-09-12 13:11:02 JST; 10min ago
       Docs: man:cron(8)
   Main PID: 360 (cron)
      Tasks: 1 (limit: 1091)
     Memory: 476.0K
        CPU: 14ms
     CGroup: /system.slice/cron.service
             └─360 /usr/sbin/cron -f -P

Sep 12 13:11:02 ip-10-19-0-19 systemd[1]: Started Regular background program processing daemon.
Sep 12 13:11:02 ip-10-19-0-19 cron[360]: (CRON) INFO (pidfile fd = 3)
Sep 12 13:11:02 ip-10-19-0-19 cron[360]: (CRON) INFO (Running @reboot jobs)
Sep 12 13:17:01 ip-10-19-0-19 CRON[1594]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Sep 12 13:17:01 ip-10-19-0-19 CRON[1595]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Sep 12 13:17:01 ip-10-19-0-19 CRON[1594]: pam_unix(cron:session): session closed for user root

logrotate をインストール

インストール済みの場合も多いので確認。
インストール済みだった。

apt list --installed | grep logrotate

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

logrotate/jammy-updates,jammy-security,now 3.19.0-1ubuntu1.1 amd64 [installed]

設定ファイル

/etc/logrotate.d に設定ファイルを作成します。
例として dump という名前で作成します。

# /etc/logrotate.d/dump
/opt/backup/mysql/*.sql {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        create 644 root root
        postrotate
                mysqldump -uexample -ppassword example --single-transaction > /opt/backup/mysql/mysql.sql || true
        endscript
}

dry run を実行

logrotate コマンド配下に配置されています。

$ which logrotate
/usr/sbin/logrotate

d オプション または v (推奨)オプションで dry run を実行します。

$ sudo /usr/sbin/logrotate -v /etc/logrotate.d/dump

強制的に実行

任意のタイミングで実行したい場合は f オプションを付与します。

$ sudo /usr/sbin/logrotate -f /etc/logrotate.d/dump

重要

postscript はローテーション実施後に発行されます。
ローテーションがされない場合は実行されません。

logrotate でローテーションする際はログが存在することが前提となります。
logrotate は対象ログがないとローテーションしません(なにもしない)。

よって今回の例では、内容はなんでもよいので /opt/backup/mysql/mysql.sql を手動で作成する必要があります。