基于Centos7的PXC集群环境搭建

1. PXC简介

Percona XtraDB Cluster(下文简称PXC)是一个开源的MySQL高可用的解决方案,它集成了Percona服务器和Percona XtraBackup和Galera库共同运用的同步多主复制,也就是说PXC是基于Galere协议的高可用方案,Galera是Codership提供的多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据一致性。基于Galera的高可用方案主要有MariaDB Galera ClusterPercona XtraDB Cluster,目前PXC用的会比较多一些,

  • PXC是由节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上;
  • 每个节点都是普通的MySQL/Percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器;
  • 每个节点都包含完整的数据副本;
  • MariaDB的集群原理跟PXC一样,maridb-cluster其实就是PXC,两者原理是一样的。

2. PXC特性

  1. 同步复制,事务要么在节点中都提交要么不提交;
  2. 多主复制,可以在任意节点进行Write-Read操作;
  3. 在从服务器上并行应用事件,真正意义上的并行复制;
  4. 节点自动配置,数据一致性,不再是异步复制;
  5. PXC最大的优势:强一致性、无同步延迟

3. PXC优缺点

  • 优点:
    1. 服务高可用;
    2. 数据同步复制(并发复制),几乎无延迟;
    3. 多个节点支持同时读写,可实现写扩展,不过最好事先进行分库分表,让各个节点分别写不同的库或者表,避免让galera解决数据冲突;
    4. 新节点可以自动部署,部署操作简单;
    5. 数据严格一致性,尤其适合电商类应用(订单,金额等敏感数据);
    6. 完全兼容MySQL。
  • 缺点:
    1. 只支持InnoDB引擎;低版本(5.6.20)的复制只支持InnoDB引擎,其他存储引擎的更改不复制。然而,DDL(Data Definition Language) 语句在statement级别被复制,并且,对mysql.*表的更改会基于此被复制。例如CREATE USER…语句会被复制,但是 INSERT INTO mysql.user…语句则不会;
    2. PXC集群一致性控制机制,事有可能被终止,原因如下:集群允许在两个节点上同时执行操作同一行的两个事务,但是只有一个能执行成功,另一个会被终止,集群会给被终止的。客户端返回死锁错误(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK));
    3. 写入效率取决于节点中最弱的一台,因为PXC集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功;
    4. 所有表都需要有主键;
    5. 集群吞吐量/性能取决于短板;
    6. 新加入节点采用SST时代价高;
    7. 锁冲突、死锁问题相对更多。

4. PXC常识

  • 端口号

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

    4444:请求SST SST: 指数据一个镜像传输 xtrabackup , rsync ,mysqldump;

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

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

  • 名词介绍

    WS:write set 写数据集

    IST: Incremental State Transfer 增量同步

    SST:State Snapshot Transfer 全量同步

  • 状态机变化阶段

    OPEN: 节点启动成功,尝试连接到集群,如果失败则根据配置退出或创建新的集群;

    PRIMARY: 节点处于集群PC中,尝试从集群中选取donor进行数据同步;

    JOINER: 节点处于等待接收/接收数据文件状态,数据传输完成后在本地加载数据;

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

    SYNCED:节点正常提供服务:数据的读写,集群数据的同步,新加入节点的sst请求;

    DONOR(贡献数据者):节点处于为新节点准备或传输集群全量数据状态,对客户端不可用。

  • 状态机变化因素

    新节点加入集群;

    节点故障恢复;

    节点同步失败。

  • 传输SST的方法

    mysqldump、xtrabackup、rsync

  • 配置文件各项配置意义
    wsrep_provider:指定Galera库的路径

    wsrep_cluster_name:Galera集群的名称

    wsrep_cluster_address:Galera集群中各节点地址。地址使用组通信协议gcomm://(group communication)

    wsrep_node_name:本节点在Galera集群中的名称

    wsrep_node_address:本节点在Galera集群中的通信地址

    wsrep_sst_method:state_snapshot_transfer(SST)使用的传输方法,可用方法有mysqldump、rsync和xtrabackup,前两者在传输时都需要对Donor加全局只读锁(FLUSH TABLES WITH READ LOCK),xtrabackup则不需要(它使用percona自己提供的backup lock)。强烈建议采用xtrabackup

    wsrep_sst_auth:在SST传输时需要用到的认证凭据,格式为:“用户:密码”

    pxc_strict_mode:是否限制PXC启用正在试用阶段的功能,ENFORCING是默认值,表示不启用

    binlog_format:二进制日志的格式。Galera只支持row格式的二进制日志

    default_storage_engine:指定默认存储引擎。Galera的复制功能只支持InnoDB

    innodb_autoinc_lock_mode:只能设置为2,设置为0或1时会无法正确处理死锁问题

5. PXC集群搭建

5.1 环境描述

本文档所涉及IP均为虚假IP。

Name IP
master 192.168.5.139
test1
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值