说明

Percona XtraDB Cluster(简称PXC),是由percona公司推出的mysql集群解决方案。特点是每个节点都能进行读写,且都保存全量的数据。也就是说在任何一个节点进行写入操作,都会同步给其它所有节点写入到自己的磁盘。这点跟Oracle Rac有本质的区别,Rac是多个节点连同一个共享存储,假如Oracle的共享存储挂了,整个集群就挂了。而Mysql pxc中任何一台机器挂了,集群照常运转,因为节点间并不共享磁盘。

写在前面的注意事项(节选自官方手册)

1. 由于pxc只作用于innodb引擎,而mysql自带的系统库(mysql)里面有些表是MyISAM的存储引擎,因此不能直接对系统库(mysql)的表进行dml操作,比如INSERT INTO mysql.user...。而是使用CREATE USER...,这个是没有问题的,而且也是正确的方式。
2. 不支持LOCK TABLES和UNLOCK TABLES语句
mysql> lock tables world write;
ERROR 1105 (HY000): Percona-XtraDB-Cluster prohibits use of LOCK TABLE/FLUSH TABLE <table> WITH READ LOCK/FOR EXPORT with pxc_strict_mode = ENFORCING
3. log_output参数不能是TABLE
4. 不支持分布式事务
5. 新建表必须要有主键,否则对表进行dml操作会报以下错误
ERROR 1105 (HY000): Percona-XtraDB-Cluster prohibits use of DML command on a table (hello.world) without an explicit primary key with pxc_strict_mode = ENFORCING or MASTER
6. 推荐的节点数最小是3个

安装

准备三个节点,操作系统使用centos6.10,pxc采用rpm安装的方式,简单
节点1 ip: 10.40.16.120  hostname:mysqla
节点2 ip: 10.40.16.121  hostname:mysqlb
节点3 ip: 10.40.16.122  hostname:mysqlc

所有节点关闭防火墙

service iptables stop
chkconfig iptables off
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

所有节点安装以下rpm包

#安装percona cluster依赖包
wget ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm
wget http://www.rpmfind.net/linux/epel/6/x86_64/Packages/s/socat-1.7.2.3-1.el6.x86_64.rpm yum install -y libev-4.04-2.el6.x86_64.rpm
yum install -y socat-1.7.2.3-1.el6.x86_64.rpm #配置yum仓库
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm #安装percona cluster
yum install -y Percona-XtraDB-Cluster-57

到这里所有的安装工作就已经完成了,接下来就是修改参数文件,把这三个节点连起来组成集群

修改参数文件

需要修改的参数已经列出来了,其余不用动,注意下面这些参数有的前面有#号,需要去掉
修改节点1的参数文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

user=mysql
wsrep_cluster_address=gcomm://10.40.16.120,10.40.16.121,10.40.16.122 #集群的所有节点ip
wsrep_node_address=10.40.16.120 #本机的ip
wsrep_node_name=pxc-cluster-node-1 #本机在集群中的名字
wsrep_sst_auth="sstuser:s3cretPass" #集群间同步的用户,后面需要在节点1创建该用户

vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

server-id=1                     #集群内所有节点的id不能相同

启动节点1的mysql
/etc/init.d/mysql bootstrap-pxc  #集群的第一个节点启动必须使用该方式。如果手工将整个集群关掉了,那么重新启动集群时,应该启动最后一个被关闭的节点,且以该方式。第一个启动的节点称为donater,后面启动的节点为joiner,两者启动方式不一样,需要留意

[root@mysqla ~]# /etc/init.d/mysql bootstrap-pxc
Bootstrapping PXC (Percona XtraDB Cluster)MySQL (Percona XtraDB Cluster) is not running, but lock file (/var/lock/subsys/mysql) exists [FAILED]
Starting MySQL (Percona XtraDB Cluster).... [ OK ]

前面那个failed忽略,属于正常情况

找出root的临时密码

[root@mysqla ~]# grep "temporary password" /var/log/mysqld.log |awk -F " " '{print $11}'

&enffgG_E8Ty

修改root密码并创建同步账号(同步账号需要跟/etc/percona-xtradb-cluster.conf.d/wsrep.cnf的键值wsrep_sst_auth对应)

[root@mysqla ~]# mysql -uroot -p'&enffgG_E8Ty'
mysql> alter user root@'localhost' identified by 'root';
mysql> create user 'sstuser'@'localhost' identified by 's3cretPass';
mysql> grant process, reload, lock tables, replication client on *.* to 'sstuser'@'localhost';
mysql> flush privileges;

修改节点2的参数文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

user=mysql
wsrep_cluster_address=gcomm://10.40.16.120,10.40.16.121,10.40.16.122
wsrep_node_address=10.40.16.121
wsrep_node_name=pxc-cluster-node-2
wsrep_sst_auth="sstuser:s3cretPass"

vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

server-id=2

启动节点2的mysql
service mysql start

[root@mysqlb ~]# service mysql start
MySQL (Percona XtraDB Cluster) is not running, but lock fil[FAILED]lock/subsys/mysql) exists
Starting MySQL (Percona XtraDB Cluster)......State transfer in progress, setting sleep higher
. [ OK ]

修改节点3的参数文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

user=mysql
wsrep_cluster_address=gcomm://10.40.16.120,10.40.16.121,10.40.16.122
wsrep_node_address=10.40.16.122
wsrep_node_name=pxc-cluster-node-3
wsrep_sst_auth="sstuser:s3cretPass"

vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf

server-id=3

启动节点3的mysql
service mysql start

[root@mysqlc ~]# service mysql start
MySQL (Percona XtraDB Cluster) is not running, but lock fil[FAILED]lock/subsys/mysql) exists
Starting MySQL (Percona XtraDB Cluster)......State transfer in progress, setting sleep higher
. [ OK ]

测试
在任意节点创建一张表,注意这里创建的表必须有主键,查看其它节点是否有数据,有就表示同步完成,没有的话去看日志/var/log/mysqld.log查找原因

如果文章帮到了你,还希望你点个赞,你的点赞是我写作的最大动力,哈哈。

Percona XtraDB Cluster简易入门 - 安装篇的更多相关文章

  1. Percona XtraDB Cluster 5.7安装配置

    优点:1.准同步复制2.多个可同时读写节点,可实现写扩展,较分片方案更进一步3.自动节点管理4.数据严格一致5.服务高可用缺点:1.只支持innodb引擎2.所有表都要有主键3.所有的写操作都将发生在 ...

  2. Percona XtraDB Cluster(PXC) -集群环境安装

    Percona XtraDB Cluster(PXC)   ---服务安装篇   1.测试环境搭建: Ip 角色 OS PXC-version 172.16.40.201 Node1 Redhat/C ...

  3. Percona XtraDB Cluster(PXC) Mysql 集群

    Percona XtraDB Cluster(PXC)   ---原理介绍篇         目录 一.简介 1 二.优缺点 2 三.区别/局限性 3 四. PXC复制原理 4 五. 服务解释 5   ...

  4. PXC(Percona XtraDB Cluster)集群的安装与配置

    Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...

  5. docker1.12 安装pxc(Percona XtraDB Cluster )测试

    docker1.12 安装pxc(Percona XtraDB Cluster )测试

  6. 搭建高可用mysql系列(2)-- Percona XtraDB Cluster 安装

    本文主要介绍在 centos 下 Percona XtraDB Cluster(下文简称PXC) 的安装, 个人的系统版本信息如下: [root@c2-d09 worker]# more /etc/r ...

  7. 如何搭建Percona XtraDB Cluster集群

    一.环境准备 主机IP                     主机名               操作系统版本     PXC 192.168.244.146     node1           ...

  8. 使用percona xtradb cluster的IST方式添加新节点

    使用percona xtradb cluster的IST(Incremental State Transfer)特性添加新节点,防止新节点加入时使用SST(State SnapShop Transfe ...

  9. mysql高可用之PXC(Percona XtraDB Cluster)

    简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...

随机推荐

  1. Tyvj 1953 Normal:多项式,点分治

    Decription: 某天WJMZBMR学习了一个神奇的算法:树的点分治! 这个算法的核心是这样的: 消耗时间=0 Solve(树 a) 消耗时间 += a 的 大小 如果 a 中 只有 1 个点, ...

  2. 集合系列 List(五):Stack

    Stack 是先进后出的栈结构,其并不直接实现具体的逻辑,而是通过继承 Vector 类,调用 Vector 类的方法实现. public class Stack<E> extends V ...

  3. Springcloud 中 SpringBoot 配置全集 (收藏版)

    Springcloud 中 SpringBoot 配置全集 (收藏版) 疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 前言 疯狂创客圈(笔者尼恩创建的高并发研习社群 ...

  4. md2all 简单实用

    . 简单使用 md2all 使用地址:http://md.aclickall.com/ . 常用操作 #代表标题等级 英文下```java(语言)``` 代表代码块

  5. PHP 核心特性 - 错误处理

    错误与异常 错误,可以理解程序本身的错误,例如语法错误.而异常则更偏向于程序运行不符合预期或者不符合正常流程:对于 PHP 语言而言,处理错误和处理异常使用的机制完全不同,因此很容易让人产生困惑. 例 ...

  6. PAT 1010 Radix 进制转换+二分法

    Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...

  7. SpringBoot中maven打包,启动报没有主清单属性

    有时候会出现这种情况,看一下项目的pom中是否有这个插件配置,没有的话需要引入. <build> <plugins> <plugin> <groupId> ...

  8. ASP.NET Core部署系列二:发布到CentOS上

    前言: 在上一节中,通过一系列的步骤,已经将项目部署到IIS上,虽然遇到了一些问题,但最终解决并成功运行了.而在这一节中,将尝试通过linux系统的环境下,部署项目,实现Net Core跨平台的亮点. ...

  9. goweb-搭建服务

    web应用简介 Web 应用在我们的生活中无处不在.看看我们日常使用的各个应用程序,它们要 么是 Web 应用,要么是移动 App 这类 Web 应用的变种.无论哪一种编程语言,只要 它能够开发出与人 ...

  10. Python爬虫实战教程:爬取网易新闻

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Amauri PS:如有需要Python学习资料的小伙伴可以加点击 ...