首页 > 其他分享 >5.docker pxc多机多节点搭建

5.docker pxc多机多节点搭建

时间:2022-11-15 14:46:44浏览次数:40  
标签:-- etc 多机 pxc docker PASSWORD 节点

1.拉取pxc镜像 docker pull percona/percona-xtradb-cluster 2.如果嫌弃名称太长,修改镜像名称(可不做这一步) docker tag percona/percona-xtradb-cluster pxc 删除原始镜像 docker rmi percona/percona-xtradb-cluster 3.创建docker内部网络 docker swarm init --advertise-addr 192.168.0.101 如果是单台服务器,需要根据宿主机的网卡,创建子网段 docker network create --subnet=172.18.0.0/24 pxcNetwork 如果是多台服务器,创建一个overlay类型的network docker network create --driver overlay --attachable pxcNetwork 这里必须要加上--attachable,否则后面运行pxc集群时,会报错XXX not manually attachable. attachable的作用是:默认情况下。overlay生效的返回是在dockerswarm集群中,如果想要单独拿出来用的话,没有在这个集群中创建的话,就需要加这个单词。 这个时候我们去我们另外一台主机上看,发现也会自动同步一个overlay网络 查看pxc-network网段信息 docker inspect pxcNetwork 删除pxc-network docker network rm pxcNetwork 4.创建数据卷 因为pxc不支持映射目录,所以采用映射卷的方式 docker volume create pxcNode1Vol docker volume create pxcNode2Vol docker volume create pxcNode3Vol 5.创建pxc容器 这里最好先把备份数据的数据卷创建出来,然后映射到宿主机,这样以后做热备份的时候就不用删掉容器节点重新再创建容器并映射备份目录了 docker volume create pxcNode1Backup docker volume create pxcNode2Backup docker volume create pxcNode3Backup docker volume create pxcNode1Conf docker volume create pxcNode2Conf docker volume create pxcNode3Conf 创建第一个节点: 这里要注意,一定要等到第一个节点创建并通过客户端连接成功,才能继续创建其它节点,否则因为找不到node1同步库,其它节点创建时会闪退 命令行参数说明:端口3306,密码123456,集群名称pxc,xtrabackup同步数据密码123456,映射数据目录到宿主机的pxcNode1Vol数据卷,权限为最高权限,名称pxcNode1,网段pxcNetwork,ip指定为172.18.0.2,运行的镜像是pxc 单节点: docker run -d --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=pxcClu -e XTRABACKUP_PASSWORD=123456 -v /etc/localtime:/etc/localtime -v pxcNode1Conf:/etc/mysql -v pxcNode1Vol:/var/lib/mysql -v pxcNode1Backup:/data --privileged --name=pxcNode1 --net=pxcNetwork --ip 172.18.0.2 pxc 多节点: docker run -d --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=pxcClu -e XTRABACKUP_PASSWORD=123456 -v /etc/localtime:/etc/localtime -v pxcNode1Conf:/etc/mysql -v pxcNode1Vol:/var/lib/mysql -v pxcNode1Backup:/data --privileged --name=pxcNode1 --net=pxcNetwork pxc --wsrep-new-cluster 创建第二个节点 单节点: docker run -d --restart=always -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=pxcClu -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pxcNode1 -v /etc/localtime:/etc/localtime -v pxcNode2Conf:/etc/mysql -v pxcNode2Vol:/var/lib/mysql -v pxcNode2Backup:/data --privileged --name=pxcNode2 --net=pxcNetwork --ip 172.18.0.3 pxc 多节点: docker run -d --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=pxcClu -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pxcNode1 -v /etc/localtime:/etc/localtime -v pxcNode2Conf:/etc/mysql -v pxcNode2Vol:/var/lib/mysql -v pxcNode2Backup:/data --privileged --name=pxcNode2 --net=pxcNetwork pxc docker stop pxcNode2 scp /var/lib/docker/volumes/pxcNode1Vol/_data/ca.pem client-cert.pem client-key.pem server-cert.pem server-key.pem [email protected]:/var/lib/docker/volumes/pxcNode2Vol/_data/ docker restart pxcNode2 创建第三个节点 单节点: docker run -d --restart=always -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=pxcClu -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pxcNode1 -v /etc/localtime:/etc/localtime -v pxcNode3Conf:/etc/mysql -v pxcNode3Vol:/var/lib/mysql -v pxcNode3Backup:/data --privileged --name=pxcNode3 --net=pxcNetwork --ip 172.18.0.4 pxc 多节点: docker run -d --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=pxcClu -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=pxcNode1 -v /etc/localtime:/etc/localtime -v pxcNode3Conf:/etc/mysql -v pxcNode3Vol:/var/lib/mysql -v pxcNode3Backup:/data --privileged --name=pxcNode3 --net=pxcNetwork pxc docker stop pxcNode3 scp /var/lib/docker/volumes/pxcNode1Vol/_data/ca.pem client-cert.pem client-key.pem server-cert.pem server-key.pem [email protected]:/var/lib/docker/volumes/pxcNode3Vol/_data/ docker restart pxcNode3 6.验证pxc集群 坑: 使用swarm 新建集群时遇到双网卡,未指定IP 报以下错误 Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on interface ens33 (fd00:6868:6868::4aa and fd00:6868:6868:0:8b60:8e8c:a03:2b64) - specify one with --advertise-addr 或 Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (10.0.2.15 on eth0 and 192.168.99.100 on eth1) - specify one with --advertise-addr 原因:由于有两个IP,集群不知道使用哪个所以报错。 解决:解决方法报错信息已经给出提示,使用--advertise-addr 指定IP docker swarm init --advertise-addr 192.168.0.101 docker swarm join --token SWMTKN-1-5w21gu9o2yrg7ezu7nxdaj4vz5i34o7o58gzf5imznk80wy8xg-1idv7v7cwg36fdv3in19p1jfn 192.168.0.101:2377 初始主节点宕机后正确的启动方式 说明:pxc1宕机后,集群正常运行,会选举出新的主节点。如果修改参数safe_to_bootstrap=1以最开始pxc1为主节点创建启动pxc1的命令那么会分裂新的集群,毫无意义。 解决方案一: 1、删除v1卷下的grastate.dat文件 2、删除pxc1容器。 3、新建pxc1容器,并加入其它任何一个正常运行的节点,如pxc2 4、因为复用v1数据卷,以此方式创建容器,只需在原pxc1宕机前已有的数据与其它节点做增量同步,效率高。 docker rm pxc1 docker run ‐d ‐p 3306:3306 ‐e MYSQL_ROOT_PASSWORD=ddd123456 ‐e CLUSTER_NAME=PXC ‐e XTRABACKUP_PASSWORD=ddd123456 ‐e CLUSTER_JOIN=pxc2 ‐v v1:/var/lib/mysql ‐‐privileged ‐‐name=pxc1 pxc 重点:‐e CLUSTER_JOIN=pxc2 解决方案二: 1、创建全新的pxc4节点,形成一个pxc2、pxc3、pxc4的新集群。 2、新建pxc4容器,端口3009。并加入其它任何一个正常运行的节点,如pxc2,做全量数据同步。 #创建v4卷 docker volume create ‐‐name v4 docker run ‐d ‐p 3309:3306 ‐e MYSQL_ROOT_PASSWORD=ddd123456 ‐e CLUSTER_NAME=PXC ‐e XTRABACKUP_PASSWORD=ddd123456 ‐e CLUSTER_JOIN=pxc2 ‐v v4:/var/lib/mysql ‐‐privileged ‐‐name=pxc4 pxc

标签:--,etc,多机,pxc,docker,PASSWORD,节点
From: https://www.cnblogs.com/zhangdapangzo/p/16892358.html

相关文章

  • Docker 的使用
    查看容器命令//正在运行$dockerps//全部$dockerps-a启动一个已停止的容器//b750bbbcfd88为容器ID$dockerstartb750bbbcfd88停止容器的命令$doc......
  • Docker学习笔记六:Docker安装可视化容器管理工具portainer
    一、准备1、介绍Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作;包括上传下载镜像,创建容器等操作、事件日志显......
  • (初学)记一次dockercompose安装mysql8 以及问题
    docker-compose文件如下:1version:'3'2services:3#mysql服务4service-mysql:5image:docker.io/mysql:8.0.276command:7--def......
  • 执行docker ps时提示"dial unix /var/run/docker.sock: connect: permission denied"
    0.创建docker用户组sudogroupadddocker1.将当前用户加入docker组#sudogpasswd-a$USERdocker$sudousermod-a-Gdocker<当前用户名> 2.修改/var/ru......
  • 当 xxl-job 遇上 docker → 它晕了,我也乱了!
    开心一刻公交车上,一位老大爷睡着了,身体依靠在背后的一位年轻小伙子身上小伙子一直保持站姿十几分钟,直到老人下车这位在校大学生,接受采访时说:”当时就觉得背......
  • Dockerfile 指令详解
    Dockerfile指令详解 本贴最后更新于 306 天前,其中的信息可能已经水流花落前言:近年来Docker非常火,想要玩好Docker的话Dockerfile是绕不开的,这就好比想要玩好li......
  • docker 私有仓库
    1、证书阿里云证书2、auth本机验证验证 mkdirauthdockerrun\ --entrypointhtpasswd\ httpd:2-Bbntestusertestpassword>auth/htpasswd 启动注册表......
  • docker 列出镜像
    目录docker列出镜像镜像体积虚悬镜像中间层镜像列出部分镜像根据仓库名列出镜像列出特定的某个镜像,也就是说指定仓库名和标签过滤器参数--filter通过label过滤以特定格式......
  • Docker部署Minio文件系统
    MinIO是在GNUAffero通用公共许可证v3.0下发布的高性能对象存储。它是与AmazonS3云存储服务兼容的API。使用MinIO为机器学习、分析和应用程序数据工作负载构......
  • docker 部署code-server
    1.创建一个存放配置的目录mkdir-p~/.config/code-server2.拉取最新codeserver镜像dockerpullcodercom/code-server:latest3.启动容器配置宿主机挂载点do......