在实际开发中MySQL集群搭建利用percona-xtradb-cluster
,有了docker
后会方便很多,SpringBoot项目部署则只需要JDK环境即可,打包运行jar
,就可以启动服务了
一、MySQL集群
percona-xtradb-cluster
是为了mysql集群而推出的解决方案,实现mysql集群的强一致性
1.PXC容器创建
1.1 拉取镜像
使用docker拉取镜像:
-bash-4.2# docker pull percona/percona-xtradb-cluster:5.7.21
1.2 创建容器
mysql需要数据卷,先创建一个数据卷,当然也可以指定绝对路径:
-bash-4.2# docker volume create --name mysql
mysql
创建并启动容器,这边指定集群名为PXC
,网络使用host
模式:
-bash-4.2# docker run -d -v mysql:/var/lib/mysql
-e CLUSTER_NAME=PXC
-e MYSQL_ROOT_PASSWORD=123456 -e EXTRABACKUP_PASSWROD=123456
--privileged --name=node1 --net=host percona/percona-xtradb-cluster:5.7.21
1.3 创建集群其他节点容器
集群名相同,并使用CLUSTER_JOIN
指定加入上面创建的集群节点的IP:
-bash-4.2# docker volume create --name mysql
-bash-4.2# docker run -d -v mysql:/var/lib/mysql
-e CLUSTER_NAME=PXC -e CLUSTER_JOIN=192.168.42.4
-e MYSQL_ROOT_PASSWORD=123456 -e EXTRABACKUP_PASSWROD=123456
--privileged --name=node2 --net=hos percona/percona-xtradb-cluster:5.7.21
-bash-4.2# docker volume create --name mysql
-bash-4.2# docker run -d -v mysql:/var/lib/mysql
-e CLUSTER_NAME=PXC -e CLUSTER_JOIN=192.168.42.4
-e MYSQL_ROOT_PASSWORD=123456 -e EXTRABACKUP_PASSWROD=123456
--privileged --name=node3 --net=host percona/percona-xtradb-cluster:5.7.21
完成后就可以自己使用数据库测试下了
尝试创建一个数据库,刷新后发现其他的节点都同步了:
二、MySQL集群负载均衡
上面只是搭建了MySQL集群,想要对外提供统一的访问,则需要负载均衡的中间件:haprox
1.haprox镜像拉取
-bash-4.2# docker pull haproxy
2.配置文件
-bash-4.2# mkdir /tmp/haproxy
-bash-4.2# vi /tmp/haproxy/haproxy.cfg
内容为:
global
#工作目录,这边要和创建容器指定的目录对应
# chroot /usr/local/etc/haproxy
#日志文件
log 127.0.0.1 local5 info
#守护进程运行
daemon
defaults
log global
mode http
#日志格式
option httplog
#日志中不记录负载均衡的心跳检测记录
option dontlognull
#连接超时(毫秒)
timeout connect 5000
#客户端超时(毫秒)
timeout client 50000
#服务器超时(毫秒)
timeout server 50000
#监控界面
listen admin_stats
#监控界面的访问的IP和端口
bind 0.0.0.0:8888
#访问协议
mode http
#URI相对地址
stats uri /dbs_monitor
#统计报告格式
stats realm Global statistics
#登陆帐户信息
stats auth admin:admin
#数据库负载均衡
listen proxy-mysql
#访问的IP和端口,haproxy开发的端口为3306
#假如有人访问haproxy的3306端口,则将请求转发给下面的数据库实例
bind 0.0.0.0:3306
#网络协议
mode tcp
#负载均衡算法(轮询算法)
#轮询算法:roundrobin
#权重算法:static-rr
#最少连接算法:leastconn
#请求源IP算法:source
balance roundrobin
#日志格式
option tcplog
#在MySQL中创建一个没有权限的haproxy用户,密码为空。
#Haproxy使用这个账户对MySQL数据库心跳检测
option mysql-check user haproxy
server MySQL_1 192.168.42.4:3306 check weight 1 maxconn 2000
server MySQL_2 192.168.42.230:3306 check weight 1 maxconn 2000
server MySQL_3 192.168.42.249:3306 check weight 1 maxconn 2000
#使用keepalive检测死链
option tcpka
3.创建容器
-bash-4.2# docker run -d -p 8888:8888 -p 3307:3306 -v /tmp/haproxy:/usr/local/etc/haproxy
--name haproxy01 --privileged haproxy
4.MySQL新建账号
mysql中执行下面的sql,该账号用于心跳检测:
CREATE USER 'haproxy'@'%' IDENTIFIED BY '';
5.访问仪表盘
访问:http://IP:8888/dbs_monitor
账号密码均为:admin
根据容器创建参数配置,我们对外使用3307
端口,其他服务想要访问数据库,就可以直接使用该端口,并带有负载均衡效果:
三、SpringBoot项目部署
MySQL上创建数据库表如下:
新建一个SpringBoot项目,使用MyBatis针对该表进行新增操作
1.yml配置
yml配置为:
server:
port: 8001
spring:
datasource:
url: jdbc:mysql://192.168.42.4:3307/haproxy_test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
mapper-locations: classpath:mybatis/*.xml #指定映射文件路径
type-aliases-package: com.aruba.bean
2.打包传入服务器
打包后,将jar
传入服务器:
3.基于JDK镜像制作镜像
创建Dockerfile:
-bash-4.2# vi Dockerfile
内容为:
FROM openjdk:8
LABEL name="springboot-mybatis" version="1.0" author="aruba"
COPY DockerHaproxy-0.0.1-SNAPSHOT.jar springboot-mybatis.jar
CMD ["java","-jar","springboot-mybatis.jar"]
构建镜像:
-bash-4.2# docker build -t sbm-image .
创建并启动容器:
-bash-4.2# docker run -d -p 8081:8001 sbm-image
cc8755dac172f3ca351df1f628cd008124734b7f1b5296e47e4f6c4328e203da
浏览器访问接口:
数据也成功加入数据库中了:
阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=12547,转载请注明出处。
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=12547,转载请注明出处。
评论0