热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PXC使用与总结

PXC使用与总结1、PXC是什么基于Galera协议的Codership提供多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,并且可保障

 


PXC使用与总结

 


1、PXC是什么

基于Galera协议的Codership提供多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据一致性。

基于Galera的高可用方案主要有MariaDB Galera Cluster和Percona XtraDB Cluster(简称PXC),目前PXC用的会比较多一些。

MariaDB的集群原理跟PXC一样,MariDB-Cluster其实就是PXC,两者原理是一样的。要搭建PXC架构至少需要3个mysql实例来组成一个集群,三个实例之间不是主从模式,而是各自为主,所以三者是对等关系,不分从属。

 


2、PXC的特点

多主架构:真正的多点读写集群,在任何时候读写的数据都是最新的。

同步复制:集群不同节点之间的数据同步,没有延迟,在数据库挂掉之后,数据不会丢失。

并发复制:从节点在apply数据时,支持并行执行,有更好的性能表现,真正意义上的并行复制。

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

热插拔:在服务期间,如果数据库挂了,只要监控程序发现的够快,不可服务时间就会非常少,在节点故障期间,节点本身对集群的影响非常小。

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

对应用透明:集群的维护,对应用程序是透明的,几乎感觉不到。

PXC最大的优势:强一致性、无同步延迟。

 

 


3、PXC的优缺点


3.1、PXC的优点

 

1)实现mysql数据库集群架构的高可用性和数据的强一致性。

2)完成了真正的多节点读写的集群方案。

3)改善了传统意义上的主从复制延迟问题,基本上达到了实时同步。

4)新加入的节点可以自动部署,无须提供手动备份,维护起来很方便。

5)由于是多节点写入,所以数据库故障切换很容易。

6)完全兼容MySQL;

 

 


3.2、PXC的缺点

 

1)新加入的节点开销大,需要复制完整的数据。采用SST传输开销太大。

2)任何更新事务都需要全局验证通过,才会在每个节点库上执行,集群性能受限于性能最差的节点。

3)因为需要保证数据的一致性,所以在多节点并发写时,锁冲突问题比较严重。

4)因为使用乐观锁,所以建议使用小事物。

5)存在写扩大问题,所有的节点上都会发生相同操作。

6)只支持innodb存储引擎的表。

7)没有表级别的锁定,执行DDL语句操作会把整个集群锁住,而且也 kill 不了(建议使用Osc操作,即在线DDL)

8)所有的表必须含有主键,不然操作数据时会报错。

 


4、PXC的原理


4.1、名词介绍

WS:write set 写集

IST: Incremental State Transfer 增量同步

SST:State Snapshot Transfer 全量同步

 

pxc中一个事务=一个写集=一个GTID(PXC特有)

GTID由UUID(集群唯一) + seqno(集群唯一)组成


4.2、工作原理

 

PXC使用的4个端口号

 

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

4444:请求SST用的。 SST: 镜象传输方法 xtrabackup , rsync ,mysqldump

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

4568: 传输IST用的。相对于SST来说的一个增量。

 

原理:

首先客户端先发起一个事务,该事务先在本地执行,执行完成之后就要发起对事务的提交操作了。在提交之前需要将产生的数据写集广播出去,然后获取到一个全局的事务ID号,一并传送到另外的节点上面。通过合并数据之后,发现没有冲突数据,执行apply_cd和commit_cb动作,如果发现冲突就需要取消此次事务的操作。而当前server节点通过验证之后,执行提交操作,并返回OK,如果验证没通过,则执行回滚。当然在生产中至少要有3个节点的集群环境,如果其中一个节点没有验证通过,出现了数据冲突,那么此时采取的方式就是将出现不一致的节点踢出集群环境,而且它自己会执行shutdown命令,自动关机。

 

 


4.3、节点状态变化阶段:

 

  open:节点启动成功,尝试连接到集群。

  primary:节点已处于集群中,在新节点加入时,选取donor进行数据同步时会产生的状态。

  joiner:节点处于等待接收/接收数据同步文件时的状态。

  joined:节点完成数据同步的工作,尝试保持和集群进度一致。

  synced:节点正常提供服务的状态,表示已经同步完成并和集群进度保持一致。

  doner:节点处于为新加入的节点提供全量数据时的状态。


推荐阅读
  • 在互联网公司中,MySQL是使用最多的数据库,那么在并发量大、数据量大的互联网业务中,如何高效的使用MySQL才能保证服务的稳定呢?根据本人多年运维管理经验的总结,梳理了一些核心的 ... [详细]
  • 高可用架构_MySQL高可用架构设计
    文章来自于https:www.jianshu.compd3107bda2963PHP进阶学习交流QQ群:983229225Mysql复制功能介绍Mysql的复制功能提 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • Centos7安装MySql5.6
    如何在CentO ... [详细]
  • 主从复制_mysql主从复制简介
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了mysql主从复制简介相关的知识,希望对你有一定的参考价值。  ... [详细]
  • centos7如何利用yum安装mysql 8.0.12
    这篇文章将为大家详细讲解有关centos7如何利用yum安装mysql8.0.12,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有 ... [详细]
  • 如何部署Zabbix监控实现监测和报警机制
    这篇文章的知识点包括:Zabbix的安装部署、Zabbix监控的实现以及Zabbix报警机制的实现,阅读完整文相信大家对Zabbix监控的使用有了一定的认识。Zabb ... [详细]
  • MYsql_linux mysql
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了linuxmysql相关的知识,希望对你有一定的参考价值。一数据库安装查看:[[email pr ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • SQL Server 内存中OLTP内部机制概述(一)
    内存中OLTP(项目名为“Hekaton”)是一个新的完全集成到SQLServer中的数据库引擎组件。它专为访问内存常驻数据的OLTP工作负荷而进行优化。内存中OLTP有助于OLT ... [详细]
  • 数据库进入全新时代,腾讯云发布五大数据库提前布局
    8月28日,腾讯云数据库在京正式启动战略升级,宣布未来将聚焦云原生、自治、超融合三大战略方向,以用户为中心,联接未来。并在现场面向全球用户同步发布五大战略级新品,包括数据库智能管家 ... [详细]
  • MySQL/MariaDB/PerconaDB提权条件漏洞
    背景  2016年11月01日,国外安全研究员DawidGolunski在MyS ... [详细]
  • 表里|层面_ShardingJDBC第一篇:分库分表
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了ShardingJDBC第一篇:分库分表相关的知识,希望对你有一定的参考价值。文章目录 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了CentOS7编译mysql8.0.12相关的知识,希望对你有一定的参考价值。步骤一:安装 ... [详细]
author-avatar
手机用户2502923697
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有