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. springboot之websocket,STOMP协议

    一.WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在 ...

  2. asp.net core 自定义中间件和service

    首先新建项目看下main方法: public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel ...

  3. Linux shell 编写(2)

    shell脚本中变量的定义和使用: 1.shell中变量名可以由字母,数字,下划线组成,但数字不能作为变量名的第一个字符. 2.通过赋值符号"="来定义一个变量 如:myname= ...

  4. python时间模块详解(time模块)

    time 模块 -- 时间获取和转换 time 模块提供各种时间相关的功能 在 Python 中,与时间处理有关的模块包括:time,datetime 以及 calendar 必要说明: 虽然这个模块 ...

  5. alibaba/Sentinel 分布式 系统流量防卫兵

    Sentinel: 分布式系统的流量防卫兵 Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多 ...

  6. LeetCode-63.不同路径Ⅱ

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 现在考虑网 ...

  7. ipython快捷键操作及常用命令

    Ipython shell命令- Ctrl-P 或上箭头键 后向搜索命令历史中以当前输入的文本开头的命令- Ctrl-N 或下箭头键 前向搜索命令历史中以当前输入的文本开头的命令- Ctrl-R 按行 ...

  8. [Paper Reading] Image Captioning using Deep Neural Architectures (arXiv: 1801.05568v1)

    Main Contributions: A brief introduction about two different methods (retrieval based method and gen ...

  9. docker pull下来的镜像放哪儿了?

    本机docker版本 docker –version Docker version 1.进入docker 目录 root@Rightsec:~# cd /var/lib/docker root@Rig ...

  10. python所遇到的坑

    我是在ubuntu中,自带的有python2,python3有安装了anaconda套件,所以python的版本很多,曾经想删除过不用的python. 先执行 sudo apt remove pyth ...