linux服务-MariaDB 10.6 Galera Cluster 部署

MariaDB 10.6 Galera Cluster 部署

文档参考:MariaDB Galera Cluster 10.6 集群部署, 豆包ai

MariaDB 10.6 Galera Cluster是基于MariaDB 10.6社区版与Galera 4同步复制技术深度整合的高可用、多主复制集群解决方案,专为解决传统异步复制的数据一致性问题和单点故障风险设计,核心价值在于数据强一致性、零数据丢失及对应用透明的高可用服务。

一、工作原理

1.1、基础特性

  1. 同步多主复制(Multi-Master):集群中所有节点均为可读写节点,无主从角色区分,支持并发写入多个节点,避免传统主从架构的主节点单点瓶颈。写入操作在所有节点同步确认后才返回成功,确保集群数据强一致性,无复制延迟导致的数据不一致问题。

  2. 自动节点故障检测与恢复:通过组通信协议(GCS)实时监控节点状态,故障节点自动被剔除,不影响集群服务;故障节点恢复后可自动重新加入集群并增量同步缺失数据,实现无缝回归,无需手动干预备份恢复。

  3. 无数据丢失(RPO=0):基于同步复制机制,仅当写入操作被集群中大多数节点(quorum,法定人数)持久化到磁盘后,才向客户端返回成功响应。即使部分节点宕机,只要法定人数节点存活,数据就不会丢失,满足核心业务零数据丢失需求。

  4. 对应用透明:应用程序无需大量改造,可像访问单个MariaDB实例一样访问集群,节点切换、数据同步等操作对应用层屏蔽,降低迁移和运维成本。

  5. MariaDB 10.6 专属增强:继承MariaDB 10.6的全部特性(如性能优化、JSON功能增强、窗口函数完善、安全性提升等),同时针对Galera做版本适配,修复低版本兼容性问题,提升大事务处理效率和集群稳定性。

  6. 简单说

    • 几乎同步复制

    • 主动-主动多主拓扑

    • 读取和写入任何群集节点

    • 自动成员资格控制,故障节点从群集中删除

    • 自动节点连接

    • 行级别的真正并行复制

    • 直接客户端连接,本机MariaDB的外观和感觉

1.2、架构与工作原理

采用无中心分布式架构,无专门管理节点,所有节点地位平等。集群规模建议为3、5等奇数个节点(便于达成法定人数,规避脑裂),最小可用规模为2个节点(需额外配置仲裁节点)。每个节点包含两个核心组件:

  • 架构说明

    • MariaDB 10.6 数据库实例:负责处理SQL请求、数据存储等基础数据库功能。
    • Galera Plugin(wsrep补丁):实现组通信、同步复制、节点状态同步等集群核心功能,是集群运行的关键驱动。
  • 工作流程(写入操作)

    • 客户端向集群任意节点提交写入请求(INSERT/UPDATE/DELETE等)。

    • 发起节点对SQL操作进行语法校验、事务预处理,生成写集(Write Set,含事务修改数据及元数据)。

    • 通过Galera组通信协议(GCS)将写集广播到集群所有其他节点。

    • 所有节点对写集进行冲突检测(避免多节点并发写入同一数据冲突),检测通过后持久化到本地磁盘。

    • 发起节点收到大多数节点的持久化确认后,执行本地事务提交,并向客户端返回写入成功。

    • 其他节点收到法定人数确认后,自动提交该事务,完成全集群数据同步。

    • 流程图

      ┌─────────────────┐ │ 客户端 │ └─────────┬───────┘ │1. 提交写入请求(INSERT/UPDATE/DELETE) ┌─────────▼───────┐ │ 集群任意节点(发起节点) │ └─────────┬───────┘ │2. 语法校验 + 事务预处理 ┌─────────▼───────┐ │ 生成写集(Write Set) │ └─────────┬───────┘ │3. 通过 GCS 组通信协议广播 ┌─────────▼───────┐ │ 集群所有其他节点 │ └─────────┬───────┘ ┌─────────┴───────┐ │ 所有节点执行冲突检测 │ └─────────┬───────┘ │4. 检测通过(不通过则终止事务) ┌─────────▼───────┐ │ 写集持久化到本地磁盘 │ └─────────┬───────┘ │5. 各节点向发起节点反馈持久化确认 ┌─────────▼───────┐ │ 发起节点收集确认结果 │ └─────────┬───────┘ │6. 收到大多数节点(法定人数)确认 ┌─────────▼───────┐ │ 发起节点提交本地事务 │ └─────────┬───────┘ │7. 向客户端返回「写入成功」 ┌─────────▼───────┐ │ 其他节点收到法定人数确认 │ └─────────┬───────┘ │8. 其他节点自动提交事务 ┌─────────▼───────┐ │ 全集群数据同步完成 │ └─────────────────┘

1.3、缺点

  • 加入新节点时开销大,需要复制完整数据;
  • 不能有效地解决写扩展的问题,所有的写操作都发生在所有的节点;
  • 有多少个节点,就有多少份重复的数据;
  • 由于事务提交需要跨节点通信,即涉及分布式事务操作,因此写入会比主从复制慢很多,节点越多,写入越慢,死锁和回滚也会更加频繁;
  • 对网络要求比较高,如果网络出现波动不稳定,则可能会造成两个节点失联,Galera Cluster集群会发生脑裂,服务将不可用;
  • 仅支持InnoDB/XtraDB存储引擎,任何写入其他引擎的表,包括mysql.*表都不会被复制,DDL语句可以复制,但是insert into mysql.user(MyISAM存储引擎)之类的插入数据不会被复制;
  • Delete操作不支持没有主键的表,因为没有主键的表在不同的节点上的顺序不同,如果执行select … limit …将出现不同的结果集;
  • 整个集群的写入吞吐量取决于最弱的节点限制,集群要使用同一的配置;

二、安装

2.1、环境准备

  • 节点规划:三个节点统一执行

    节点编号节点IP节点名称系统版本内核
    节点110.4.50.163node1中科方德4.19.113-16
    节点210.4.50.164node2中科方德4.19.113-16
    节点310.4.50.165node3中科方德4.19.113-16
  • 配置时间同步

    # 手动同步阿里云时间服务器ntpdate ntp.aliyun.com# 添加定时任务,每天凌晨3点自动同步echo"0 3 * * * /usr/sbin/ntpdate ntp.aliyun.com > /dev/null 2>&1">>/var/spool/cron/rootchmod600/var/spool/cron/root
  • 关闭防火墙与SELinux

    # 避免端口拦截或权限限制,确保集群节点间通信正常:# 关闭防火墙(永久生效)systemctl stop firewalld systemctl disable firewalld# 关闭SELinux(临时+永久)setenforce0sed-i's/^SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config
  • 核心端口开放

    端口号协议端口用途所属组件说明与注意事项
    3306或自行定义TCP数据库客户端连接MariaDB 10.61. 仅需开放 TCP 协议,无需 UDP。
    4567TCP/UDPGalera 集群节点间组通信Galera 41. 必须同时开放TCP 和 UDP 协议,缺一不可,否则集群节点无法建立通信、无法同步数据;
    2. 默认端口不可修改
    4568TCPIST(增量状态传输)同步Galera 41. 默认端口 4568,建议保持默认。
    4444TCPSST(全量状态传输)同步Galera 41. 仅需开放 TCP 协议,所有节点统一,该端口为 SST 同步的默认通信端口,无需额外修改。
    • 防火墙配置

      # 1. 开放3306端口(TCP)firewall-cmd --permanent --add-port=3306/tcp# 2. 开放4567端口(TCP+UDP,核心集群通信)firewall-cmd --permanent --add-port=4567/tcp firewall-cmd --permanent --add-port=4567/udp# 3. 开放4568端口(TCP,IST增量同步)firewall-cmd --permanent --add-port=4568/tcp# 4. 开放4444端口(TCP,SST全量同步)firewall-cmd --permanent --add-port=4444/tcp# 重新加载firewall-cmd --reload# 查看所有永久开放的端口firewall-cmd --permanent --list-ports# 富策略firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="${ip}" port protocol="tcp" port="${port}" accept"firewall-cmd --zone=public --list-rich-rules

2.2、编译部署

为啥要编译:方便后续平台迁移,一次构建N次迁移,最后编译完打成rpm包

  • 安装目录说明 <-后补充的,下面安装的时候注意目录

    mkdir/opt/mariadb/lib# galeramkdir/opt/mariadb/mairadb# mariadb服务
  • galera 下载源码包, 只需要一台编译,其它机器直接压缩cp过去就行

    • galera说明

      • 选择对应的maraidb版本,x86可直接用,arm需要编译,【x86实在编译不出来,先用官方的,arm mips就需要在研究一下了,先跑逻辑】,参考<-- arm编译可行

    • 获取libgalera_smm.so

      # x86实在编译不出来,先用官方的,arm mips就需要在研究一下了,先跑逻辑wgethttps://mirrors.neusoft.edu.cn/mariadb///mariadb-10.6.24/bintar-linux-systemd-x86_64/mariadb-10.6.24-linux-systemd-x86_64.tar.gz# 解压后找到 在解压的lib目录下 libgalera_smm.solib]# ldd libgalera_smm.solibssl.so.1.0.0=>not found libcrypto.so.1.0.0=>not found# 可能会缺这两个so文件, 继续找
    • openssl

      wgethttps://github.com/openssl/openssl/releases/download/OpenSSL_1_0_2a/openssl-1.0.2a.tar.gz# 略过解压步骤./config --prefix=/opt/ssl --openssldir=/opt/ssl shared zlib enable-ssl3 enable-ssl3-methodmake-j32&&make-j32installls-l /opt/ssl/lib/ -r-xr-xr-x1root root26774401509:46 libcrypto.so.1.0.0 -r-xr-xr-x1root root5448401509:46 libssl.so.1.0.0# 进lib目录下, 用ldd命令查看依赖关系[root@localhost lib]# ldd libcrypto.so.1.0.0[root@localhost lib]# ldd libssl.so.1.0.0libcrypto.so.1.0.0=>not found
    • 依赖缺失

      # 直接放 /lib64可能会破坏国产化系统,我们用patchelf打入rpath# 下载patchelf# https://gitcode.com/gh_mirrors/pa/patchelf/tags 找到最新版本# 国产可能不登陆就没法下载,自行手动下载吧wgethttps://raw.gitcode.com/gh_mirrors/pa/patchelf/archive/refs/heads/0.15.5.zip ./bootstrap.sh ./configuremakemakechecksudomakeinstall# 将在放到统一的目录如 /opt/mysql/mysqlso 下libgalera_smm.so libcrypto.so.1.0.0 libssl.so.1.0.0
    • 依赖处理

      patchelf --set-rpath /opt/mysql/mysqlso libssl.so.1.0.0 patchelf --set-rpath /opt/mysql/mysqlso libgalera_smm.so[root@localhost mysqlso]# readelf -d libgalera_smm.so0x000000000000001d(RUNPATH)Library runpath:[/opt/mysql/mysqlso][root@localhost mysqlso]# readelf -d libssl.so.1.0.00x000000000000001d(RUNPATH)Library runpath:[/opt/mysql/mysqlso][root@localhost mysqlso]# ldd libgalera_smm.soldd: warning: youdonot have execution permissionfor`./libgalera_smm.so'# 这种可以忽略./libgalera_smm.so: /略过/libcrypto.so.1.0.0: no version information available(required by ./libgalera_smm.so)./libgalera_smm.so: /略过/libssl.so.1.0.0: no version information available(required by ./libgalera_smm.so)libssl.so.1.0.0=>/opt/mysql/mysqlso/libssl.so.1.0.0(0x00007f8ba56bf000)libcrypto.so.1.0.0=>/opt/mysql/mysqlso/libcrypto.so.1.0.0(0x00007f8ba4a83000)
  • maraidb10.6.24编译

    • 下载并添加rpath

      wgethttps://mirrors.neusoft.edu.cn/mariadb///mariadb-10.6.24/source/mariadb-10.6.24.tar.gztarxf mariadb-10.6.24.tar.gzcdmariadb-10.6.24vimCMakeLists.txt# 修改,在Internal/CPack下添加,自定义rpath路径SET(CMAKE_MODULE_PATH${CMAKE_MODULE_PATH}${CMAKE_SOURCE_DIR}/cmake${CMAKE_SOURCE_DIR}/cmake/Internal/CPack)SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)SET(CMAKE_INSTALL_RPATH"/opt/mysql/mysqlso")
    • 处理依赖

      yum -yinstallgnutls-devel ncurses-devel bison-devel boost boost-devel flex flex-devel libxml2 libxml2-devel snappy snappy-devel curl-devel lz4-devel pcre2 pcre2-devel pcre pcre-develwgethttps://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gztar-xzvf zstd-1.5.7.tar.gzcdzstd-1.5.7# 32是cpu核数make-j32&&make-j32install
    • 开始编译

      cmake\-DCMAKE_INSTALL_PREFIX=/opt/mariadb\-DMYSQL_DATADIR=/opt/mariadb/data\-DSYSCONFDIR=/opt/mariadb\-DWITH_MYISAM_STORAGE_ENGINE=1\-DWITH_INNOBASE_STORAGE_ENGINE=1\-DWITH_MEMORY_STORAGE_ENGINE=1\-DWITH_READLINE=1\-DMYSQL_UNIX_ADDR=/opt/mariadb/data/mysql.sock\-DMYSQL_TCP_PORT=3306\-DENABLED_LOCAL_INFILE=1\-DWITH_PARTITION_STORAGE_ENGINE=1\-DDEFAULT_CHARSET=utf8\-DDEFAULT_COLLATION=utf8_general_ci -DWITH_ROCKSDB=OFF\-DWITH_GALERA=1\-DGALERA_INCLUDE_DIR=/opt/mysql/mysqlso\-DGALERA_LIBRARY=/opt/mysql/mysqlso/libgalera_smm.so\-DMYSQL_USER=mysql\-DWITHOUT_MYISAM_STORAGE_ENGINE=1make-j8&&make-j8installDMYSQL_TCP_PORT# 端口编译可以用其它的,避免冲突
    • 初始化

      cd/opt/mariadb scripts/mysql_install_db --user=root --datadir=data/
    • my.cnf配置

      # vi /opt/mariadb/my.cnf[root@localhost etsdb106]# cat my.cnf[client]port=3306socket=/opt/mariadb/data/mysql.sock[mysqld]port=3306socket=/opt/mariadb/data/mysql.sock lower_case_table_names=1character-set-server=utf8 key_buffer_size=64M max_allowed_packet=10M table_open_cache=256sort_buffer_size=512K net_buffer_length=8K read_buffer_size=1M read_rnd_buffer_size=512K myisam_sort_buffer_size=16Mmax_connections=3000thread_cache_size=1000max_connect_errors=200interactive_timeout=600wait_timeout=3600innodb_buffer_pool_size=1000M read_buffer_size=256K query_cache_type=1query_cache_limit=512K query_cache_min_res_unit=2kquery_cache_size=32Mtmp_table_size=64M open_files_limit=65535#加载密码复杂度审计插件plugin-load=simple_password_check.so#密码长度,默认8位simple_password_check_minimal_length=8#特殊符号,1代表至少1位#simple_password_check_other_characters=1#同时包含大小写#simple_password_check_letters_same_case=1#字母数,1代表至少1位#simple_password_check_letters_same_case=1#数字数,1代表至少1位#simple_password_check_digits=1# 最大生效时间default_password_lifetime=90#最大错误登录次数max_password_errors=5############## 这部分在下面要修改 ###### unix_socket=OFF# log-bin=mysql-bin# binlog_format=mixedserver-id=1expire_logs_days=30##############[mysqldump]quick max_allowed_packet=16M[mysql]no-auto-rehash[myisamchk]key_buffer_size=20M sort_buffer_size=20M read_buffer=2M write_buffer=2M[mysqlhotcopy]interactive-timeout
    • 自启脚本

      # cat /usr/lib/systemd/system/mariadb.service# 添加完之后才能cat[Unit]Description=MariaDBserver database serverAfter=syslog.targetAfter=network.target[Service]Type=simpleExecStart=/opt/mariadb/bin/mysqld_safe --defaults-file=/opt/mariadb/my.cnf --user=rootTimeoutSec=300PrivateTmp=true[Install]WantedBy=multi-user.target# 启动systemctl start mariadb
    • 修改密码之类的

      ./bin/mysql# 不用密码直接登陆selectuser, host, plugin from mysql.user;SET GLOBALsimple_password_check_other_characters=0;SET PASSWORD FOR'root'@'localhost'=PASSWORD('新密码');SET PASSWORD FOR'mariadb.sys'@'localhost'=PASSWORD('新密码');grant all on *.* to'root'@'%'identified by'新密码';delete from mysql.user whereuser=' ';selectUser,Host,Password from mysql.user;FLUSH PRIVILEGES;
    • 此时再用 ./mysql还是免密进入

      # vi /opt/mariadb/my.cnf[root@localhost etsdb106]# cat my.cnf[mysqld]unix_socket=OFF# 把注释打开,禁止用unix_socket登陆# 重启再登陆 就要密码了[root@localhost mariadb]# systemctl restart mariadb# 验证[root@localhost mariadb]# ./bin/mysqlERROR1524(HY000): Plugin'unix_socket'is not loaded[root@localhost mariadb]# ./bin/mysql -uroot -pEnter password:# 直接回车ERROR1524(HY000): Plugin'unix_socket'is not loaded# 在登陆[root@localhost mariadb]# ./bin/mysql -uroot -pEnter password:# 敲密码Server version:10.6.24-MariaDB Source distribution MariaDB[(none)]>
    • 基础准备完成

      systemctl stop mariadbrm-rf mysql-test# 把 maraidb跟 mysqlso压缩好,/opt/mariadb, /opt/mysql/mysqlso/# 节点1,2,3 三台机器,保持一样。

三、Galera集群配置

3.1、节点配置

  • 三个节点都共同的部分, 参考配置

    expire_logs_days=7# log-bin=mysql-bin# 强制要求binlog_format(二进制日志格式)必须设置为ROW(行级格式)binlog_format=row# 禁用语句级复制相关优化,适配ROW格式log_slave_updates=ON# 关闭二进制日志校验(Galera已做相关校验,避免冲突)binlog_checksum=NONE# 存储引擎(必须InnoDB)default-storage-engine=InnoDBinnodb_autoinc_lock_mode=2innodb_flush_log_at_trx_commit=1innodb_buffer_pool_size=1G# Galera核心配置wsrep_on=ON# 注意libgalera_smm.so路径wsrep_provider=/opt/mysql/mysqlso/libgalera_smm.so# 随便敲,具有唯一性就行wsrep_cluster_name="ESCSASSEEQ"wsrep_cluster_address="gcomm://10.4.50.163,10.4.50.164,10.4.50.165"# 优化配置wsrep_slave_threads=4wsrep_sync_wait=1# 日志配置slow_query_log=ONslow_query_log_file=/opt/EETRUST/common/etsdb106/logs/slow_query.loglog_error=/opt/EETRUST/common/etsdb106/logs/error.log
  • 通用命令

    useradd-r -s /sbin/nologin mysqlmkdir/opt/mariadb/logschmod777/opt/mariadb -Rchmod644/opt/mariadb/my.cnfchownmysql:mysql /opt/mariadb -R
  • 节点1

    server-id=1# 节点名称wsrep_node_name="galera-node-1"# 节点IPwsrep_node_address="10.4.50.163"# 同步方式wsrep_sst_method=rsyncwsrep_provider_options="gcache.size=1G;ist.recv_addr=10.4.50.163:4568;gmcast.listen_addr=tcp://0.0.0.0:4567"
  • 节点2

    server-id=2# 节点名称wsrep_node_name="galera-node-2"# 节点IPwsrep_node_address="10.4.50.164"# 同步方式wsrep_sst_method=rsyncwsrep_provider_options="gcache.size=1G;ist.recv_addr=10.4.50.164:4568;gmcast.listen_addr=tcp://0.0.0.0:4567"
  • 节点3

    server-id=3# 节点名称wsrep_node_name="galera-node-3"# 节点IPwsrep_node_address="10.4.50.165"# 同步方式wsrep_sst_method=rsyncwsrep_provider_options="gcache.size=1G;ist.recv_addr=10.4.50.165:4568;gmcast.listen_addr=tcp://0.0.0.0:4567"
  • 参数说明

    系统变量/选项描述
    wsrep_provider设置 wsrep 提供程序的路径。这是文件的路径。。每个版本可能不太一样。
    wsrep_cluster_address启动时要连接到的群集节点的地址。为每个群集节点的 IP 地址或域名的逗号分隔列表。最佳做法是在此列表中包括所有群集节点。格式: gcomm://
    wsrep_node_name设置当前节点名称
    wsrep_node_address设置当前节点的IP地址
    wsrep_cluster_name设置群集的逻辑名称。所有群集节点上必须相同。
    binlog_format设置为ROW ,MariaDB Galera Cluster 不支持其他二进制日志格式。
    innodb_autoinc_lock_mode设置为 2,MariaDB Galera 集群不支持其他自动增量锁定模式。
    wsrep_on设置为ON 以启用 MariaDB Galera 集群。
    wsrep_provider_options选项变量,gcache.size=1G 可以指定群集缓存,提高性能。可根据服务器内存调整。

3.2、集群初始化

  • 节点1

    # 第一次种子节点,必须要手动初始化/opt/maraidb/bin/mysqld\--defaults-file=/opt/maraidb/my.cnf\--user=mysql\--wsrep-new-cluster&
    • 检查

      # 注意看以下几个值[root@localhost mariadb]# ./bin/mysql -uroot -pMariaDB[(none)]>SHOW STATUS LIKE'wsrep%';|wsrep_incoming_addresses|10.4.50.163:8105||wsrep_cluster_size|1||wsrep_cluster_status|Primary||wsrep_connected|ON|# 此时 kill mysqld进程,在重启,或者继续下面操作都行
  • 节点2、节点3

    # 直接启动就行 systemctl start maraidbcd/opt/mariadb/tail-f logs/error.log# 确认没有异常, 正常日志2026-01-0516:17:262[Note]WSREP:================================================View: id: 2b6525ab-ea0e-11f0-ac32-4f86af15e710:3 status: primary protocol_version:4capabilities: MULTI-MASTER, CERTIFICATION, PARALLEL_APPLYING, REPLAY, ISOLATION, PAUSE, CAUSAL_READ, INCREMENTAL_WS, UNORDERED, PREORDERED, STREAMING, NBO final: no own_index:1members(3):0: 2b5f5932-ea0e-11f0-a7ed-f38027b426cc, galera-node-11: b5b8d6be-ea0e-11f0-9a42-1b3dcf176a85, galera-node-22: f77948be-ea0e-11f0-8145-7af6d199179d, galera-node-3
    • 检查

      # 注意看以下几个值[root@localhost mariadb]# ./bin/mysql -uroot -pMariaDB[(none)]>SHOW STATUS LIKE'wsrep%';|wsrep_incoming_addresses|10.4.50.163:8105,10.4.50.164:8105,10.4.50.165:8105||wsrep_cluster_size|3||wsrep_cluster_status|Primary||wsrep_connected|ON|

3.3、验证

  • 任意一个节点 如 164

    cd/opt/mariadb/bin ./mysql -uroot -p# 创建数据库和表CREATE DATABASE galera_test_db DEFAULT CHARACTER SET utf8mb4;USE galera_test_db;CREATE TABLE user_info(idINT AUTO_INCREMENT PRIMARY KEY, user_name VARCHAR(50)NOT NULL, create_time DATETIME DEFAULT CURRENT_TIMESTAMP)ENGINE=InnoDB DEFAULTCHARSET=utf8mb4;# 插入数据INSERT INTO user_info(user_name)VALUES('test_user_01'),('test_user_02');# 查询验证SELECT * FROM user_info;
  • 此时 163或165上连接, 数据很快就会同步

    cd/opt/mariadb/bin ./mysql -uroot -p USE galera_test_db;SELECT * FROM user_info;

四、注意事项与总结

  • 注意事项
    • 存储引擎限制:仅支持InnoDB,MyISAM等非事务引擎不支持同步复制,会导致数据不一致,生产环境严禁使用。
    • 大事务限制:避免超大事务(如百万级批量插入),会占用大量带宽和内存,导致集群阻塞,建议拆分为小事务。
    • DDL操作注意:DDL操作(CREATE/ALTER TABLE)会触发全量同步,高并发场景建议在业务低峰期执行。
    • 节点数量建议:优先选择3、5等奇数节点,避免脑裂;2节点需额外配置仲裁节点。
    • 手动部署路径适配:所有配置必须指定手动创建的目录(数据、配置、日志),登录时需指定socket文件,否则会连接失败。
    • 备份策略:定期备份/usr/local/mariadb10.6/data目录,避免集群整体遭遇逻辑错误(如误删库)导致数据丢失。
    • 端口开放:生产环境需开放3306(MySQL)、4567(Galera通信)、4568(IST同步)、4444(SST同步)端口,而非直接关闭防火墙。
  • 总结
    • MariaDB 10.6 Galera Cluster的核心优势的是同步多主复制、数据强一致性和自动故障恢复,适配核心业务高可用需求;
    • 手动部署的核心是路径适配与权限配置,二进制解压方案优先于源码编译,适合快速落地;
    • 集群部署的关键是节点1初始化(–wsrep-new-cluster)和其余节点自动加入,配置时需确保集群名称一致、节点IP正确;
    • 生产环境需严格遵守存储引擎限制、节点数量建议及备份策略,确保集群稳定性和数据安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1124353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【超全】基于SSM的电脑配件销售系统【包括源码+文档+调试】

&#x1f495;&#x1f495;发布人&#xff1a; 码上青云 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xff0c;springboot等项目&#xff0c;欢迎咨询。 &#x1f495;&#x1f495;程序开发、技术解答、代码讲解、文档&#xff0c; &#x1f31…

赋能测试:实时监控与APM工具深度集成实践指南

测试视角下的监控革命在追求快速交付与高质量并重的现代软件开发中&#xff0c;软件测试的角色已悄然发生深刻变革。传统的“事后验证”正逐步让位于“过程洞察”与“质量保障左移”。实时监控与应用程序性能管理工具不再是运维团队的专属领域&#xff0c;它们正成为测试从业者…

Postman,一个功能强大的API开发和测试工具

最近有粉丝在群里说在找 postman 的使用教程&#xff0c;案例等文章。 那么今天我就来写一个。 Postman 是一个功能强大的 API 开发和测试工具&#xff0c;它提供了丰富的功能&#xff0c;帮助开发人员更好地管理、测试和文档化 API。无论是单独开发还是团队协作&#xff0c;Po…

行锁真的解决了可重复读下的幻读问题吗?

关于 RR 级别下的幻读&#xff0c;其实大部分场景都被 MVCC 和 Next-Key Lock 解决了。但在一种特殊情况下&#xff0c;幻读依然存在。 首先要知道只快照读的话只靠MVCC就能防止快读。涉及到当前读加锁就能避免&#xff0c;但是下面这种情况是先快照读&#xff0c;再当前读导致…

什么是CMS系统

一、什么是CMS系统&#xff1f; CMS&#xff0c;即内容管理系统&#xff08;Content Management System&#xff09;&#xff0c;是一种用于创建、发布和管理大量内容的软件应用。CMS系统广泛应用于政务、新闻网站、企业网站等&#xff0c;它能高效帮助用户更好创建和维护网站内…

Chemelex将Electric Heat Trace Group Ltd.的SmartTrace监控平台纳入其伴热产品组合

全球电热与传感解决方案领域的领军企业Chemelex今日宣布&#xff0c;已成功完成对总部位于加拿大安大略省的Electric Heat Trace Group Ltd.&#xff08;EHT Group&#xff09;绝大部分资产及持续运营业务的收购。这一战略举措标志着新年的精彩开端 &#xff0c;并进一步强化了…

百度测开初面面试题分享

1.java常用的异常处理机制 Java常用的异常处理机制有以下几种&#xff1a; 1&#xff09;try-catch-finally语句&#xff1a;用于捕获和处理异常。将可能抛出异常的代码放在try块中&#xff0c;然后在catch块中处理异常。无论是否发生异常&#xff0c;finally块中的代码都会被…

EasyGBS:融合算法与算力的核心能力及行业应用价值

在数字化、信息化快速发展的今天&#xff0c;视频监控已经成为各行各业不可或缺的一部分。从个人用户到大型企业&#xff0c;再到政府部门&#xff0c;视频监控的需求无处不在。在众多视频监控平台中&#xff0c;国标GB28181算法算力平台EasyGBS凭借其独特的优势&#xff0c;脱…

测试人员职业跃迁:精准把握时机与明智抉择

在快速迭代、技术日新月异的软件行业&#xff0c;职业发展路径并非一成不变。对于软件测试从业者而言&#xff0c;跳槽既是挑战&#xff0c;更是实现职业价值跃升、拓展能力边界的重要契机。然而&#xff0c;一次成功的跳槽绝非一时冲动&#xff0c;它需要精心的规划、对时机的…

新手入门:Web安全测试大盘点

随着互联网时代的蓬勃发展&#xff0c;基于Web环境下的应用系统、应用软件也得到了越来越广泛的使用。 目前&#xff0c;很多企业的业务发展都依赖于互联网&#xff0c;比如&#xff0c;网上银行、网络购物、网络游戏等。但&#xff0c;由于很多恶意攻击者想通过截获他人信息去…

EasyGBS助力构建企业生产智能监控新体系

在企业数字化转型的深水区&#xff0c;生产监控体系正面临视频数据孤岛、智能分析滞后与标准协议缺失三重挑战。本文深入探讨国标GB28181算法算力平台EasyGBS如何以其统一的接入能力、灵活的算法集成与开放的架构&#xff0c;为企业打造“全域感知、智能预警、数据驱动”的生产…

物联网Linux 代理模块设计

第一部分 为何引入代理设计技法Linux中的“代理模式”或“代理架构”并不是一个单一的、独立的模块&#xff0c;而是一种网络流量处理的设计模式&#xff0c;通常由内核中的多个子系统协同实现。其核心思想是&#xff1a;让一个实体&#xff08;代理&#xff09;代表另一个实体…

管理权限累到手抽筋,智慧园区多租户管理方案高效管理

在大型园区中&#xff0c;除了建设方自用空间&#xff0c;往往会将多余空间出租给其他企业&#xff0c;同一空间不同组织的复杂业态让管理复杂程度呈指数级增长。权责不清、数据不通、成本不降等问题&#xff0c;正不断消耗着园区管理方的精力&#xff0c;也影响着租户的体验感…

第一篇笔记窗口函数(Window Function),记录我学习sql的命苦笔记

窗口函数&#xff08;Window Function&#xff09;是&#xff1a;在不减少数据行数的前提下&#xff0c;对数据进行排名/计算/统计。。。 区分与group by&#xff1a; SELECT category, SUM(total_sales) FROM sales GROUP BY category; 如果caegory 1 里面有好几个单品&#x…

基于单片机的多功能智能台灯(有完整资料)

资料查找方式&#xff1a;特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可编号&#xff1a;T3252402M设计简介&#xff1a;本设计是基于单片机的多功能智能台灯&#xff0c;主要实现以下功能&#xff1a;通过时钟模块可以获取时间&#xff0c;可以实…

基于单片机的温度控制系统的设计

摘 要 由于国民经济不断进展&#xff0c;人们应当对于各类加热炉、热处置炉、反应炉及锅炉内的炉温实施检测与调控。选用单片机去实施调控&#xff0c;具备便利&#xff0c;简洁等一系列相关优势&#xff0c;还能够大幅提升受控温度在技术方面的相关指标&#xff0c;进而可以极…

【SLAM】嵌入式系统硬件存储及其架构设计

IPM、MSS&#xff08;OCM&#xff09;、DTCM-DSP0的含义与实现&#xff0c;需结合嵌入式系统硬件的存储架构&#xff08;需要研究参数定义&#xff0c;存储类项包含容量、延迟&#xff09;&#xff1a; 1. IPM&#xff08;Interior Processing Memory&#xff09;&#xff1a;内…

Mysql中event用法详解,零基础快速入门必看!

Event即事件&#xff0c;也是一种数据库对象&#xff0c;又叫时间触发器或者事件调度器&#xff0c;与triggers的事件触发不同&#xff0c;tiggers会因为update、delete、insert等事件触发&#xff0c;而event类似与linux crontab计划任务&#xff0c;用于时间触发&#xff0c;…

性能测试参数化技术详解—项目实战教学

所谓脚本参数化,就是针对脚本中的某些常量,使用参数来取代。参数中包含很多数据源,数据源可以是一个文本文件也可以是数据库。当不同的Vuser在执行相同的脚本时,分别调用参数文件中的数据代替这些常量,从而达到模拟多用户真实使用的目的。 参数化的过程体现了数据驱动的思…

基于单片机的无线通信报警系统

摘要 本课题设计了基于STM32F103C6T6单片机为主控核心的无线通信报警系统。为了解决家庭居室的安全监控&#xff0c;通过温湿度芯片SHT30、烟雾传感器MQ-2、天然气传感器MQ-4来获取居室的温湿度、烟雾、天然气含量&#xff0c;使用了一个热释电传感器、菲涅耳透镜、红外传感信号…