mysql-PXC实现高可用

news2024/9/21 19:55:30

mysql8.0使用PXC实现高可用

什么是 PXC

PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证 MySQL 集群的数据一致性;

PXC 的特点

  • 完全兼容 MySQL。
  • 同步复制,事务要么在所有节点提交或不提交。
  • 多主复制,可以在任意节点进行写操作。
  • 在从服务器上并行应用事件,真正意义上的并行复制。
  • 节点自动配置,数据一致性,不再是异步复制。
  • 故障切换:因为支持多点写入,所以在出现数据库故障时可以很容易的进行故障切换。
  • 自动节点克隆:在新增节点或停机维护时,增量数据或基础数据不需要人工手动备份提供,galera cluster 会自动拉取在线节点数据,集群最终会变为一致。

PXC 的优缺点

优点

  • 服务高可用。
  • 数据同步复制(并发复制),几乎无延迟。
  • 多个可同时读写节点,可实现写扩展,不过最好事先进行分库分表,让各个节点分别写不同的表或者库,避免让 galera 解决数据冲突。
  • 新节点可以自动部署,部署操作简单。
  • 数据严格一致性,尤其适合电商类应用。
  • 完全兼容 MySQL。

缺点

  • 复制只支持InnoDB 引擎,其他存储引擎的更改不复制。
  • 写入效率取决于节点中最弱的一台,因为 PXC 集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。
  • 所有表都要有主键。
  • 不支持 LOCK TABLE 等显式锁操作
  • 锁冲突、死锁问题相对更多。

PXC 集群节点越多,数据同步的速度就越慢。
在这里插入图片描述

PXC 与 Replication 的区别

ReplicationPXC
数据同步是单向的,master 负责写,然后异步复制给 slave;如果 slave 写入数据,不会复制给 master数据同步时双向的,任何一个 mysql 节点写入数据,都会同步到集群中其它的节点
异步复制,从和主无法保证数据的一致性同步复制,事务在所有集群节点要么同时提交,要么同时不提交

PXC的原理

在这里插入图片描述

复制分为四个阶段

1.Local read phase
本地(client连接的节点)执行事务Ti,但是不真正提交,真正提交(提交给引擎)之前进入Send phase发送阶段
2.Send phase
1). 若事务只读,直接提交,结束
2). 若事务非只读,将事物的写操作封装成WS(Write Set,基于行),并且携带一个全局唯一标识global tex ID,广播到所有节点(包括自身)
3.Certification phase 认证测试阶段
Certification based conflict detect 测试发送来的事务与本地事务是否有冲突
4.Write phase 写阶段
a) 若检测出冲突,其他节点discard,原节点回滚Ti
b) 否则,执行WS,提交事务后释放锁资源
c) 对于源节点,提交事务并向client返回结果

Galera replication

采取的是乐观策略,即事务在一个节点提交时,被认为与其他节点事务没有冲突,首先在本地“执行”(事务并没有执行完),后再发送给所有节点做冲突检测,存在两种情况下需要回滚事务:

  1. WS复制到其他节点时,被加到每个节点的slave trx queue(一个事务队列,专门用来存放其他节点发送过来的事务)中,与queue中前面的trxs再做certification test时发现冲突,该事务被抛弃掉
  2. WS通过了certification test后被保证一定会执行,在他执行过程中,如果该节点上有与其冲突的local trxs(本地事务,因为每个节点都是可读可写的),回滚这个local trxs本地事务

事务在commit节点广播后,节点之间不交换“是否冲突”的信息 (因为每个节点上的slave trx queue事务队列都相同,所以当本地认证失败/成功后,其他节点一定也是认证失败/成功,当事务认证通过后,就算与本地事务认证冲突,也只会回滚本地事务,因此提交后,不再交换冲突信息),各个节点独立异步的处理该事务,certification based replication 协议保证
1. 事务在所有节点上要么都commit,要么都rollback/abort
2. 事务在所有节点的执行顺序一致(通过全局唯一序列Global trx ID)

Certification based replication所依赖的基础技术:

  1. Atomic delivery(事务传输要么成功传给所有节点,要么都失败)
  2. Total order(事务在所有节点中的顺序一致)
  3. Group maintenance(每个节点知道所有节点的状态)
PXC中的两个缓存 GCache and Record-Set Cache

在PXC集群中,有一个GCache和 Record-Set Cache(也称为事务写集缓存)概念。如果正在运行长事务,这两个缓存的使用通常会让人感到困惑,因为它们都会导致创建磁盘级文件。

  • Record-Set Cache
    • 当在节点上运行事务时,将尝试为修改的每一行附加一个键。这些数据就缓存在out-write-set中,然后将其广播至所有节点
    • 生命周期和事务相关
  • Gcache
    • 执行事务的本机节点也将充当订阅节点,并通过集群发布机制接收自己的wirte-set(第二阶段)。节点将尝试将write-set缓存到其Gcache中。Gcache保留多少数据配置控制
    • Gcache中的write-set 的生存周期与实物无关
    • 当一个节点需要IST时,它将通过这个GCache提供服务
    • 在任何给定的时间点,本机节点都有两个写集副本:一个在GCache,另外一个在Record-Set Cache
PXC的传输方式 SST,IST
  • State Snapshot Transfer(SST)全量传输
    当一个新节点加入集群并从现有节点接收所有数据时,通常使用SST。在PXC集群中有三种SST的方法:
    • mysqldump
    • rsync
    • Xtrabackup

mysqldump和reync的缺点是,在复制数据时,集群变成只读的
Xtrabackup 的优点是不需要READ LOCK命令,只使用备份锁

  • Incremental state Transfer(IST)增量传输

是指只将增量更改从一个节点复制到另一个节点。
SST即使没有将集群锁定为只读状态,SST也可能会干扰并中断服务的正常运行。IST可以让你避免这种情况。如果一个节点宕机时间很短,那么它只获取在宕机期间发生的更改。使用节点上的缓存机制实现。每个节点都包含一个缓存,上次N次更改的缓冲区(即GCache,大小可配置),并且节点能够传输此缓存的一部分。只有当需要传输的更改量小于N时才能执行IST。如果超过N,则必须执行SST。

PXC 常用端口

  • 3306:数据库对外服务的端口号。
  • 4444:请求 SST 的端口。
  • 4567:组成员之间进行沟通的一个端口号。
  • 4568:用于传输 IST。
  • SST(State Snapshot Transfer): 全量传输
  • IST(Incremental state Transfer)??*增量传输

PXC的状态参数

复制信息

获取信息:

show status like 'wsrep%';
名称描述
wsrep_replicated被其他节点复制的次数
wsrep_replicated_bytes发送到其他节点的写入集的总大小
wsrep_received从其他节点处收到的写入请求数
wsrep_received_bytes从其他节点接受的写入集的总大小
wsrep_local_commits节点上的写入集数目
wsreo_local_cert_failurescertification test中未通过的trx数目
wsrep_local_bf_abortsapply trxs(已经通过certification test)时,回滚的local trxs(open but not commit)数目

日常运维运维中应该关注wsreo_local_cert_failures,wsrep_local_bf_aborts这两个参数,如果数目持续增加,看看是不是应用上有问题

队列信息

如果pxc正在满负荷工作,没有线程去执行数据的同步,同步请求会缓存到队列中,然后空闲线程会从队列中取出任务,执行同步的请求,有了队列pxc就能用少量的线程应对瞬时大量的同步请求。

名称描述
wsrep_local_send_queue发送队列的长度(瞬时同步的请求数量)
wsrep_local_send_queue_max发送队列的最大长度
wsrep_local_send_queue_min发送队列的最小长度
wsrep_local_send_queue_avg发送队列的平均长度
wsrep_local_recv_queue接收队列的长度
wsrep_local_recv_queue_max接收队列的最大长度
wsrep_local_recv_queue_min接收队列的最小长度
wsrep_local_recv_queue_avg接收队列的平均长度

wsrep_local_send_queue:如果这个值比较高,那么表示当前负载比较高,也可能是硬件性能导致
wsrep_local_send_queue_avg:同上
wsrep_local_recv_queue:如果这个值比较高,那么表示接收到了请求,应用线程负载比较高,可能是应用线程比较少,干不来活了,那就增加硬件cpu性能或者增加线程数

  • 当发送队列的平均长度(wsrep_local_send_queue_avg)值很大, 发送队列的长度(wsrep_local_send_queue)也很大的时候,说明pxc集群同步数据的速度已经很慢了,队列里边积压了大量的同步请求,这个时候就得检查一下网速是不是正常,或者同步的线程数量是不是太少。

  • 当接收队列的平均长度(wsrep_local_recv_queue_avg)值很大, 接收队列的长度(wsrep_local _recv_queue)也很大的时候,这说明本地没有足够的线程去执行持久化的操作,增加线程就可以解决这个问题。

流控信息(流量控制)
  • 什么是流控(FC)?如何工作?
    节点接收写集并把它们按照全局顺序组织(根据全局序列号)起来,节点将接收到的未应用和提交的事务保存在接收队列中,当这个接收队列达到一定的大小,将触发限流;此时节点将暂停复制,节点会先处理接收队列中的任务。当接收队列减小到一个可管理的值后,复制将恢复。

比如说队列每满之前一直死四个线程往里面写请求,当队列快满的时候,缩减为两个队列往里面写请求

名称描述
wsrep_flow_control paused_ns流控暂停状态下的总时间(纳秒)
wsrep_flow_control_paused表示复制停止了多长时间。值为0~1,越靠近0越好,值为1表示复制完全停止。.
wsrep_flow_control_sent发送的流控暂停事件的数量
wsrep_flow_control_recv接收的流控暂停事件的数量
wsrep_flow_control_interval流量控制的下限和上限。上限 是队列中允许的最大请求数。如果队列达到上限,则拒绝新的请求。当处理现有
wsrep_flow_control_interval请求时,队列会减少,一旦到达下限,将再次允许新的请求
wsrep_flow_control_status流量控制状态OFF:关闭 ON:开启
  • 流控的主要原因节点之间同步的速度慢,队列积压了大量的请求,这才是流控的主要原因。流控解决办法:

    1.提高带宽, 更换交换机,千兆网卡更换成万兆网卡

    2.提升硬件性能,比如升级CPU,内存以及更换光纤硬盘等等都可以提高写入速度

    3.增加线程,线程多了执行的速度也就快了。队列里边就不会积压大量的请求

前两项属于硬件升级,主要说一下第三个方法增加线程数提升同步速度。在pxc的配置文
件加上wsrep_slave_ threads 参数。代表的是本地执行队列的线程数量,一般这个数是CPU线程数的1-1.5倍。也可以使用wsrep_cert_deps_distance 状态变量来确定可能的线程的最大数量。不要使wsrep_slave_threads 值高于wsrep _cert_deps_distance 状态变量平均值。
(wsrep_cert_deps_distance 表示有多少事务可以并行应用处理。)

节点与集群的状态信息
名称描述
wsrep_ local state_ comment节点状态:Joining节点正在加入到pxc集群中、Joined节点已经加入到pxc集群中、Synced节点可以提供读写服务,算正常的状态、Donar/Desynced如果有节点跟当前节点同步则进入此状态,不能提供读写服务
wsrep_cluster_status集群状态:(Primary正常状态、Non- Primary出现了脑裂请求、Disconnected 不能提供服务,已经出现宕机了)
wsrep_connected节点是否连接到集群
wsrep_ready集群是否正常工作
wsrep_cluster_size节点数量
wsrep_desync_count延时节点数量
wsrep_ incoming. _addresses集群节点IP地址
事务相关信息
名称描述
wsrep_cert deps_distance事务执行并发数
wsrep_apply_window接收队列中事务的平均数量
wsrep_commit_window发送队列中事务的平均数量

一般将线程数设置为wsrep_cert deps_distance的平均数

搭建 PXC 集群

Percona XtraDB Cluster (简称 PXC)集群是基于 Galera 2.x library,事务型应用下的通用的多主同步复制插件,主要用于解决强一致性问题,使得各个节点之间的数据保持实时同步以及实现多节点同时读写。提高了数据库的可靠性,也可以实现读写分离,是 MySQL 关系型数据库中大家公认的集群优选方案之一。

准备好下面三台服务器,本文搭建PXC集群基于CentOS7.x:

IP端口角色
192.168.150.113306pxc
192.168.150.123306pxc2
192.168.150.133306pxc3

配置hosts解析

# cat >> /etc/hosts << EOF
192.168.150.11 pxc1
192.168.150.12 pxc2
192.168.150.13 pxc3
EOF
  • 删除 MariaDB 程序包
# yum -y remove mari*
  • 下载 PXC 安装包

安装 PXC 里面集成了 Percona Server 数据库,所以不需要安装 Percona Server 数据库。

Software Downloads - Percona

在这里插入图片描述

下载 qpress-11-1.el7.x86_64.rpm

https://repo.percona.com/yum/release/7/RPMS/x86_64/qpress-11-1.el7.x86_64.rpm

最后上传到 centos 服务器中。

[root@pxc1 ~]# ll *.rpm
-rw-rw-r-- 1 root root     28360 Oct 19 20:21 percona-xtradb-cluster-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root  15169548 Oct 19 20:21 percona-xtradb-cluster-client-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root 509619476 Oct 19 20:21 percona-xtradb-cluster-debuginfo-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root   1912512 Oct 19 20:21 percona-xtradb-cluster-devel-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root     27840 Oct 19 20:21 percona-xtradb-cluster-full-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root    754084 Oct 19 20:21 percona-xtradb-cluster-garbd-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root   2292512 Oct 19 20:21 percona-xtradb-cluster-icu-data-files-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root   5243092 Oct 19 20:21 percona-xtradb-cluster-mysql-router-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root 151051960 Oct 19 20:21 percona-xtradb-cluster-server-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root   1535736 Oct 19 20:21 percona-xtradb-cluster-shared-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root   1179040 Oct 19 20:21 percona-xtradb-cluster-shared-compat-8.0.34-26.1.el7.x86_64.rpm
-rw-rw-r-- 1 root root 399166472 Oct 19 20:21 percona-xtradb-cluster-test-8.0.34-26.1.el7.x86_64.rpm
-rw-r--r-- 1 root root     32624 Dec  6 14:50 qpress-11-1.el7.x86_64.rpm

执行下面命令进行安装

# yum localinstall *.rpm -y

之后还是对 Percona Server 数据库的初始化:

  • 初始化数据库

应为使用的是8.0版本,部分配置需要在初始化数据库前进行配置,如忽略表名大小写等

[root@pxc1 ~]# vim /etc/my.cnf
...
[mysqld]
server-id=11 #每台mysql的id不能相同
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# Binary log expiration period is 604800 seconds, which equals 7 days
binlog_expire_logs_seconds=604800 #二进制日志过期时间为604800秒,等于7天

注意:pxc2和pxc3只需要server-id设置为12和13即可。

然后我们启动 mysql,修改密码。

# systemctl start mysqld
# tmp_pass=$(awk '/temporary password/ {print $NF}' /var/log/mysqld.log)
# mysql -uroot -p${tmp_pass}
mysql> alter user root@localhost identified by '123456';
Query OK, 0 rows affected (0.01 sec)

# 授权用户
# mysql -uroot -p123456
mysql> CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'Abc_123456';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT all privileges ON *.* TO 'admin'@'%';
Query OK, 0 rows affected (0.00 sec)
  • 创建集群
# 停止所有节点的mysqld服务
# systemctl stop mysqld

[root@pxc1 ~]# vim /etc/my.cnf
...
######## wsrep ###############
# Path to Galera library
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so

# Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node
wsrep_cluster_address=gcomm://192.168.150.11,192.168.150.12,192.168.150.13 # PXC集群的所有ip

# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW

# Slave thread to use
wsrep_slave_threads=8

wsrep_log_conflicts

# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2 # 主键自增长不锁表

# Node IP address
wsrep_node_address=192.168.150.11 # 当前节点的IP
# Cluster name
wsrep_cluster_name=pxc-cluster  # PXC集群的名称

#If wsrep_node_name is not specified,  then system hostname will be used
wsrep_node_name=pxc1 # 当前节点的名称

#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING

# SST method
wsrep_sst_method=xtrabackup-v2 # 同步方法

注意:pxc2和pxc3参照,修改集群节点ip和名称 wsrep_node_name,wsrep_node_address

将引导服务mysql目录下的*.pem拷贝给其他服务器

[root@pxc1 ~]# scp /var/lib/mysql/*.pem pxc2:/var/lib/mysql/
[root@pxc1 ~]# scp /var/lib/mysql/*.pem pxc3:/var/lib/mysql/

第一个节点需要以引导模式启动:

[root@pxc1 ~]# systemctl start mysql@bootstrap.service

接着在第二和第三个节点上正常启动数据库服务,命令如下:

[root@pxc2 ~]# chown -R mysql.mysql /var/lib/mysql/
[root@pxc2 ~]# systemctl start mysqld
[root@pxc3 ~]# chown -R mysql.mysql /var/lib/mysql/
[root@pxc3 ~]# systemctl start mysqld

查询集群信息

mysql> show status like 'wsrep%';
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name                    | Value                                                                                                                                          |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| wsrep_local_state_uuid           | 47f68dce-940c-11ee-85d5-c29e7cbcc6e4                                                                                                           |
| wsrep_protocol_version           | 10                                                                                                                                             |
| wsrep_last_applied               | 5                                                                                                                                              |
| wsrep_last_committed             | 5                                                                                                                                              |
| wsrep_monitor_status (L/A/C)     | [ (5, 5), (5, 5), (5, 5) ]                                                                                                                     |
| wsrep_replicated                 | 0                                                                                                                                              |
| wsrep_replicated_bytes           | 0                                                                                                                                              |
| wsrep_repl_keys                  | 0                                                                                                                                              |
| wsrep_repl_keys_bytes            | 0                                                                                                                                              |
| wsrep_repl_data_bytes            | 0                                                                                                                                              |
| wsrep_repl_other_bytes           | 0                                                                                                                                              |
| wsrep_received                   | 4                                                                                                                                              |
| wsrep_received_bytes             | 504                                                                                                                                            |
| wsrep_local_commits              | 0                                                                                                                                              |
| wsrep_local_cert_failures        | 0                                                                                                                                              |
| wsrep_local_replays              | 0                                                                                                                                              |
| wsrep_local_send_queue           | 0                                                                                                                                              |
| wsrep_local_send_queue_max       | 1                                                                                                                                              |
| wsrep_local_send_queue_min       | 0                                                                                                                                              |
| wsrep_local_send_queue_avg       | 0                                                                                                                                              |
| wsrep_local_recv_queue           | 0                                                                                                                                              |
| wsrep_local_recv_queue_max       | 1                                                                                                                                              |
| wsrep_local_recv_queue_min       | 0                                                                                                                                              |
| wsrep_local_recv_queue_avg       | 0                                                                                                                                              |
| wsrep_local_cached_downto        | 4                                                                                                                                              |
| wsrep_flow_control_paused_ns     | 0                                                                                                                                              |
| wsrep_flow_control_paused        | 0                                                                                                                                              |
| wsrep_flow_control_sent          | 0                                                                                                                                              |
| wsrep_flow_control_recv          | 0                                                                                                                                              |
| wsrep_flow_control_active        | false                                                                                                                                          |
| wsrep_flow_control_requested     | false                                                                                                                                          |
| wsrep_flow_control_interval      | [ 173, 173 ]                                                                                                                                   |
| wsrep_flow_control_interval_low  | 173                                                                                                                                            |
| wsrep_flow_control_interval_high | 173                                                                                                                                            |
| wsrep_flow_control_status        | OFF                                                                                                                                            |
| wsrep_cert_deps_distance         | 0                                                                                                                                              |
| wsrep_apply_oooe                 | 0                                                                                                                                              |
| wsrep_apply_oool                 | 0                                                                                                                                              |
| wsrep_apply_window               | 0                                                                                                                                              |
| wsrep_apply_waits                | 0                                                                                                                                              |
| wsrep_commit_oooe                | 0                                                                                                                                              |
| wsrep_commit_oool                | 0                                                                                                                                              |
| wsrep_commit_window              | 0                                                                                                                                              |
| wsrep_local_state                | 4                                                                                                                                              |
| wsrep_local_state_comment        | Synced                                                                                                                                         |
| wsrep_cert_index_size            | 0                                                                                                                                              |
| wsrep_cert_bucket_count          | 1                                                                                                                                              |
| wsrep_gcache_pool_size           | 3448                                                                                                                                           |
| wsrep_causal_reads               | 0                                                                                                                                              |
| wsrep_cert_interval              | 0                                                                                                                                              |
| wsrep_open_transactions          | 0                                                                                                                                              |
| wsrep_open_connections           | 0                                                                                                                                              |
| wsrep_ist_receive_status         |                                                                                                                                                |
| wsrep_ist_receive_seqno_start    | 0                                                                                                                                              |
| wsrep_ist_receive_seqno_current  | 0                                                                                                                                              |
| wsrep_ist_receive_seqno_end      | 0                                                                                                                                              |
| wsrep_incoming_addresses         | 192.168.150.13:3306,192.168.150.11:3306,192.168.150.12:3306                                                                                    |
| wsrep_cluster_weight             | 3                                                                                                                                              |
| wsrep_desync_count               | 0                                                                                                                                              |
| wsrep_evs_delayed                |                                                                                                                                                |
| wsrep_evs_evict_list             |                                                                                                                                                |
| wsrep_evs_repl_latency           | 0/0/0/0/0                                                                                                                                      |
| wsrep_evs_state                  | OPERATIONAL                                                                                                                                    |
| wsrep_gcomm_uuid                 | df5aed67-940d-11ee-bc8f-8e8bab9eea9d                                                                                                           |
| wsrep_gmcast_segment             | 0                                                                                                                                              |
| wsrep_cluster_capabilities       |                                                                                                                                                |
| wsrep_cluster_conf_id            | 3                                                                                                                                              |
| wsrep_cluster_size               | 3                                                                                                                                              |
| wsrep_cluster_state_uuid         | 47f68dce-940c-11ee-85d5-c29e7cbcc6e4                                                                                                           |
| wsrep_cluster_status             | Primary                                                                                                                                        |
| wsrep_connected                  | ON                                                                                                                                             |
| wsrep_local_bf_aborts            | 0                                                                                                                                              |
| wsrep_local_index                | 2                                                                                                                                              |
| wsrep_provider_capabilities      | :MULTI_MASTER:CERTIFICATION:PARALLEL_APPLYING:TRX_REPLAY:ISOLATION:PAUSE:CAUSAL_READS:INCREMENTAL_WRITESET:UNORDERED:PREORDERED:STREAMING:NBO: |
| wsrep_provider_name              | Galera                                                                                                                                         |
| wsrep_provider_vendor            | Codership Oy <info@codership.com> (modified by Percona <https://percona.com/>)                                                                 |
| wsrep_provider_version           | 4.16(841837f)                                                                                                                                  |
| wsrep_ready                      | ON                                                                                                                                             |
| wsrep_thread_count               | 9                                                                                                                                              |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
79 rows in set (0.00 sec)

查看 PXC 集群状态信息,在任意一个节点执行以下命令:

[root@pxc1 ~]# mysql -uroot -p123456 -e "show status like 'wsrep_cluster%';"
mysql: [Warning] Using a password on the command line interface can be insecure.
+----------------------------+--------------------------------------+
| Variable_name              | Value                                |
+----------------------------+--------------------------------------+
| wsrep_cluster_weight       | 3                                    |
| wsrep_cluster_capabilities |                                      |
| wsrep_cluster_conf_id      | 3                                    |
| wsrep_cluster_size         | 3                                    |
| wsrep_cluster_state_uuid   | 47f68dce-940c-11ee-85d5-c29e7cbcc6e4 |
| wsrep_cluster_status       | Primary                              |
+----------------------------+--------------------------------------+
  • 节点下线

PXC 集群允许动态下线节点,但需要注意的是节点的启动命令和关闭命令必须一致,如以引导模式启动的第一个节点必须

以引导模式来进行关闭:

# systemctl stop mysql@bootstrap.service

其他节点则可以按照正常方式关闭:

# systemctl stop mysqld

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

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

相关文章

数据预处理与协同过滤推荐算法——从数据清洗到个性化电影推荐

推荐系统在现代应用中占据了重要地位&#xff0c;尤其在电影、音乐等个性化内容推荐中广泛使用。本文将介绍如何使用数据预处理、特征工程以及多种推荐算法&#xff08;包括协同过滤、基于内容的推荐、混合推荐等&#xff09;来实现电影推荐系统。通过Pandas、Scikit-learn、Te…

研1日记5

x torch.tensor(x),numpy 转tensor 三维矩阵相加 screen -S pid 进入之前创建好的screen transpose()只能一次操作两个维度&#xff1b;permute()可以一次操作多维数据&#xff0c;且必须传入所有维度数&#xff0c; transpose()中的dim没有数的大小区分&#xff1b;permut…

Redis 分布式锁:线程安全在分布式环境中的解决方案

Redis 分布式锁&#xff1a;线程安全在分布式环境中的解决方案 一 . 分布式锁二 . 分布式锁的实现策略2.1 引入 setnx2.2 引入过期时间2.3 引入校验 ID2.4 引入 lua 脚本2.5 引入看门狗2.6 引入 redlock 算法 Hello , 大家好 , 这个专栏给大家带来的是 Redis 系列 ! 本篇文章给…

Flutter 中的低功耗蓝牙概述

随着智能设备数量的增加&#xff0c;控制这些设备的需求也在增加。对于多种使用情况&#xff0c;期望设备在需要进行控制的同时连接到互联网会受到很大限制&#xff0c;因此是不可行的。在这些情况下&#xff0c;使用低功耗蓝牙&#xff08;也称为 Bluetooth LE 或 BLE&#xf…

[yolov5] --- yolov5入门实战「土堆视频」

1 项目介绍及环境配置 下载yolov5 tags 5.0源码&#xff0c;https://github.com/ultralytics/yolov5/tree/v5.0&#xff0c;解压 Pycharm 中创建conda虚拟环境 激活conda虚拟环境 根据作者提供的requirements.txt文件&#xff0c;pip install -r requirements.txt 如果作者没有…

【Spring Boot】 SpringBoot自动装配-Condition

目录 一、前言二、 定义2.1 Conditional2.2 Condition2.2.1 ConditionContext 三、 使用说明3.1 创建项目3.1.1 导入依赖3.1.2 添加配置信息3.1.3 创建User类3.1.4 创建条件实现类3.1.5 修改启动类 3.2 测试3.2.1 当user.enablefalse3.2.2 当user.enabletrue 3.3 小结 四、改进…

如何实现加密功能

文章目录 1. 概念介绍2. 方法与功能2.1 基本用法2.2 加密算法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"FlutterCacheManager组件"相关的内容&#xff0c;本章回中将介绍一个加密工具包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 加密主要…

基于YOLO8的图片实例分割系统

文章目录 在线体验快速开始一、项目介绍篇1.1 YOLO81.2 ultralytics1.3 模块介绍1.3.1 scan_task1.3.2 scan_taskflow.py1.3.3 segment_app.py 二、核心代码介绍篇2.1 segment_app.py2.2 scan_taskflow.py 三、结语 代码资源&#xff1a;计算机视觉领域YOLO8技术的图片实例分割…

0x05 tomcat AJP文件包含漏洞(CVE-2020-1938)复现(脚本最终没有验证成功)

参考&#xff1a; 13-3 tomcat AJP文件包含漏洞&#xff08;CVE-2020-1938&#xff09;_omcat ajp文件包含漏洞 payload-CSDN博客 一、fofa 搜索使用该服务器的网站 网络空间测绘&#xff0c;网络空间安全搜索引擎&#xff0c;网络空间搜索引擎&#xff0c;安全态势感知 - F…

linux编译器——gcc/g++

1.gcc linux上先要安装&#xff0c; sudo yum install gcc gcc --version 可以查看当前的版本 &#xff0c;我们默认安装的是4.8.5的版本&#xff0c;比较低&#xff0c; gcc test.c -stdc99 可以使他支持更高版本的c标准 -o 可以殖指明生成文件的名字&#xff0c;可以自己…

什么是Web服务器集群?

Web服务器集群是指将多台服务器组成一个集群&#xff0c;通过负载均衡将客户端请求分发到这些服务器上进行处理&#xff0c;从而提高网站的性能和可用性。每台服务器都运行着相同的应用程序和数据&#xff0c;并且能够相互通信和协调工作。 1.为什么需要Web服务器集群 随着互联…

0基础学习爬虫系列:网页内容爬取

1.背景 今天我们来实现&#xff0c;监控网站最新数据爬虫。 在信息爆炸的年代&#xff0c;能够有一个爬虫帮你&#xff0c;将你感兴趣的最新消息推送给你&#xff0c;能够帮你节约非常多时间&#xff0c;同时确保不会miss重要信息。 爬虫应用场景&#xff1a; 应用场景主要功…

Transformer从零详细解读

Transformer从零详细解读 一、从全局角度概况Transformer ​ 我们把TRM想象为一个黑盒&#xff0c;我们的任务是一个翻译任务&#xff0c;那么我们的输入是中文的“我爱你”&#xff0c;输入经过TRM得到的结果为英文的“I LOVE YOU” ​ 接下来我们对TRM进行细化&#xff0c;…

【Linux】萌新看过来!一篇文章带你走进Linux世界

&#x1f680;个人主页&#xff1a;奋斗的小羊 &#x1f680;所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 前言&#x1f4a5;1、初识Linux&#x1f4a5;1.1 什么是操作系统&#xff1f;&#x1f4a5;1.2 各种操作…

分享一个基于微信小程序的医院挂号就诊一体化平台uniapp医院辅助挂号应用小程序设计(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

SpringBoot学习(9)(springboot自动配置原理)(源码分析、面试题)

目录 一、引言 二、为啥学习自动配置原理&#xff1f; 三、自动配置 &#xff08;1&#xff09;基本概述 &#xff08;2&#xff09;学习回顾 四、自动配置——源码分析 &#xff08;1&#xff09;回顾学习 &#xff08;2&#xff09;回到源码学习 &#xff08;1&#xff09;注…

文件系统 文件描述符fd 重定向原理 缓冲区

文章目录 基础的文件操作文件的系统调用接口位图向文件中写入标记位选项总结&#xff1a;open的返回值文件描述符fdfd012与硬件的关系read && stat 重定向dup2 缓冲区的理解经典的例子 基础的文件操作 引子&#xff1a; #include <stdio.h>int main() {FILE* f…

[Linux]:环境变量与进程地址空间

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;Linux学习 贝蒂的主页&#xff1a;Betty’s blog 1. 环境变量 1.1 概念 **环境变量(environment variables)**一般是指在操作…

在Unity环境中使用UTF-8编码

为什么要讨论这个问题 为了避免乱码和更好的跨平台 我刚开始开发时是使用VS开发,Unity自身默认使用UTF-8 without BOM格式,但是在Unity中创建一个脚本,使用VS打开,VS自身默认使用GB2312(它应该是对应了你电脑的window版本默认选取了国标编码,或者是因为一些其他的原因)读取脚本…

自己部门日均1000+告警?如何减少90%无效告警?

目录标题 一、告警的类别1.技术告警1.1基础设施告警1.2基本服务告警 2.业务告警3.监控大盘告警 二、为何需要告警治理&#xff1f;三、治理迫在眉睫1.1告警治理策略1.2核心监控告警点1.3避免告警反模式1.4告警规约制定1.5自动化处理 一、告警的类别 一般的告警分为以下几点&am…