概述
主要的Linux发行版都改用systemd 来替代 System V启动方式,其中 systemd timer 能替代 crontab 计划任务的大部分功能。本文介绍了用systemd timer如何实现数据库备份,其他类型的计划任务可以同理实现。
定义timer文件
进入目录/usr/lib/systemd/system
,按如下文件建立timer:
1 2 3 4 5 6 7 8 9 10 11 12
| [Unit] Description=Runs db backup every hour [Timer] # Time to wait after booting before we run first time OnBootSec=10min # Time between running each consecutive time OnUnitActiveSec=1h Unit=db_backup.service [Install] WantedBy=multi-user.target
|
定义service文件
进入目录/usr/lib/systemd/system
,按如下文件建立service:
1 2 3 4 5 6
| [Unit] Description=Backup database [Service] Type=simple ExecStart=/usr/local/bin/db_backup
|
写数据库备份脚本
创建文件/usr/local/bin/db_backup
,并写入数据库备份语句,例如:
1 2
| #!/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
|
启用并运行timer
命令行下运行如下命令:
1 2
| systemctl enable db_backup.timer systemctl start db_backup.timer
|
计划任务执行后,即会在数据库备份的目录生成数据库备份文件