mysql8.0使用PXC实现高可用

news/2025/2/12 5:17:55/

1.什么是 PXC

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

2.PXC 的特点

  • 完全兼容 MySQL。

  • 同步复制,事务要么在所有节点提交或不提交。

  • 多主复制,可以在任意节点进行写操作。

  • 在从服务器上并行应用事件,真正意义上的并行复制。

  • 节点自动配置,数据一致性,不再是异步复制。

  • 故障切换:因为支持多点写入,所以在出现数据库故障时可以很容易的进行故障切换。

  • 自动节点克隆:在新增节点或停机维护时,增量数据或基础数据不需要人工手动备份提供,galera cluster 会自动拉取在线节点数据,集群最终会变为一致。

3.PXC 的优缺点

优点

  • 服务高可用。

  • 数据同步复制(并发复制),几乎无延迟。

  • 多个可同时读写节点,可实现写扩展,不过最好事先进行分库分表,让各个节点分别写不同的表或者库,避免让 galera 解决数据冲突。

  • 新节点可以自动部署,部署操作简单。

  • 数据严格一致性,尤其适合电商类应用。

  • 完全兼容 MySQL。

缺点

  • 复制只支持InnoDB 引擎,其他存储引擎的更改不复制。

  • 写入效率取决于节点中最弱的一台,因为 PXC 集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。

  • 所有表都要有主键。

  • 不支持 LOCK TABLE 等显式锁操作。

  • 锁冲突、死锁问题相对更多。

4.PXC 与 Replication 的区别

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

5.PXC 常用端口

  • 3306:数据库对外服务的端口号。

  • 4444:请求 SST 的端口。

  • 4567:组成员之间进行沟通的一个端口号。

  • 4568:用于传输 IST。

  • SST(State Snapshot Transfer): 全量传输

  • IST(Incremental state Transfer):增量传输

6.搭建 PXC 集群

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

实验准备:

三台服务器,本文使用pxc集群基于redhat

IP端口角色
192.168.183.513306pxc1
192.168.183.523306pxc2
192.168.183.533306pxc3

配置hosts解析:

vim /etc/hosts
192.168.183.51 pxc1
192.168.183.52 pxc2
192.168.183.53 pxc3

禁用mysql模块:

  RHEL 8和其他EL8系统默认启用MySQL模块。该模块隐藏了Percona提供的软件包,必须禁用该模块才能使这些软件包可见。以下命令禁用该模块:

yum module disable mysql

下载 PXC 安装包:

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release setup pxc-80
yum install percona-xtradb-cluster

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

  • 初始化数据库

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

vim /etc/my.cnf

修改下面方框内四处

启动 mysql,修改密码:

systemctl start mysqld
grep -i password /var/log/mysqld.log 
mysql -uroot -p
mysql> alter user root@localhost identified by 'MySQL@123';
Query OK, 0 rows affected (0.01 sec)

将引导服务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 mysql
[root@pxc3 ~]# chown -R mysql.mysql /var/lib/mysql/
[root@pxc3 ~]# systemctl start mysql

查询集群信息:

mysql> show status like 'wsrep%';
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name                    | Value                                                                                                                                          |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| wsrep_local_state_uuid           | 172d2ce5-e883-11ef-a273-f654ac2b1c02                                                                                                           |
| wsrep_protocol_version           | 11                                                                                                                                             |
| wsrep_last_applied               | 4                                                                                                                                              |
| wsrep_last_committed             | 4                                                                                                                                              |
| wsrep_monitor_status (L/A/C)     | [ (8, 8), (4, 4), (4, 4) ]                                                                                                                     |
| wsrep_replicated                 | 1                                                                                                                                              |
| wsrep_replicated_bytes           | 240                                                                                                                                            |
| wsrep_repl_keys                  | 1                                                                                                                                              |
| wsrep_repl_keys_bytes            | 32                                                                                                                                             |
| wsrep_repl_data_bytes            | 141                                                                                                                                            |
| wsrep_repl_other_bytes           | 0                                                                                                                                              |
| wsrep_received                   | 7                                                                                                                                              |
| wsrep_received_bytes             | 782                                                                                                                                            |
| 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        | 1                                                                                                                                              |
| 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         | 1                                                                                                                                              |
| wsrep_apply_oooe                 | 0                                                                                                                                              |
| wsrep_apply_oool                 | 0                                                                                                                                              |
| wsrep_apply_window               | 1                                                                                                                                              |
| wsrep_apply_waits                | 0                                                                                                                                              |
| wsrep_commit_oooe                | 0                                                                                                                                              |
| wsrep_commit_oool                | 0                                                                                                                                              |
| wsrep_commit_window              | 1                                                                                                                                              |
| wsrep_local_state                | 4                                                                                                                                              |
| wsrep_local_state_comment        | Synced                                                                                                                                         |
| wsrep_cert_index_size            | 1                                                                                                                                              |
| wsrep_cert_bucket_count          | 3                                                                                                                                              |
| wsrep_gcache_pool_size           | 2648                                                                                                                                           |
| 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.183.52:3306,192.168.183.53:3306,192.168.183.51: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                 | 172ac7c0-e883-11ef-a235-d72eb1948065                                                                                                           |
| wsrep_gmcast_segment             | 0                                                                                                                                              |
| wsrep_cluster_capabilities       |                                                                                                                                                |
| wsrep_cluster_conf_id            | 3                                                                                                                                              |
| wsrep_cluster_size               | 3                                                                                                                                              |
| wsrep_cluster_state_uuid         | 172d2ce5-e883-11ef-a273-f654ac2b1c02                                                                                                           |
| 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.20(6d8c05a)                                                                                                                                  |
| wsrep_ready                      | ON                                                                                                                                             |
| wsrep_thread_count               | 9                                                                                                                                              |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
79 rows in set (0.00 sec)

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

验证 创表查询:

节点下线:

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

以引导模式来进行关闭:

systemctl stop mysql@bootstrap.service

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

systemctl stop mysql


http://www.ppmy.cn/news/1571331.html

相关文章

Unity使用iTextSharp导出PDF-05页面事件

页面事件相关 接口&#xff1a;IPdfPageEvent 定义了页面变化触发的函数类&#xff1a;PdfPageEventHelper 继承接口IPdfPageEvent&#xff0c;函数全部是虚函数&#xff0c;根据需要重写函数。属性 PdfWriter.PageEvent 设置IPdfPageEvent接口对象 页面事件触发时机 OnOpen…

CodeGeeX4+IDEA辅助开发工具

CodeGeex4IDEA 在当今的软件开发领域&#xff0c;随着项目规模的不断扩大和技术的日益复杂&#xff0c;开发人员面临着越来越大的压力。他们需要在短时间内完成大量的代码编写工作&#xff0c;同时还要确保代码的质量和性能。然而&#xff0c;传统的手工编码方式往往效率低下&…

Linux | 自动化构建 —— make / Makefile

文章目录 自动化构建-make/Makefile一、make 工具概述二、Makefile 基本结构三、 Makefile和make的基本使用3.1最基本的gcc编译&#xff1a;3.2make执行Makefile文件3.3.PHONY伪目标 四、Makefile拓展4.1直接根据文件名编写Makefile4.2变量的使用4.3Makefile的适度扩展语法&…

机器学习中过拟合和欠拟合问题处理方法总结

目录 一、背景二、过拟合(Overfitting)2.1 基本概念2.2 过拟合4个最主要的特征2.3 防止过拟合的11个有效方法 三、欠拟合&#xff08;Underfitting&#xff09;3.1 基本概念3.2 欠拟合的4个特征3.3 防止欠拟合的11个有效方法 四、总结五、参考资料 一、背景 在机器学习模型训练…

(篇五)基于PyDracula搭建一个深度学习的软件之融入大华相机

1大华python文件解读 我们正常打开MVviewer会发现这些文件。我的应用场景是PLC给我一个信号&#xff0c;我就触发拍照程序&#xff0c;那么我需要选取哪一个文件作为研究基础呢&#xff1f; 1.1 异步回调byCallBack和手动轮询byGetFrame 异步回调 采用 异步回调 (attachGr…

如何在C++ QT 程序中集成cef3开源浏览器组件去显示网页?

文章目录 1. **准备工作**1.1 下载CEF31.2 配置Qt项目2. **集成CEF3到Qt窗口**2.1 创建Qt窗口容器2.2 初始化CEF33. **处理CEF3消息循环**4. **处理多进程架构**5. **完整代码示例**`main.cpp`6. **常见问题**6.1 黑屏问题6.2 窗口嵌入失败6.3 多进程调试7.**Github源码参考**8…

【课程设计参考】迷宫小游戏 :基于 Python+Pygame+AI算法

一、内容 实现走迷宫 &#xff08;1&#xff09;游戏界面显示&#xff1a;迷宫地图、上下左右移动的特效。 &#xff08;2&#xff09;动作选择&#xff1a;上下左右键对应于上下左右的移动功能&#xff0c;遇到障碍的处理。 &#xff08;3&#xff09;得分统计功能&#xff…

帝国CMS8.0版多访问端支持可选不绑定二级域名

在之前版本的多访问端功能&#xff0c;子访问端需要绑定二级域名才能使用(如手机端&#xff1a;m.xx.com)。所以为了更方便做各种访问端&#xff0c;帝国CMS8.0版多访问端功能新增支持可以选择不绑定二级域名(如手机端&#xff1a;www.xx.com/m/)。要设置可修改配置文件 /e/con…