PXC简介

Percona XtraDB Cluster(简称PXC集群)提供了MySQL高可用的一种实现方法。
1.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。
2.每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。
3.每个节点都包含完整的数据副本。
   PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(使用了Galera library,一个通用的用于事务型应用的同步、多主复制插件)。
PXC特性:
1,同步复制,事务要么在所有节点提交或不提交。
2,多主复制,可以在任意节点进行写操作。
3,在从服务器上并行应用事件,真正意义上的并行复制。
4,节点自动配置,数据一致性,不再是异步复制。
PXC劣势:
    1、 当前版本(5.6.20)的复制只支持InnoDB引擎,其他存储引擎的更改不复制。然而,DDL(Data Definition Language) 语句在statement级别被复制,并且,对mysql.*表的更改会基于此被复制。例如CREATE USER...语句会被复制,但是 INSERT INTO mysql.user...语句则不会。(也可以通过wsrep_replicate_myisam参数开启myisam引擎的复制,但这是一个实验性的参数)。
    2、PXC集群一致性控制机制,事有可能被终止,原因如下:集群允许在两个节点上同时执行操作同一行的两个事务,但是只有一个能执行成功,另一个会被终止,集群会给被终止的客户端返回死锁错误(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
    3、写入效率取决于节点中最弱的一台,因为PXC集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。

原理描述

分布式系统的CAP理论:
C 一致性,所有的节点数据一致
A 可用性,一个或者多个节点失效,不影响服务请求
P 分区容忍性,节点间的连接失效,仍然可以处理请求
任何一个分布式系统,需要满足这三个中的两个

安装部署

环境描述

三个node节点

node #1
hostname: percona1
IP: 192.168.100.7
node #2
hostname: percona2
IP: 192.168.100.8
node #3
hostname: percona3
IP: 192.168.100.9

基础环境包

可以选择源码或者yum,在此使用yum安装。
三个node节点都要执行以下操作。

基础环境

  1. yum -y groupinstall Base Compatibility libraries Debugging Tools Dial-up Networking suppport Hardware monitoring utilities Performance Tools Development tools
组件安装
  1. yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm -y
  2. yum install Percona-XtraDB-Cluster-55 -y

数据库配置

选择一个node作为名义上的master,咱们以node1为master,以下操作只在node1上执行。

只需要修改mysql的配置文件--/etc/my.cnf

说明:这里的IP地址是内网地址。

  1. [root@i-kysyolko ~]# cat /etc/my.cnf
  2. # Template my.cnf for PXC
  3. # Edit to your requirements.
  4. [mysqld]
  5. datadir=/var/lib/mysql
  6. user=mysql
  7. # Path to Galera library
  8. wsrep_provider=/usr/lib64/libgalera_smm.so
  9. # Cluster connection URL contains the IPs of node#1, node#2 and node#3
  10. wsrep_cluster_address=gcomm://192.168.100.7,192.168.100.8,192.168.100.9
  11. # In order for Galera to work correctly binlog format should be ROW
  12. binlog_format=ROW
  13. # MyISAM storage engine has only experimental support
  14. default_storage_engine=InnoDB
  15. # This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
  16. innodb_autoinc_lock_mode=2
  17. # Node #1 address
  18. wsrep_node_address=192.168.100.7
  19. # SST method
  20. wsrep_sst_method=xtrabackup-v2
  21. # Cluster name
  22. wsrep_cluster_name=my_centos_cluster
  23. # Authentication for SST method
  24. wsrep_sst_auth="sstuser:s3cret"
  25. [mysqld_safe]
  26. pid-file = /run/mysqld/mysql.pid
  27. syslog
  28. !includedir /etc/my.cnf.d

启动数据库

CentOS6:/etc/init.d/mysql bootstrap-pxc

CentOS7:systemctl start mysql@bootstrap.service

配置数据库

  1. mysql> show status like 'wsrep%';
  2. +----------------------------+--------------------------------------+
  3. | Variable_name | Value |
  4. +----------------------------+--------------------------------------+
  5. | wsrep_local_state_uuid | c2883338-834d-11e2-0800-03c9c68e41ec |
  6. ...
  7. | wsrep_local_state | 4 |
  8. | wsrep_local_state_comment | Synced |
  9. ...
  10. | wsrep_cluster_size | 1 #主要看这里 |
  11. | wsrep_cluster_status | Primary |
  12. | wsrep_connected | ON |
  13. ...
  14. | wsrep_ready | ON |
  15. +----------------------------+--------------------------------------+
  16. 40 rows in set (0.01 sec)
  17. # 数据库用户名密码的设置
  18. mysql@percona1> UPDATE mysql.user SET password=PASSWORD("Passw0rd") where user='root';
  19. # 创建、授权、同步账号
  20. mysql@percona1> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';
  21. mysql@percona1> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
  22. mysql@percona1> FLUSH PRIVILEGES;

node2、node3节点配置

接下来进行其它节点的配置,上面的组件都已经安装完成。现在直接进行数据库的配置。
只需要修改第26行,当前node的IP地址。两个node都是只是修改这个地址即可。

wsrep_node_address=192.168.100.8

  1. [root@i-kysyolko ~]# cat /etc/my.cnf
  2. # Template my.cnf for PXC
  3. # Edit to your requirements.
  4. [mysqld]
  5. datadir=/var/lib/mysql
  6. user=mysql
  7. # Path to Galera library
  8. wsrep_provider=/usr/lib64/libgalera_smm.so
  9. # Cluster connection URL contains the IPs of node#1, node#2 and node#3
  10. wsrep_cluster_address=gcomm://192.168.100.7,192.168.100.8,192.168.100.9
  11. # In order for Galera to work correctly binlog format should be ROW
  12. binlog_format=ROW
  13. # MyISAM storage engine has only experimental support
  14. default_storage_engine=InnoDB
  15. # This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
  16. innodb_autoinc_lock_mode=2
  17. # Node #1 address
  18. wsrep_node_address=192.168.100.8
  19. # SST method
  20. wsrep_sst_method=xtrabackup-v2
  21. # Cluster name
  22. wsrep_cluster_name=my_centos_cluster
  23. # Authentication for SST method
  24. wsrep_sst_auth="sstuser:s3cret"
  25. [mysqld_safe]
  26. pid-file = /run/mysqld/mysql.pid
  27. syslog
  28. !includedir /etc/my.cnf.d

启动数据库

CentOS6:/etc/init.d/mysql start

CentOS7:systemctl start mysql.service

说明:

1、除了名义上的master之外,其它的node节点只需要启动mysql即可。

2、节点的数据库的登陆和master节点的用户名密码一致,自动同步。所以其它的节点数据库用户名密码无须重新设置。

测试

在任意一个node上,进行操作,然后去其它的节点上看是否取得相同的结果。

官方引用:

https://www.percona.com/doc/percona-xtradb-cluster/5.5/howtos/centos_howto.html

Installing Percona XtraDB Cluster on CentOS的更多相关文章

  1. 如何搭建Percona XtraDB Cluster集群

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

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

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

  3. Percona XtraDB Cluster集群

    官网参考地址: https://www.percona.com/doc/percona-xtradb-cluster/LATEST/configure.html 前期准备: 都用的root权限或使用s ...

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

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

  5. 1.2 Percona XtraDB Cluster Limitations

    摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该 ...

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

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

  7. Percona XtraDB Cluster(转)

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

  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. LOJ #6089. 小 Y 的背包计数问题

    LOJ #6089. 小 Y 的背包计数问题 神仙题啊orz. 首先把数分成\(<=\sqrt n\)的和\(>\sqrt n\)的两部分. \(>\sqrt n\)的部分因为最多选 ...

  2. cogs1685 【NOI2014】魔法森林 Link-Cut Tree

    LCT练手好题啊. SPFA的做♂FA是把边按照a排序,然后加一条权值为b的边跑SPFA,不断更新答案.很好的做♂FA,但复杂度无♂FA保证. LCT的做♂FA类似,也是把边按照a排序,然后也是加一条 ...

  3. systemctl start nginx timeout

    昨儿个研究docker ,搭建私有仓库.想着用nginx代理一下仓库地址.方式使用80端口,于是愉快的下载,编辑,安装nginx.创建nginx.service作为系统启动服务. 结果......,多 ...

  4. Siki_Unity_7-4_高自由度沙盘游戏地图生成_MineCraft_Uniblocks插件(可拓展)

    Unity 7-4 高自由度沙盘游戏地图生成 MineCraft (插件Uniblocks) 任务1&2&3&4 素材 && 课程演示 && 课 ...

  5. Mysql启动失败解决方案 - 个人经验可能不适合所有场景

    以前一直用的Mysql5.5,安装程序是一个exe程序,安装完了相应的服务也给我注册好了,然后直接启动连接即可. 最近升级到了8.0.15,发现和以前不一样了. 8.0.15下载地址 安装解压之后目录 ...

  6. VS Code配置初探

    之前一直在用 Webstorm,看现在 VS Code 热度那么高,想着尝试一下. 熟悉编辑器的快捷键 VS Code 快捷键一览 安装使用到的插件 Chinese(修改你的编辑器语言,默认英文) E ...

  7. Redis初探(windows/linux安装)

    最近在学习Redis,先看看简介: Redis 是完全开源免费的,遵守BSD协议(可以自由的使用,修改源代码的协议,当然需要满足一定的条件),是一个高性能的key-value数据库. 特点&& ...

  8. OTRS

    更新OTRS root@localhost密码: sudo -u otrs /opt/otrs/bin/otrs.Console.pl Admin::User::SetPassword root@lo ...

  9. 基于openvswitch+Docker构建SDN网络测试环境 (使用ovs-docker进行构建)

    这是一篇之前写的笔记,主要记录了使用openvswitch + Docker 等进行一个小型的SDN网络搭建的操作步骤.由于 之前临时有其他任务,耽搁了一下,最近开始重新整理,并计划开发一个简单的Py ...

  10. Java创建对象的动作分析

    一.Java创建对象时将对象存放到内存的堆中. 创建对象时先执行类成员的初始化,然后才会调用构造函数初始化对象, package com.test.createsort; public class C ...