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

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

相关文章

  • ELK+redis+filebeat配置

    filebeat配置列表 filebeat搜集的日志输出到redis #prospectors config filebeat.prospectors: – input_type: log paths: – /opt/logs/PROD_XTZJ_BPMS-API_1721913167_10000/1.log encoding: plain document…

    Redis 2023年4月13日
    00
  • 详解Go与PHP的语法对比

    详解Go与PHP的语法对比 前言 Go与PHP都是开源编程语言,用途广泛,分别在不同领域得到了广泛应用。本文将对Go与PHP的语法进行详细比较。 简介 Go是Google开发的一种编译型编程语言,最初由Robert Griesemer、Rob Pike和Ken Thompson设计,2009年11月正式宣布推出。Go语言支持面向对象编程、命令式编程、字节码、…

    database 2023年5月22日
    00
  • Navicat Premium12远程连接MySQL数据库

     https://blog.csdn.net/dengjin20104042056/article/details/95091506 方法二: step1: 修改表user mysql> use mysql; mysql> update user set host = ‘%’ where user = ‘root’; mysql>flush…

    MySQL 2023年4月13日
    00
  • Neo4j和MS SQL Server的区别

    Neo4j和MS SQL Server都是常见的数据管理系统,但它们在理念以及实现上有很大的区别。 Neo4j 简介 Neo4j是一个基于图的数据库管理系统。它将数据存储为节点和关系的集合,每个节点和关系都带有属性。这种数据模型可以方便地表示复杂的关系和网络,比如社交网络、知识图谱以及地图应用等。 特点 灵活:Neo4j的图数据模型比关系型数据库更加灵活,可…

    database 2023年3月27日
    00
  • MySQL临时表的简单用法介绍

    MySQL临时表的简单用法介绍 MySQL临时表是一种只在当前会话(session)或者当前连接(connection)生效的表,数据存储在内存或磁盘临时文件中。可以通过创建临时表来处理临时性任务,提高查询的效率和可读性。本文将介绍MySQL临时表的创建、使用和销毁等操作。 创建 使用CREATE TEMPORARY TABLE命令创建临时表,参数与CREA…

    database 2023年5月22日
    00
  • 简单讲解MySQL的数据库复制方法

    MySQL是一种开源关系型数据库管理系统,它的数据库复制功能可以将一个MySQL实例的数据拷贝到另外一个服务器实例上,从而对数据进行备份和灾备。 以下是MySQL数据库复制的方法: 主从复制 主从复制是MySQL中最常用的一种复制方式。它通过将一个MySQL服务器实例作为主服务器,将这个主服务器上的所有操作都复制到多个从服务器上的方式,来实现数据同步。 实现…

    database 2023年5月18日
    00
  • Mysql在项目中相关使用方法指南(简单操作数据库)

    MySQL在项目中相关使用方法指南 MySQL是一种关系型数据库管理系统,广泛用于网站、企业管理系统等应用程序的数据存储。在项目中使用MySQL,需要掌握基本的SQL语法和MySQL客户端的使用方法。 安装MySQL客户端和服务端 在使用MySQL之前,需要先安装MySQL客户端和服务端。客户端提供了与MySQL服务器之间通讯的功能,服务端提供了对数据库的读…

    database 2023年5月22日
    00
  • Linux发展历史大事编年表(截止2013年)

    Linux发展历史大事编年表(截止2013年) 以下是Linux发展历史中的重要事件编年表。本文包含了从最早的Linux内核版本到2013年的重要事件。 1991年 Linus Torvalds创造了最初的 Linux 0.01 内核并公开发布,并于随后的几年中继续更新内核。 1992年 GNU General Public License (GPL) 2发…

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