这篇文章主要介绍了docker怎么搭建Mysql集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
docker基本指令:
更新软件包
yum-yupdate
安装Docker虚拟机(centos 7)
yuminstall-ydocker
运行、重启、关闭Docker虚拟机
servicedockerstart servicedockerstop
搜索镜像
dockersearch镜像名称
下载镜像
dockerpull镜像名称
查看镜像
dockerimages
删除镜像
dockerrmi镜像名称
运行容器
dockerrun启动参数镜像名称
查看容器列表
dockerps-a
当我们想要使用java环境,我们可以这么操作:
搜索: [root@VM_71_225_centos~]#dockersearchjava INDEXNAMEDESCRIPTIONSTARSOFFICIALAUTOMATED docker.iodocker.io/nodeNode.jsisaJavaScript-basedplatformfor...5752[OK] docker.iodocker.io/tomcatApacheTomcatisanopensourceimplementa...1891[OK] docker.iodocker.io/javaJavaisaconcurrent,class-based,andobj...1745[OK] docker.iodocker.io/openjdkOpenJDKisanopen-sourceimplementationo...1031[OK]
下载: [root@VM_71_225_centos~]#dockerpulldocker.io/java Usingdefaulttag:latest Tryingtopullrepositorydocker.io/library/java... latest:Pullingfromdocker.io/library/java 5040bd298390:Downloading[=>]1.572MB/51.36MB
运行: [root@VM_71_225_centos~]#dockerrun-it--namemyjavadocker.io/javabash root@25623e12b759:/#java -i:以交互模式运行容器,通常与-t同时使用; -t:为容器重新分配一个伪输入终端,通常与-i同时使用;
安装PXC集群(在此不做mysql pxc集群与replication集群的方案优劣说明,在此选用pxc集群方案[多节点备份与强联合性]):
安装PXC镜像
dockerpullpercona/percona-xtradb-cluster
查看本地镜像
[root@VM_71_225_centos~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE docker.io/hello-worldlateste38bc07ac18e2monthsago1.85kB docker.io/percona/percona-xtradb-clusterlatestf1439de620873monthsago413MB docker.io/javalatestd23bdf5b1b1b17monthsago643MB
docker.io/percona/percona-xtradb-cluster 太长,进行改名:
[root@VM_71_225_centos~]#dockertagpercona/percona-xtradb-clusterpxc [root@VM_71_225_centos~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE docker.io/hello-worldlateste38bc07ac18e2monthsago1.85kB docker.io/percona/percona-xtradb-clusterlatestf1439de620873monthsago413MB pxclatestf1439de620873monthsago413MB docker.io/javalatestd23bdf5b1b1b17monthsago643MB
创建net1网段:
dockernetworkcreate--subnet=172.18.0.0/16net1
创建五个数据卷(pxc无法直接存取宿组机的数据,所以创建五个docker数据卷)
dockervolumecreatev1 dockervolumecreatev2 dockervolumecreatev3 dockervolumecreatev4 dockervolumecreatev5
查看数据卷位置:
[root@VM_71_225_centoscode]#dockerinspectv1 [ { "Driver":"local", "Labels":{}, "Mountpoint":"/var/lib/docker/volumes/v1/_data", "Name":"v1", "Options":{}, "Scope":"local" } ]
创建5节点的PXC集群
#创建第1个MySQL节点 dockerrun-d-p3306:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-vv1:/var/lib/mysql-vbackup:/data--privileged--name=node1--net=net1--ip172.18.0.2pxc
等待2分钟后,再创建第二个节点,等待第一个节点实例化完毕后,才能开启第二个节点实例,不然会瞬间停止
创建其他节点:
#创建第2个MySQL节点 dockerrun-d-p3307:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv2:/var/lib/mysql-vbackup:/data--privileged--name=node2--net=net1--ip172.18.0.3pxc #创建第3个MySQL节点 dockerrun-d-p3308:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv3:/var/lib/mysql--privileged--name=node3--net=net1--ip172.18.0.4pxc #创建第4个MySQL节点 dockerrun-d-p3309:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv4:/var/lib/mysql--privileged--name=node4--net=net1--ip172.18.0.5pxc #创建第5个MySQL节点 dockerrun-d-p3310:3306-eMYSQL_ROOT_PASSWORD=abc123456-eCLUSTER_NAME=PXC-eXTRABACKUP_PASSWORD=abc123456-eCLUSTER_JOIN=node1-vv5:/var/lib/mysql-vbackup:/data--privileged--name=node5--net=net1--ip172.18.0.6pxc
测试在任意mysql节点创建数据库:
mysql-h172.18.0.3-uroot-pabc123456 mysql>createdatabasetest; QueryOK,1rowaffected(0.03sec)
登录其他节点数据库,能看到已经进行了同步,构成简单的mysql集群
安装Haproxy进行高可用与负载均衡
拉取haproxy
dockerpullhaproxy
编写Haproxy配置文件
vi/home/soft/haproxy.cfg
配置文件如下:
global #工作目录 chroot/usr/local/etc/haproxy #日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info log127.0.0.1local5info #守护进程运行 daemon defaults logglobal modehttp #日志格式 optionhttplog #日志中不记录负载均衡的心跳检测记录 optiondontlognull #连接超时(毫秒) timeoutconnect5000 #客户端超时(毫秒) timeoutclient50000 #服务器超时(毫秒) timeoutserver50000 #监控界面 listenadmin_stats #监控界面的访问的IP和端口 bind0.0.0.0:8888 #访问协议 modehttp #URI相对地址 statsuri/dbs #统计报告格式 statsrealmGlobal\statistics #登陆帐户信息 statsauthadmin:abc123456 #数据库负载均衡 listenproxy-mysql #访问的IP和端口 bind0.0.0.0:3306 #网络协议 modetcp #负载均衡算法(轮询算法) #轮询算法:roundrobin #权重算法:static-rr #最少连接算法:leastconn #请求源IP算法:source balanceroundrobin #日志格式 optiontcplog #在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测 optionmysql-checkuserhaproxy serverMySQL_1172.18.0.2:3306checkweight1maxconn2000 serverMySQL_2172.18.0.3:3306checkweight1maxconn2000 serverMySQL_3172.18.0.4:3306checkweight1maxconn2000 serverMySQL_4172.18.0.5:3306checkweight1maxconn2000 serverMySQL_5172.18.0.6:3306checkweight1maxconn2000 #使用keepalive检测死链 optiontcpka
创建第1个Haproxy负载均衡服务器
dockerrun-it-d-p4001:8888-p4002:3306-v/home/soft/haproxy:/usr/local/etc/haproxy--nameh2--privileged--net=net1--ip172.18.0.7haproxy
进入h2容器,启动Haproxy
dockerexec-ith2bash haproxy-f/usr/local/etc/haproxy/haproxy.cfg
查看是否启动成功:
访问http://ip:4001/dbs
安装keepalive实现双击热备
感谢你能够认真阅读完这篇文章,希望小编分享的“docker怎么搭建Mysql集群”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!
海报
166
相关文章
- Linux如何在命令行下创建和管理 Docker 网络
- Linux如何在系统启动时自动运行 Docker 容器
- 容器化最佳实践:Docker 与 Kubernetes 在微服务架构中的协同设计
- Docker 镜像优化指南:分层构建、瘦身技巧与多阶段编译实践
- Docker 新手入门:容器创建、镜像打包与数据卷管理基础
- Docker 容器 CPU 占用过高:资源限制策略与进程分析工具使用
- IntelliJ IDEA 远程开发:连接 SSH 服务器与 Docker 容器的配置指南
- 用 VS Code+Docker 构建全栈开发环境:从本地调试到云端部署全流程
- Docker 镜像分层原理:UnionFS 机制与缓存利用最佳实践
- IntelliJ IDEA+Docker:微服务项目的本地调试与容器化部署流程