找回密码
 立即注册
首页 业界区 业界 xxl-job~为宿主机添加定时备份数据库的程序 ...

xxl-job~为宿主机添加定时备份数据库的程序

广性 2025-6-6 08:55:54
有时,我们经常会在数据库服务器上做一些定时备份的工作,最常用的方法就是写个sh脚本,然后配置/etc/crontab定时策略即可,但它有缺点,我总结如下:

  • 脚本基本相同,代码需要在每个数据服务器上部署
  • 由于代码是分布的,并且是个代码,所以管理不清晰,不直观
  • 控制不统一,你需要在每个服务器的/etc/crontab里配置策略
xxl-job

主要解决任务调度的问题,并且它是分布式的,可以有多个执行器,多个执行器可以进行集群策略的定时,包括轮训,随即,hash,LRU,LFU等等,下面使用xxl-job来实现这个定时备份的功能。
先准备脚本文件

文件可以直接写在java代码时,通过代码去构建文件,就不需要在每个服务器上添加了,需要为文件添加“执行”的权限。


  • backup.sh
  1. db_user="root"
  2. db_passwd="123456"
  3. db_name="test"
  4. name="$(date +"%Y%m%d%H%M%S")"
  5. /usr/local/mysql/bin/mysqldump -u$db_user -p$db_passwd $db_name >>/home/backup/$name.sql
复制代码
添加xxl-job的执行器的handler
  1. @XxlJob(value="doingSh",init = "init", destroy = "destroy")
  2.   public void doSh() throws Exception {
  3.     String command = "/root/backup.sh";
  4.     try {
  5.       Runtime.getRuntime().exec(command);
  6.     } catch (IOException e) {
  7.       e.printStackTrace();
  8.     }
  9.   }
复制代码
配置文件中指定xxl-job-admin的地址
  1. ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
  2. xxl.job.admin.addresses=http://192.168.3.181:8080/xxl-job-admin
  3. ### xxl-job, access token
  4. xxl.job.accessToken=default_token
  5. ### xxl-job executor appname
  6. xxl.job.executor.appname=xxl-job-executor-sample
  7. ### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
  8. xxl.job.executor.address=
  9. ### xxl-job executor server-info
  10. xxl.job.executor.ip=
  11. xxl.job.executor.port=8898
  12. ### xxl-job executor log-path
  13. xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
  14. ### xxl-job executor log-retention-days
  15. xxl.job.executor.logretentiondays=30
复制代码
添加执行器

1.png

添加任务

2.png

你的执行器开启之后,它与会xxl-job-admin进行长连接,他们之间进行TCP的通讯。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册