docker部署多个mysql容器,并使用java连接

2023-11-01

测试springboot多个数据源配置时,需要安装多个mysql容器,由于资源限制,当前只有一台虚拟机,如果在一台机器上安装多个mysql实例,是可以的,但步骤比较繁琐,使用docker来安装MySQL容器,非常简单,只需要简单几步,对于测试非常方便

dcker部署多个mysql容器

1、下载mysql镜像,这里下载5.7.23版本

docker pull mysql:5.7.23

2、启动一个mysql容器

docker run --name db001 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345 -d mysql:5.7.23

3、启动第二个mysql容器

docker run --name db002 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=12345 -d mysql:5.7.23

有时,启动的时候可能会出现以下提示,且容器未正常启动,此时可以重启下docker,然后在启动mysql容器来尝试解决该问题

[root@localhost ~]# docker run --name db002 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=12345 -d mysql 
4e9380ef9bb8d81ac686116ad266377eb0e97ab80ceb6b653cf4c8214f3c9718
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint mysql_test2 (00ccfe607d64b17f0ee91b426cbe5b814fea70bf110960e8621959d35a9cfc62): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3307 -j DNAT --to-destination 172.17.0.3:3306 ! -i docker0: iptables: No chain/target/match by that name.

4、查看mysql容器启动情况

 上述映射到mysql容器的端口均为3306,每个容器都有一个小型的linux系统

使用java连接mysql容器

java连接mysql容器与不使用docker容器相比,没有什么不同。只是如果没有使用ssl,则在java连接mysql容器时,需要添加参数useSSL=false,或者配置ssl

spring.datasource.url=jdbc:mysql://192.168.101.116:3307/myapp002?useSSL=false

否则会出现以下异常

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:827) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:447) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:237) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) [HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) [HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) [HikariCP-3.2.0.jar:na]
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) [HikariCP-3.2.0.jar:na]
    at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:157) [spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115) [spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78) [spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:370) [spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:451) [spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:461) [spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:489) [spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
    at com.demo.bootdemo.MainBusi.run(MainBusi.java:25) [classes/:na]
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:780) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:764) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:319) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1203) [spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE]
    at com.demo.bootdemo.MultidatasourceApplication.main(MultidatasourceApplication.java:10) [classes/:na]
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_172]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_172]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_172]
    at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_172]
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:340) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.negotiateSSLConnection(NativeAuthenticationProvider.java:777) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:486) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:202) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1348) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.NativeSession.connect(NativeSession.java:163) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:947) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:817) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    ... 24 common frames omitted
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateNotYetValidException: NotBefore: Mon Sep 16 23:20:24 CST 2019
    at sun.security.ssl.Alerts.getSSLException(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.Handshaker.processLoop(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.Handshaker.process_record(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[na:1.8.0_172]
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[na:1.8.0_172]
    at com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:316) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:188) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:99) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:331) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    ... 31 common frames omitted
Caused by: java.security.cert.CertificateNotYetValidException: NotBefore: Mon Sep 16 23:20:24 CST 2019
    at sun.security.x509.CertificateValidity.valid(Unknown Source) ~[na:1.8.0_172]
    at sun.security.x509.X509CertImpl.checkValidity(Unknown Source) ~[na:1.8.0_172]
    at sun.security.x509.X509CertImpl.checkValidity(Unknown Source) ~[na:1.8.0_172]
    at com.mysql.cj.protocol.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:363) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(Unknown Source) ~[na:1.8.0_172]
    ... 43 common frames omitted
View Code

 

转载于:https://www.cnblogs.com/qq931399960/p/11527222.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker部署多个mysql容器,并使用java连接 的相关文章

随机推荐

  • 波次

    播种式分拣是以汇总了多份订单的一个批次为单位进行分拣作业的 业内通常将这个作业的批次称为 波次 为了达到较高的工作效率 播种式分拣一般希望每个波次汇总较多的订单 但由于以下原因 每个波次汇总的订单绝不是越多越好 1完成订单的时间限制 通常情
  • JavaMail邮件发送不成功的那些坑人情况及分析说明

    前言 JavaMail的使用本身并不难 网上有不少案例 简单易懂 而且有详细的中文注解 但是由于JavaMail的机制设置不够完善 特别是异常出错时的参考信息太少 给初学者造成了不少麻烦 而我就是其中之一 在此 把我遇到过得那些坑总结出来
  • 图解人工智能知识架构(从知识角度告诉你人工智能到底学些啥)

    很多人都想学习人工智能 但是却不知道该学些啥 从宏观的视角搞清楚人工智能到底需要学习哪些领域的知识是至关重要的 这就好比要去逛一座大的商场 非常需要一份商场的楼层导览图 它能够告诉你各个楼层商户的分布 又好比去一个风景区游玩 非常需要一份景
  • VS2022安装easyx图形库教程

    下载easyx图形库 下载地址 EasyX Graphics Library for C 下载好后安装 点击安装 安装 前两项 easyx会自动识别VS版本 我们点击安装 安装好以后重启VS 测试一下 安装easyx推行库成功 问题 那么e
  • 5分钟带你快速了解微服务框架的前世今生

    目录 原始时代 青铜时代 黄金时代 铂金时代 钻石时代 星耀时代 王者时代 总结 原始时代 1969年11月 为了便于高校间共享资源 美国国防部高级研究计划管理局建立一个名为阿帕网络ARPAnet 起初只有四个节点 阿帕网起源 一年后阿帕网
  • 编程是一种“组合的艺术”

    编程是一种 组合的艺术 WPF实例分析 金旭亮 有这么一句名言 政治是一种妥协的艺术 这一规律同样适用于软件技术 就我个人的观点 软件开发在一定意义上是一种 组合的艺术 优秀的软件工程师类似于优秀的厨师 能将一些常见的原料变成一盘色香味俱全
  • git常用命令合集(建议收藏)

    1 git init将本文件夹初始化成一个本地git仓库 2 git clone xxx 将github上的远程克隆到本地 3 git add file1 file2 添加文件到暂存区 包括修改的文件 新增的文件 4 git add dir
  • 技术人修炼之道阅读笔记(四)低效的7个行为习惯

    技术人修炼之道阅读笔记 四 低效的7个行为习惯 如今 在许多企业为了提高团队的产出 996 非常盛行 但是效果却往往不令人满意 那么怎么来提高团队的工作效率呢 这里我们进行逆向思维 从造成低效的7个坏习惯说起 因为避免了低效的行为习惯 离高
  • 无限脉冲响应 (IIR) 滤波器

    1 基础知识 某正弦信号 频率为50Hz 这意味着 信号的模拟频率 f 50 Hz 注意它的单位是Hz 信号的表达式为 注意 模拟滤波器设计中用的频率是指模拟角频率 数字滤波器设计中用的频率是指归一化数字角频率 w 2 数字滤波器简介 数字
  • 程序员应对35岁中年危机的措施

    都说程序员是吃青春饭 我也问了一些身边周围的朋友 有已经在工作的 有正在出于中年危机的 有猎头公司工作的 觉得年龄问题对于程序员是一个致命的问题 正处在25左右的我们 应该如何应对10年后的中年危机呢 李开复给程序员的7建议 我觉得很对 特
  • 第二章正则表达式

    第二章 正则表达式 1 学习目标 掌握正则表达式的作用 掌握正则表达式的语法 了解常见的正则表达式 2 内容讲解 2 1 正则表达式的概念 正则表达式是对字符串操作的一种逻辑公式 就是用事先定义好的一些特定字符 及这些特定字符的组合 组成一
  • c中malloc申请堆空间使用及案例

    c中malloc申请堆空间 void test22 int pr pr int malloc sizeof int 128 申请128个int4字节空间 if pr NULL 判断是否申请成功 return memset pr 0 size
  • elasticsearch字符串包含查询

    query string 在查询的时候经常会遇到查询字符串是否包含的某个特定字符传的查询 可以使用query string实现 GET pv search query query string default field name quer
  • NodeJS-进程管理pm2/forever/nodemon/supervisor/ts-node-dev

    无论在开发阶段还是在上线阶段 对进程的管理是大大解决时间和成本的 pm2 node js server tools 1 安装 全局安装 yarn global add pm2 OR npm install pm2 g 局部安装 yarn a
  • springcloud报错:com.netflix.discovery.shared.transport.TransportException

    1 完整报错信息 com netflix discovery shared transport TransportException Cannot execute request on any known server 2 问题分析 1 服
  • 图片风格快速转换的简单web实现

    图片风格快速转换的简单web实现 图片风格转换 是指利用深度学习算法学习某种风格图片的特征 将其应用到另一张图片中 合成新风格的图片 目前技术较为成熟 github上有很多有趣的项目与应用 本项目核心代码基于fast neural styl
  • NCC常用操作自助工具

    selftool 介绍 NChome操作自助工具 对常用操作进行了集成 类图 工具使用 功能介绍 初始化配置 点击按钮可对nchome进行关联 重启服务 点击按钮一键重启服务 sysConfig 点击按钮一键打开home配置界面 clear
  • 云计算技术与应用赛项竞赛试题(样卷)

    选手须知 1 竞赛试题通过在线 云计算技术与应用 竞赛考试系统和书面文档共同发布 内容完全一致 如出现纸质任务书缺页 字迹不清 与考试系统中不一致等问题 请及时向裁判示意 并进行任务书的更换 2 参赛团队应在4小时内完成任务书规定内容 选手
  • 尝试实现带有迭代器的 vector

    两个注意点 1 底层内存分配采用 new 和 delete 非 stl 书中所示 2 移动元素为集体后移 并非原书中拆解后移 原书移动方式原因未知 include
  • docker部署多个mysql容器,并使用java连接

    测试springboot多个数据源配置时 需要安装多个mysql容器 由于资源限制 当前只有一台虚拟机 如果在一台机器上安装多个mysql实例 是可以的 但步骤比较繁琐 使用docker来安装MySQL容器 非常简单 只需要简单几步 对于测