arm环境基于docker部署pxc-mysql集群

arm环境基于docker部署pxc-mysql集群

前言

24年之前部署过了,但过去几百天了需要更新过程吧,之前是使用amd构建部署的,这次是arm环境下进行部署,也是参考以前部署笔记,地址https://199604.com/2966

部署过程

环境

10.202.17.47  host47
10.202.17.48  host48
10.202.17.12  host12

安装docker和安装docker-compose

省略,具体参考一键部署脚本。

PXC集群安装

创建证书

percona集群要求必须安装证书,集群实现加密通讯,参考:https://docs.percona.com/percona-xtradb-cluster/8.0/docker.html

mkdir -m 777 -p /AppHome/docker/mysql-cluster/config
mkdir -m 777 -p /AppHome/docker/mysql-cluster/cert
mkdir -m 777 -p /AppHome/docker/mysql-cluster/logs
mkdir -m 777 -p /AppHome/docker/mysql-cluster/data
mkdir -m 777 -p /AppHome/docker/mysql-cluster/socket


#创建custom.cnf文件到config
cd /AppHome/docker/mysql-cluster/config

vim custom.cnf
# Percona XtraDB Cluster 自定义配置
# 文件位置: /AppHome/docker/mysql-cluster/config/custom.cnf

[mysqld]
# 禁用 DNS 反向解析,避免 IP 地址解析告警,提升连接性能
skip-name-resolve

# SSL/TLS 配置 - 用于加密客户端连接
ssl-ca = /cert/ca.pem
ssl-cert = /cert/server-cert.pem
ssl-key = /cert/server-key.pem

[client]
# 客户端 SSL 配置
ssl-ca = /cert/ca.pem
ssl-cert = /cert/client-cert.pem
ssl-key = /cert/client-key.pem

[sst]
# SST (State Snapshot Transfer) 加密配置 - 用于节点间数据同步
encrypt = 4
ssl-ca = /cert/ca.pem
ssl-cert = /cert/server-cert.pem
ssl-key = /cert/server-key.pem

集群内所有机器必须有此配置

生成证书

# 其中一台机器执行
docker run --name pxc-cert --rm -v /AppHome/docker/mysql-cluster/cert:/cert \
reg-hub.gzeport.com/library/percona/percona-xtradb-cluster:8.0.45 mysql_ssl_rsa_setup -d /cert

# 设置证书对应权限
chown -R 1001:1001 /AppHome/docker/mysql-cluster/cert

# 拷贝到其他节点机器
scp /AppHome/docker/mysql-cluster/cert/* host47:/AppHome/docker/mysql-cluster/cert/
scp /AppHome/docker/mysql-cluster/cert/* host47:/AppHome/docker/mysql-cluster/cert/

证书必须所有节点都一致!在一台机器生成后拷贝到其他机器。!必须存在custom.cnf文件!

搭建pxc集群

启动一个节点后再启动后面的!节点1开始先注释CLUSTER_JOIN,故障重启在放开注释

version: '3.8'
services:
  # Percona XtraDB Cluster 节点 - Host47
  mysql-host47:
    image: reg-hub.gzeport.com/library/percona/percona-xtradb-cluster:8.0.45
    container_name: mysql-host47
    privileged: true
    restart: always
    network_mode: host
    environment:
      # 时区设置
      - TZ=Asia/Shanghai
      # 集群名称 - 必须设置,同一集群的所有节点必须使用相同的名称
      - CLUSTER_NAME=pxc-mysql
      # 集群加入配置 - Host47 节点加入其他两个节点(排除自己)
      # - CLUSTER_JOIN=10.202.17.48,10.202.17.12
      # MySQL root 用户密码 - 必须设置(三选一: MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD, MYSQL_RANDOM_ROOT_PASSWORD)
      - MYSQL_ROOT_PASSWORD=pwd
      - XTRABACKUP_PASSWORD=pwd
      - EXTRABACKUP_PASSWROD=pwd
      - MYSQL_INITDB_SKIP_TZINFO=1
    volumes:
      # 数据目录 - 持久化数据库数据
      - /AppHome/docker/mysql-cluster/data:/var/lib/mysql
      # 日志目录 - 持久化日志文件
      - /AppHome/docker/mysql-cluster/logs:/var/log/mysql
      # SSL 证书目录(可选) - 用于加密节点间通信
      - /AppHome/docker/mysql-cluster/cert:/cert
      # 自定义配置目录 - 可以放置自定义的 MySQL 配置文件
      - /AppHome/docker/mysql-cluster/config:/etc/percona-xtradb-cluster.conf.d
    # 健康检查配置
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-ppwd"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 60s
    # ulimit 配置 - 提高文件描述符限制
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
      nproc:
        soft: 65536
        hard: 65536

---
version: '3.8'
services:
  # Percona XtraDB Cluster 节点 - Host48
  mysql-host48:
    image: reg-hub.gzeport.com/library/percona/percona-xtradb-cluster:8.0.45
    container_name: mysql-host48
    privileged: true
    restart: always
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
      - CLUSTER_NAME=pxc-mysql
      - CLUSTER_JOIN=10.202.17.47,10.202.17.12
      - MYSQL_ROOT_PASSWORD=pwd
      - XTRABACKUP_PASSWORD=pwd
      - EXTRABACKUP_PASSWROD=pwd
      - MYSQL_INITDB_SKIP_TZINFO=1
    volumes:
      - /AppHome/docker/mysql-cluster/data:/var/lib/mysql
      - /AppHome/docker/mysql-cluster/logs:/var/log/mysql
      - /AppHome/docker/mysql-cluster/cert:/cert
      - /AppHome/docker/mysql-cluster/config:/etc/percona-xtradb-cluster.conf.d
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-ppwd"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 60s
    # ulimit 配置 - 提高文件描述符限制
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
      nproc:
        soft: 65536
        hard: 65536

---
version: '3.8'
services:
  # Percona XtraDB Cluster 节点 - Host12
  mysql-host12:
    image: reg-hub.gzeport.com/library/percona/percona-xtradb-cluster:8.0.45
    container_name: mysql-host12
    privileged: true
    restart: always
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
      - CLUSTER_NAME=pxc-mysql
      - CLUSTER_JOIN=10.202.17.47,10.202.17.48
      - MYSQL_ROOT_PASSWORD=pwd
      - XTRABACKUP_PASSWORD=pwd
      - EXTRABACKUP_PASSWROD=pwd
      - MYSQL_INITDB_SKIP_TZINFO=1
    volumes:
      - /AppHome/docker/mysql-cluster/data:/var/lib/mysql
      - /AppHome/docker/mysql-cluster/logs:/var/log/mysql
      - /AppHome/docker/mysql-cluster/cert:/cert
      - /AppHome/docker/mysql-cluster/config:/etc/percona-xtradb-cluster.conf.d
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-ppwd"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 60s
    # ulimit 配置 - 提高文件描述符限制
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
      nproc:
        soft: 65536
        hard: 65536

image-20260313154801786

sql查看当前加入节点

show status like 'wsrep%';
show status like '%wsrep_cluster%';
select * from performance_schema.pxc_cluster_view;

image-20260313154842775

完成,后面可以让nacos与grafana进行连接使用!

image-20260313155141478

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇