在实际开发中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- MYSQL_ROOT_PASSWORD=123456 -e EXTRABACKUP_PASSWROD=123456 \ --privileged --name=node1 --net=host percona/percona-xtradb-cluster MYSQL_ROOT_PASSWORD=123456 -e EXTRABACKUP_PASSWROD=123456 \ --privileged --name=node2 --net=hos percona/percona-xtradb-cluster
前置条件 docker已安装: 第一步:拉取镜像 docker pull percona/percona-xtradb-cluster:5.7.21 第二步:复制重命名镜像(可选) docker tag percona/percona-xtradb-cluster:5.7.21 pxc 第三步: 删除pxc原来的镜像 (可选) docker rmi percona/percona-xtradb-cluster
一、故障现象 以下为mysql error log日志捕获到的信息 2018-01-26T15:00:00.736954+08:00 2109 [Warning] WSREP: Percona-XtraDB-Cluster isolation with pxc_strict_mode = PERMISSIVE 2018-01-26T15:00:00.737164+08:00 2116 [Warning] WSREP: Percona-XtraDB-Cluster isolation with pxc_strict_mode = PERMISSIVE 2018-01-26T15:00:00.738619+08:00 2113 [Warning] WSREP: Percona-XtraDB-Cluster isolation with pxc_strict_mode = PERMISSIVE 2018-01-26T15:00:00.738717+08:00 2112 [Warning] WSREP: Percona-XtraDB-Cluster isolation with pxc_strict_mode = PERMISSIVE 2018-01-26T15:00:00.739465+08:00 2114 [Warning] WSREP: Percona-XtraDB-Cluster
时间同步(配置NTP服务) rpm -qa | grep ntp yum install -y ntp ntpdate 210.72.145.44(中国国家授时中心) date 3.下载percona/percona-xtradb-cluster docker pull percona/percona-xtradb-cluster docker tag percona/percona-xtradb-cluster pxc docker rm percona /percona-xtradb-cluster 4.创建swarm集群 第一个创建的是pxc集群的master,需要初始化pxc集群 pxc集群是不需要进行读写分离配置的,任意一个节点写入都是能强一致的同步到其他节点
基于Docker的实现流程 拉镜像 docker pull percona/percona-xtradb-cluster:5.7 镜像名字有点长,起个短点的 docker tag percona/percona-xtradb-cluster 更多技术细节参见官方文档 参考 https://www.percona.com/doc/percona-xtradb-cluster/LATEST/install/docker.html
1.MySQL集群搭建 1> 拉去镜像 docker pull percona/percona-xtradb-cluster:5.7.21 2> 复制pxc镜像【重命名】 docker tag percona /percona-xtradb-cluster:5.7.21 pxc 3>删除原来的镜像 docker rmi percona/percona-xtradb-cluster:5.7.21 4>创建单独的网段
下载 PXC 镜像 (可以指定版本) Docker 仓库中的 PXC 官方镜像:https://hub.docker.com/r/percona/percona-xtradb-cluster 因为我所使用的 MySQL 版本为 5.7.32,此处对应选择的 PXC 版本就是 5.7 docker pull percona/percona-xtradb-cluster:5.7 此时如果报错,建议执行 :" [root@localhost download]# docker pull percona/percona-xtradb-cluster:5.7 Trying to pull repository docker.io /percona/percona-xtradb-cluster ... 5.7: Pulling from docker.io/percona/percona-xtradb-cluster 75f829a71a1c :5.7 pxc 删除原始镜像 docker rmi percona/percona-xtradb-cluster:5.7 【拓展】: 镜像查看命令:docker images 2).
\ -v v1:/var/lib/mysql \ --privileged \ -v backup1:/data \ percona/percona-xtradb-cluster \ --privileged \ -v backup1:/data \ -e CLUSTER_JOIN=node1 \ percona/percona-xtradb-cluster \ --privileged \ -v backup3:/data \ -e CLUSTER_JOIN=node1 \ percona/percona-xtradb-cluster \ --privileged \ -v backup4:/data \ -e CLUSTER_JOIN=node1 \ percona/percona-xtradb-cluster \ --privileged \ -v backup4:/data \ -e CLUSTER_JOIN=node1 \ percona/percona-xtradb-cluster
# https://hub.docker.com/r/percona/percona-xtradb-cluster/ version: "3" services: percona: image : percona/percona-xtradb-cluster:5.7 container_name: percona restart: always # 根据你的需要,声明暴露端口 mysqldump: Got error: 1105: Percona-XtraDB-Cluster prohibits use of LOCK TABLE/FLUSH TABLE