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. 洛谷 P4026 [SHOI2008]循环的债务

    水水的dp 设f[i][a][b]表示交换完前i种面值的钞票,第一个人有a元,第二个人有b元的最小代价 直接转移就行了 需要注意的是算的式子 第1个人\(\Delta A\),第二个人\(\Delta ...

  2. spring学习笔记 星球日two - 注解方式配置bean

    注解要放在要注解的对象的上方 @Autowired private Category category; <?xml version="1.0" encoding=" ...

  3. MySQL易忘知识点梳理

    一.零碎知识 1.mysql where子句区分大小写:WHERE BINARY 2.判断是否为null,只能用is null,is not null,不能用=null或!=null 3.函数 4.S ...

  4. Django + Ansible 主机管理(有源码)

    本文给大家介绍如何利用 Django + Ansible 进行 Web 项目管理.   Django介绍 一个可以使 Web 开发工作愉快并且高效的 Web 开发框架,能够以最小的代价构建和维护高质量 ...

  5. python通讯录系统

    ---恢复内容开始--- 对于一般的通讯录系统,主要有两个参数:姓名和电话号码,所以可以利用python编程里面的字典来进行建立之间的所属关系, 可以利用以下代码简单实现: print('|--- 欢 ...

  6. jsp内置对象 转发与重定向的区别

    jsp 内置对象  转发与重定向的比较 重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重 ...

  7. Python函数初识二

    一.变量的作用域LEGB 1.1.变量的作用域 在Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名 ...

  8. OpenCV-Python(1)在Python中使用OpenCV进行人脸检测

    OpenCV是如今最流行的计算机视觉库,而我们今天就是要学习如何安装使用OpenCV,以及如何去访问我们的摄像头.然后我们一起来看看写一个人脸检测程序是如何地简单,简单到只需要几行代码. 在开始之前, ...

  9. [linux] 利用PROMPT_COMMAND实现命令审计

    网上查了实现命令审计大概有以下几种: 查不到了,改天再补充 以下环境基于CentOS 6 1.修改history时间格式 echo 'HISTTIMEFORMAT="%F %T " ...

  10. Python20-Day03

    ##########文件操作相关########## 一.文件操作 文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来. 文件操作的流程: * ...