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

yizhihongxing

首先我们需要了解什么是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

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:docker部署xxl-job-admin出现数据库拒绝问题及解决方法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • DBMS 中的映射约束

    DBMS中的映射约束 在DBMS中,映射约束是指一个实体集中的一个元素在另一个实体集中只能映射到一个元素,而在另一个实体集中的元素也只能映射到该实体集中的一个元素。简单来说,映射约束就是确保在两个实体集中的元素进行一对一的映射。 在数据库设计中,映射约束也叫做one-to-one约束。通过引入映射约束,可以保证数据的一致性和完整性,有效地避免数据重复和数据不…

    database 2023年3月27日
    00
  • Redis的Cluster集群搭建的实现步骤

    下面我来详细讲解Redis的Cluster集群搭建的实现步骤。 一、什么是Redis的Cluster集群 Redis的Cluster集群是指将多个Redis节点组成一个集群,共同协作对外提供服务。其中每个节点都存储着不同范围的key-value数据,并且这些节点可以互相通信,共同负责数据的存储和访问。 二、Redis的Cluster集群搭建步骤 环境搭建 首…

    database 2023年5月22日
    00
  • MySQL日期时间函数知识汇总

    MySQL日期时间函数知识汇总 概述 MySQL提供了丰富的日期时间函数,包括获取当前时间、日期比较、日期格式转换等。掌握这些函数,能够让我们更为方便地操作日期和时间。 在本文中,我们将针对MySQL日期时间函数进行详细讲解,为大家提供完整的攻略。 获取当前时间 NOW() 函数可以返回当前日期和时间。 SELECT NOW(); — 返回当前日期和时间(…

    database 2023年5月22日
    00
  • mysql修改开启允许远程连接的方法

    MySQL是一款常用的关系型数据库,目前已经成为了互联网领域最流行的数据库之一。如果需要从外部机器访问MySQL服务,就需要开启允许远程连接。本文将详细讲解“MySQL修改开启允许远程连接的方法”的完整攻略,过程中将包含两条示例说明。 步骤一:编辑MySQL配置文件 打开MySQL配置文件my.cnf,该文件通常位于MySQL安装目录下。 在my.cnf文件…

    database 2023年5月22日
    00
  • Apache Kafka 和 Apache Flume 的区别

    Apache Kafka和Apache Flume都是用于在大数据环境中进行数据流处理的开源工具。它们都具有很强的可扩展性,高可用性和容错性,并且都支持数据流转发。以下是它们之间的一些区别及其实例说明: 1. 数据模型 Apache Kafka使用发布-订阅模型(Publish-Subscribe),这意味着数据被分为主题(Topic),并且数据发送者可以将…

    database 2023年3月27日
    00
  • 【原创】mysql数据库异常:data truncate for column “*” at row *;data too long *。原因,及解决。

    1.data truncate for column “*” at row *: 就是数据被截断,类似时间被截短(字段属性为date,要存储的数据为timestamp),精度下降。 将数据库的字段属性调整合适,或者将要存储的数据进行精度调整即可。 2.data too long ***: 显然就是说你的数据长度超了,字段最长支持5位,你来了个10位,装不下了…

    MySQL 2023年4月13日
    00
  • sql server关键字详解大全(图文)

    SQL Server关键字详解大全 SQL Server 是一款非常流行的关系型数据库管理系统,其中包含大量的关键字,每个关键字都具有不同的作用和用法。本文将为大家详细讲解 SQL Server 中常见的关键字以及它们的用法。 1. SELECT SELECT 是 SQL 中用来查询数据的关键字。它可以从一个或多个表中检索出要显示的数据列,可以通过 WHER…

    database 2023年5月21日
    00
  • SQL Server的子查询详解

    SQL Server的子查询详解 SQL Server的子查询就是在一个查询语句中嵌套另一个完整的查询语句,子查询可以作为整个查询语句的一个部分,常用于过滤、排序和分组查询等场景。本文将详细讲解SQL Server的子查询,包括子查询的语法、分类和使用方法等。 子查询的语法 通常子查询可以嵌套在SELECT、INSERT、UPDATE和DELETE语句中,其…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部