继续上一篇Spring Boot + Mybatis-Plus实现多数据源的内容。
本次选用的xxl-job版本为2.1.1
目前我们分别有master库与local库,并且都拥有一张users表。
但只有master库中存在数据
需求:将master库中的数据,同步更新到local库
是不是特别简单,先查master,再插入local。无则插入,有则检查更新。
问题:
1、我不想手动run来实现该功能,如何自定义执行时间,使其自动运行呢?
2、每次执行,我应该从master中获取多少条数据来进行操作呢?所有数据吗?如果是大数据量呢?
关于xxl-job,本文就不做过多的介绍了。具体内容点击–>xxl-job
增加xxl-job相关配置
pom文件
<!-- xxl-job 任务调度中心 -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.1.1</version>
</dependency>
application.yml
xxl:
job:
admin:
addresses: http://127.0.0.1:8000/xxl-job-admin # 调度中心部署跟地址 [选填]
accessToken: # 执行器通讯TOKEN [选填]:非空时启用
executor:
appname: demo
address:
ip: # 执行器IP [选填]:默认为空表示自动获取IP
port: 9999 # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999
logpath: /data/applogs/xxl-job/jobhandler # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径
logretentiondays: 30 # 执行器日志保存天数 [选填] :值大于3时生效,启用执行器Log文件定期清理功能,否则不生效
新增XxlJobConfig.java文件
该文件位于xxl-job项目中,直接复制到config目录中即可
在users表中,存在created_time与updated_time,在每次执行操作后,记录本次操作的时间。除了第一次执行需要获取master中所有数据,其后都只需要获取 updated_time > 上次操作时间 的数据
新增数据表与mapper文件
SQL
USE db_local;
CREATE TABLE config(
id INT PRIMARY KEY AUTO_INCREMENT,
type INT COMMENT '',
created_time TIMESTAMP NULL DEFAULT NULL
)ENGINE=INNODB;
local下Config
package com.demo.model.local;
import lombok.Data;
import java.util.Date;
@Data
public class Config {
private Integer id;
private Integer type;
private Date createdTime;
}
master下UsersMapper
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.dao.master.UsersMapper">
<select id="getData" parameterType="java.util.Date" resultType="com.demo.model.Users">
SELECT * FROM users WHERE updated_time >=
<if test="date == null"