快速体验Percona XtraDB Cluster(PXC)

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

一、PXC结构及特性

1、结构及基本描述

群集由节点组成。建议的配置是至少有3个节点,但你可以使它
2节点运行。

每个节点可以是常规MySQL或者Percona Server程序。支持将现有的MySQL/Percona Server为节点提升为集群节点。也可以从集群中分离节点,使它作为一个普通的服务器。

每个节点包含完整的数据副本。

2、优点及限制

PXC的优点:

  服务高可用

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

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

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

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

  完全兼容MySQL;

PXC局限性:

  只支持InnoDB引擎;

  所有表都要有主键;

  不支持LOCK TABLE等显式锁操作;

  锁冲突、死锁问题相对更多;

  不支持XA;

  集群吞吐量/性能取决于短板;

  新加入节点采用SST时代价高;

  存在写扩大问题;

  如果并发事务量很大的话,建议采用InfiniBand网络,降低网络延迟;

二、安装及配置

1、安装环境

在每个群集节点上进行以下配置

### OS版本
# cat /etc/issue
CentOS release 6.7 (Final)
Kernel \r on an \m

###将以下内容添加到所有节点
# vi /etc/hosts

192.168.1.132 node132 #主节点
192.168.1.133 node133
192.168.1.135 node135

mysql> select 'Leshami' Author,'http://blog.csdn.net/leshami' Blog,'645746311' QQ;
+---------+------------------------------+-----------+
| Author  | Blog                         | QQ        |
+---------+------------------------------+-----------+
| Leshami | http://blog.csdn.net/leshami | 645746311 |
+---------+------------------------------+-----------+

###关闭防火墙
# service iptables stop
# chkconfig iptables off
# vi /etc/selinux/config
    SELINUX=disabled   #修改该项为disabled
# setenforce 0       #立即生效,而无需重启OS

2、配置yum源及安装PXC(所有节点)

###配置epel源

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

###基于YUM方式安装
# yum -y install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr  ncurses5-devel
  # yum -y install perl-DBD-MySQL  perl-DBI  perl-Time-HiRes

# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
# yum install Percona-XtraDB-Cluster-56

### 如果服务器无法直接连接到yum源,使用RPM安装:
# rpm -Uvh autoconf-2.63-5.1.el6.noarch.rpm
# rpm -Uvh bzr-2.1.1-2.el6.x86_64.rpm
# rpm -Uvh compat-readline5-5.2-17.1.el6.x86_64.rpm
# rpm -Uvh libaio-devel-0.3.107-10.el6.x86_64.rpm
# rpm -Uvh perl-DBI-1.609-4.el6.x86_64.rpm
# rpm -Uvh perl-DBD-MySQL-4.013-3.el6.x86_64.rpm
# rpm -Uvh automake-1.11.1-4.el6.noarch.rpm
# rpm -Uvh cmake-2.8.12.2-4.el6.x86_64.rpm
# rpm -Uvh libstdc++-4.4.7-18.el6.x86_64.rpm
# rpm -Uvh libstdc++-devel-4.4.7-18.el6.x86_64.rpm
# rpm -Uvh libgomp-4.4.7-18.el6.x86_64.rpm
# rpm -Uvh gcc-c++-4.4.7-18.el6.x86_64.rpm
# rpm -Uvh cpp-4.4.7-18.el6.x86_64.rpm
# rpm -Uvh libgcc-4.4.7-18.el6.x86_64.rpm
# rpm -Uvh libev-4.15-1.el6.rf.x86_64.rpm
# rpm -Uvh socat-1.7.2.3-1.el6.x86_64.rpm
# rpm -Uvh mysql-libs-5.1.73-8.el6_8.x86_64.rpm
# rpm -Uvh percona-xtrabackup-2.3.8-1.el6.x86_64.rpm
# rpm -ivh Percona-XtraDB-Cluster-shared-56-5.6.35-26.20.2.el6.x86_64.rpm
# rpm -ivh Percona-XtraDB-Cluster-galera-3-3.20-2.el6.x86_64.rpm
# rpm -ivh Percona-XtraDB-Cluster-client-56-5.6.35-26.20.2.el6.x86_64.rpm
# rpm -ivh Percona-XtraDB-Cluster-devel-56-5.6.35-26.20.2.el6.x86_64.rpm
# rpm -ivh Percona-XtraDB-Cluster-server-56-5.6.35-26.20.2.el6.x86_64.rpm

3、配置主节点


###本演示中主节点为:192.168.1.132
初始化主节点

# /usr/bin/mysql_install_db --basedir=/usr --user=mysql

启动mysql
# service mysql start

修改密码
# /usr/bin/mysqladmin -u root -h localhost password 'pass'

创建用户
mysql> grant reload,lock tables,replication client on *.* to 'sstuser'@'%' identified by 'xxx';

关闭mysql
# service mysql stop

修改/etc/my.cnf增加以下信息:

[mysql]
user=root
password=pass

[mysqld]
datadir=/var/lib/mysql
user=mysql
server_id=132
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.1.132,192.168.1.133,192.168.1.135"
wsrep_sst_auth=wsrep_sst_auth=sstuser:xxx
wsrep_cluster_name=my_pxc_cluster
wsrep_sst_method=rsync
wsrep_node_address=192.168.1.132
wsrep_slave_threads=2
innodb_locks_unsafe_for_binlog=1
innodb_autoinc_lock_mode=2
binlog_format=ROW

启动mysql及PXC服务
/etc/init.d/mysql bootstrap-pxc

4、配置其他节点

其他节点上修改配置文件如下,以下以192.168.1.133为例
[mysql]
user=root
password=pass

[mysqld]
datadir=/var/lib/mysql
user=mysql
server_id=133
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.1.132,192.168.1.133,192.168.1.135"
wsrep_sst_auth=wsrep_sst_auth=sstuser:xxx
wsrep_cluster_name=my_pxc_cluster
wsrep_sst_method=rsync
wsrep_node_address=192.168.1.133
wsrep_slave_threads=2
innodb_locks_unsafe_for_binlog=1
innodb_autoinc_lock_mode=2
binlog_format=ROW

注:各群集节点上server_id和wsrep_node_address设置为不同的值

配置文件修改完毕后,启动当前节点mysql
注,集群非初始主节点,则无需初始化数据库

# service mysql start

mysql> show global status like 'wsrep%';
+------------------------------+--------------------------------------+
| Variable_name                | Value                                |
+------------------------------+--------------------------------------+
| wsrep_local_state_uuid       | 05e19a0d-379c-11e7-8547-f6f31f261bbc |
| wsrep_protocol_version       | 7                                    |
| wsrep_last_committed         | 6                                    |
| wsrep_replicated             | 2                                    |
                ................                                      |
| wsrep_cert_interval          | 0.000000                             |
| wsrep_incoming_addresses     | 192.168.1.132:3306,192.168.1.133:330 |
| 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             | baf33684-37ad-11e7-90ea-1e5d080abc7d |
| wsrep_cluster_conf_id        | 9                                    |
| wsrep_cluster_size           | 2 |
| wsrep_cluster_state_uuid     | 05e19a0d-379c-11e7-8547-f6f31f261bbc |
| wsrep_cluster_status         | Primary                              |
| wsrep_connected              | ON                                  |
| wsrep_local_bf_aborts        | 0                                    |
| wsrep_local_index            | 0                                    |
| wsrep_provider_name          | Galera                               |
| wsrep_provider_vendor        | Codership Oy <info@codership.com>    |
| wsrep_provider_version       | 3.20(r7e383f7)                       |
| wsrep_ready                  | ON                                   |
+------------------------------+--------------------------------------+
59 rows in set (0.01 sec)

关注:wsrep_cluster_size 表示可用节点数,当前为2.wsrep_connected为ON,表示已连接。

另外一个节点如法炮制。

5、验证结果

在任意节点建表以及更新数据,在其他节点均可以见。
mysql> show status like 'wsrep_cluster_status';
+----------------------+---------+
| Variable_name        | Value   |
+----------------------+---------+
| wsrep_cluster_status | Primary |
+----------------------+---------+
1 row in set (0.00 sec)

mysql> use test;

mysql> create table t(id int,val varchar(20));
Query OK, 0 rows affected (0.04 sec)

mysql> insert into t values(1,'robin');
Query OK, 1 row affected (0.01 sec)

--以下查询结果为133节点返回数据
mysql> select * from t;
+------+-------+
| id   | val   |
+------+-------+
|    1 | robin |
+------+-------+

--在其余2节点验证,应该可以看到数据。
--反之,在某一个节点上插入数据,其余节点也可以看到。

时间: 2025-01-03 09:14:19

快速体验Percona XtraDB Cluster(PXC)的相关文章

Percona XtraDB Cluster(PXC)掉电无法正常启动

办公室掉电,PXC集群环境无法启动,也就是说整个集群的状态处于丢失的情形.因此需要采取强制的方式来进行,见下面的描述. 一.故障现象 查看mysql错误日志如下: 2017-07-08 09:05:50 3913 [Note] WSREP: GCache history reset: old(0947d0da-4ffe-11e7-b169-137e84a69003:0) -> new(0947d0da-4ffe-11e7-b169-137e84a69003:112047) 2017-07-08

Percona XtraDB Cluster 5.7.18-29.20 发布

Percona XtraDB Cluster 5.7.17-27.20 发布了,二进制文件可在 下载区 或 软件仓库 中下载.(注意:你也可以从 Docker Hub 仓库中的镜像运行 Docker 容器) Percona XtraDB Cluster 5.7.17-27.20 基于以下这些项目: Percona Server 5.7.18-15 Galera Replication library 3.20 wsrep API version 2 该版本除了上游更改和相关包的修复外,对主要组件

快速体验mongoDB分片

随着大数据海量数据的不断涌现,分布式,横向扩展是系统扩展的重要方式之一.基于文档的NoSQL领头羊mongoDB正是这样一个分布式系统,通过分片集群将所有数据分成数据段,并将每个数据段写入不同的节点.本文简要描述mongoDB分片特性,以及给出演示,快速体验mongoDB分片方式. 一.为什么需要shard 存储容量需求超出单机磁盘容量 活跃的数据集超出单机内存容量,导致很多请求都要从磁盘读取数据,影响性能 写IOPS超出单个mongoDB节点的写服务能力 mongoDB支持自动分片以及手动分片

一分钟了解阿里云产品:移动推送快速体验

跟着demo快速体验移动推送   首先成为阿里云用户,使用阿里云账号登录移动推送.登录后,控制台首页为移动推送产品的APP列表.   下面来介绍阿里移动推送服务使用过程.   第一步:创建APP,配置应用,下载oneSDK.   在APP列表页的右上角,点击"创建APP",创建APP后,通过页面引导或APP列表中的"配置"操作对应用进行推送配置.   下载oneSDK:可以在应用列表页点击 "下载SDK" 链接进入,也可以在单个 App详情 页后

1.58元/小时起快速体验 Hadoop &amp; Spark ,为你助力大数据计算

随着全球双11狂欢节的到来,阿里云优惠措施惠及中小企业.除充值返现外,E-MapReduce 同步限时打折.1.58元/小时起,快速体验 Hadoop & Spark 等,阿里云为你助力大数据计算. E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统.包括Hadoop.Spark.HBase,为用户提供集群.作业.数据等管理的一站式大数据处理分析服务. 赶快来这里,点击使用 限时打折优惠 测试体验版:最低至1.58元/小时,快速体验Hadoop.Spark 包

《 FreeSWITCH权威指南》——3.2 快速体验

3.2 快速体验 FreeSWITCH的功能确实非常丰富和强大,在进一步学习之前我们先来一次完整的体验. FreeSWITCH默认的配置是一个SOHO PBX(家用电话小交换机),那么我们本节的目标就是从零开始安装,实现分机互拨电话,测试各种功能,并通过添加一个SIP-PSTN网关拨打PSTN电话.这样,即使你没有任何使用经验,也应该能顺利学完本章,从而建立一个直观的认识.在体验过程中,你会遇到一点稍复杂的配置,如果不能完全理解,也不用担心,我们在后面会详细介绍.当然,如果你是一个很有经验的 F

快速体验MyCAT

        横空出世的MyCat截至到2015年4月,保守估计已经有超过60个项目在使用,主要应用在电信领域.互联网项目,大部分是交易和管理系统,少量是信息系统.比较大的系统中,数据规模单表单月30亿.本人也初步尝鲜,体验了一把,见以下描述,供大家参考. 一.安装mycat MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用 了 JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行. 环境准备 1) JDK

Galera Cluster:一种新型的高一致性MySQL集群架构

1. 何谓Galera Cluster 何谓Galera Cluster?就是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster,都是基于Galera的,所以这里都统称为Galera Cluster了,因为Galera本身是具有多主特性的,所以Galera Cluster也就是multi-master的集群架构,如图1所示: 图1

Percona Live 2016 PPT整理

前言 PS1: 写在前面:最近比较忙,这篇参会总结一直拖到现在才完成,主要大概把感兴趣的slide按照不同的公司做了个分门别类,方便自己有空再深入的学习阅读. PS2: 有极个别PPT的链接挂了,过一段时间再刷刷看 一年一度的Percona Live会议如期在美国Santa Clara会展中心举行,这里聚集了最全面的MySQL社区最前沿的Topic,大量MySQL社区的大神参与该会议.与往年不同,本年度的Percona Live会议全名为"Percona Live Data Performanc