XXL-JOB 适用范围还是比较广泛的,特别使用快速部署使用,以及简单的集群部署。本文主要记录了一次 XXL-JOB 适配 PostgreSQL 数据库的完整流程。
版本信息:XXL-JOB 2.4.1、MySQL 5.7、PostgreSQL 15.3
以下是正文内容:
一、获取源代码
1.1、通过命令获取
git clone https://gitee.com/xuxueli0323/xxl-job.git
1.2、通过网页下载 ZIP 压缩包
二、创建数据库
2.1、使用源码自带的数据库 SQL 文件,创建 MySQL 数据库。
2.2、创建一个 Postgre SQL 数据库
# 创建一个 xxl_job 用户,密码是 123456
CREATE USER xxl_job WITH PASSWORD '123456';
# 创建一个 xxl_job 数据库,属于 xxl_o=job 用户
CREATE DATABASE xxl_job OWNER xxl_job;
# 将 xxl_job 数据库授权给 xxl_job 用户
GRANT ALL PRIVILEGES ON DATABASE xxl_job TO xxl_job;
2.3、使用 Navicat 工具将 MySQL 数据库数据传输到 PostgreSQL 数据库
2.4、修改 PostgreSQL 数据库表设计
使用 Navicat 编辑器,手动修改所有表的数字类型字段,添加默认值 0。例如: int4 NOT NULL 类型为默认 0 。
2.5、创建 PostgreSQL 序列
CREATE SEQUENCE xxl_job_user_id_seq START 1;
CREATE SEQUENCE xxl_job_info_id_seq START 1;
CREATE SEQUENCE xxl_job_log_id_seq START 1;
CREATE SEQUENCE xxl_job_log_report_id_seq START 1;
CREATE SEQUENCE xxl_job_logglue_id_seq START 1;
CREATE SEQUENCE xxl_job_registry_id_seq START 1;
CREATE SEQUENCE xxl_job_group_id_seq START 1;
2.6、修改 PostgreSQL 数据库表自增主键
ALTER TABLE "public"."xxl_job_user" alter column ID set default nextval('xxl_job_user_id_seq'::regclass);
ALTER TABLE "public"."xxl_job_info" alter column ID set default nextval('xxl_job_info_id_seq'::regclass);
ALTER TABLE "public"."xxl_job_log" alter column ID set default nextval('xxl_job_log_id_seq'::regclass);
ALTER TABLE "public"."xxl_job_log_report" alter column ID set default nextval('xxl_job_log_report_id_seq'::regclass);
ALTER TABLE "public"."xxl_job_logglue" alter column ID set default nextval('xxl_job_logglue_id_seq'::regclass);
ALTER TABLE "public"."xxl_job_registry" alter column ID set default nextval('xxl_job_registry_id_seq'::regclass);
ALTER TABLE "public"."xxl_job_group" alter column ID set default nextval('xxl_job_group_id_seq'::regclass);
三、代码部分
3.1、修改 POM.xml 依赖
删除 MySQL 数据库依赖:
<!-- mysql -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>${mysql-connector-j.version}</version>
</dependency>
添加 PostgreSQL 数据库依赖:
<!-- PostgreSQL -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.6.0</version>
</dependency>
3.2、修改配置文件
删除 MySQL 配置文件:
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
添加 PostgreSQL 配置文件:
### xxl-job, datasource
spring.datasource.url=jdbc:postgresql://localhost:5432/xxl_job
spring.datasource.username=xxl_job
spring.datasource.password=123456
spring.datasource.driver-class-name=org.postgresql.Driver
3.3、修改 Mapper 文件