docker部署xxl-job-admin出现数据库拒绝问题及解决方法

2023-12-07数据库
33

首先我们需要了解什么是xxl-job-admin以及Docker。xxl-job-admin是一款轻量级分布式任务调度平台,可以实现任务的自动调度和执行管理等功能。Docker是一种容器化技术,可以快速构建、部署、升级应用,提高开发和生产的效率。

在使用Docker部署xxl-job-admin时,可能会出现数据库拒绝连接的问题,这是因为xxl-job-admin默认使用的是SQLite数据库,而Docker运行容器时默认会使用/tmp目录下的空间存储数据,而且容器运行结束后,该存储空间会被清空。因此,使用SQLite数据库时容易出现数据丢失的问题。

一种解决方法是使用Docker中的数据卷来存储SQLite数据库的数据。下面是具体的步骤:

  1. 创建名为xxl_job_data的数据卷
docker volume create xxl_job_data
  1. 启动xxl-job-admin容器,并将数据卷挂载到容器的/data/xxl-job/db目录
docker run -d --name xxl-job-admin -p 8080:8080 -v xxl_job_data:/data/xxl-job/db xuxueli/xxl-job-admin:2.2.0

通过上述步骤,我们成功解决了xxl-job-admin使用SQLite数据库时出现的数据丢失问题。

除了使用数据卷来解决数据库拒绝连接的问题外,还可以将数据库修改为MySQL,并修改xxl-job-admin的配置文件来连接MySQL数据库。下面是具体步骤:

  1. 创建名为xxl_job_mysql的MySQL容器,并且创建名为xxl_job的数据库和名为xxl_job_user的用户,并授予其所有权限
docker run -d --name xxl_job_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=xxl_job -e MYSQL_USER=xxl_job_user -e MYSQL_PASSWORD=xxl_job_user_pwd mysql:5.7
docker exec -it xxl_job_mysql bash
mysql -uroot -p
CREATE USER 'xxl_job_user'@'%' IDENTIFIED BY 'xxl_job_user_pwd';
GRANT ALL PRIVILEGES ON xxl_job.* TO 'xxl_job_user'@'%';
FLUSH PRIVILEGES;
  1. 修改xxl-job-admin的配置文件。

将xxl-job-admin的配置文件(/data/xxl-job/job-admin/application.properties)中的数据库连接信息改为MySQL,同时根据实际情况修改username、password、url等参数。

## spring datasource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://xxl_job_mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.username=xxl_job_user
spring.datasource.password=xxl_job_user_pwd
  1. 启动xxl-job-admin容器。

将xxl_job_mysql容器的docker-compose.yml文件如下:

version: '3.1'
services:
  xxl_job_mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: xxl_job
      MYSQL_USER: xxl_job_user
      MYSQL_PASSWORD: xxl_job_user_pwd
    ports:
      - 3306:3306
    volumes:
      - xxl_job_mysql:/var/lib/mysql
  xxl_job_admin:
    image: xuxueli/xxl-job-admin:2.2.0
    restart: always
    ports:
      - "8080:8080"
    environment:
      - PARAMS_SERVER_ADDRESS=http://127.0.0.1:7001
      - PARAMS_ACCESS_TOKEN=xxl
      - PARAMS_LOG_PATH=/data/applogs/xxl-job/jobhandler
      - PARAMS_LOG_RETAIN_DAYS=3
    volumes:
      - xxl_job_data:/data/xxl-job/db
      - ./logs:/data/applogs/xxl-job/jobhandler
    depends_on:
      - xxl_job_mysql

volumes:
  xxl_job_data:
  xxl_job_mysql:

通过上述步骤,我们成功将xxl-job-admin连接到了MySQL数据库,解决了使用SQLite时出现的数据丢失问题。

参考文献:
[1] https://www.jianshu.com/p/6fa079ebc46e
[2] https://github.com/xuxueli/xxl-job/blob/master/doc/doc_zh/Install.md

The End

相关推荐

liunx mysql root账户提示:Your password has expired. To log in yo
liunx mysql root账户提示:Your password has expired. To log in you must change it using a client that supports expired passwords,要怎么操作呢? 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动...
2024-12-24 数据库
149

快速解决PostgreSQL中的Permission denied问题
下面是针对PostgreSQL中的权限问题的完整攻略。...
2023-12-07 数据库
3413

MySQL时间类型和模式详情
MySQL是一种流行的关系型数据库系统,它提供了多种时间类型和模式,用于存储和处理时间数据。本文将详细介绍MySQL时间类型和模式的详细攻略。...
2023-12-07 数据库
15

VMware中安装CentOS7(设置静态IP地址)并通过docker容器安装mySql数据库(超详细教程)
首先在官网下载CentOS7镜像,并在VMware虚拟机中新建一台CentOS7虚拟机,将镜像挂载到虚拟机中并启动。...
2023-12-07 数据库
11

SpringBoot项目报错:”Error starting ApplicationContext̷
首先,当我们使用Spring Boot开发项目时,可能会遇到Error starting ApplicationContext错误,一般这种错误是由于配置文件、依赖包或者代码逻辑等原因引起的。下面我将提供一条包含两条详细示例说明的完整攻略,用来解决上述问题。...
2023-12-07 数据库
489

Postgresql 赋予用户权限和撤销权限的实例
下面我将详细讲解如何为PostgreSQL数据库中的用户授予权限和撤销权限,包括两个实例。...
2023-12-07 数据库
30