Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法。集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。

PXC原理描述:

  1. 分布式系统的CAP理论:
  2. C:一致性,所有的节点数据一致
  3. A:可用性,一个或者多个节点失效,不影响服务请求
  4. P:分区容忍性,节点间的连接失效,仍然可以处理请求
  5. 其实,任何一个分布式系统,需要满足这三个中的两个。
  6. PXC的优点:
  7. 1)服务高可用;
  8. 2)数据同步复制(并发复制),几乎无延迟;
  9. 3)多个可同时读写节点,可实现写扩展,不过最好事先进行分库分表,让各个节点分别写不同的表或者库,避免让galera解决数据冲突;
  10. 4)新节点可以自动部署,部署操作简单;
  11. 5)数据严格一致性,尤其适合电商类应用;
  12. 6)完全兼容MySQL; 

一些名词介绍:

  1. WSwrite set写数据集,写/更新事务
  2. ISTIncremental State Transfer 增量同步
  3. SSTState Snapshot Transfe 全量同步。
  4. SST支持的方法有:mysqldumprsync xtrabackup
    mysqldumprsync同步需要READ LOCK (SST applies FLUSH TABLES WITH READ LOCK command)
  5. xtrabackup 在整个同步数据过程中不需要READ LOCK
    配置参数:wsrep_sst_method=xtrabackup-v2
  6. UUID:节点状态改变及顺序的唯一标识
  7. GTIDGlobal Transaction ID,由UUIDsequence number偏移量组成。wsrep api中定义的集群内部全局事务id,用于记录集群中发生状态改变的唯一标识以及队列中的偏移量。
  8. WSRWP API:在DBMS库和wsrep provider之间提供接口 

PXC环境所涉及的端口:

  1. #mysql实例端口:3306
  2. #PXC cluster相互通讯的端口:4567
  3. #用于SST传送的端口:4444
  4. #用于IST传送的端口:4568

1.有3个节点

  1. pxc_node0 192.0.0.197
  2. pxc_node1 192.0.0.198
  3. pxc_node2 192.0.0.199 

2.防火墙设置 

01关闭防火墙

  1. # systemctl stop firewalld.service
  2. # systemctl disable firewalld.servie

02或开启防火墙对应的端口:

  1. firewall-cmd --zone=public --add-port=3306/tcp --permanent
    firewall-cmd --zone=public --add-port=4444/tcp --permanent
    firewall-cmd --zone=public --add-port=4567/tcp --permanent
    firewall-cmd --zone=public --add-port=4568/tcp --permanent

开放完4个端口后,重新加载防火墙规则

  1. firewall-cmd --reload 

3.关闭SELINUX ,安全增强型 Linux(Security-Enhanced Linux)SELinux主要由美国国家安全局开发

01执行命令 永久关闭Selinux

  1. vi /etc/selinux/config SELINUX属性值设置成disabled  

02或者执行命令 Linux临时关闭Selinux

  1. setenforce 0

4.下载安装,在pxc_node0,pxc_node2,pxc_node2分别进行如下安装 

  1. 基础安装
  2. [root@percona1 ~]# yum -y groupinstall Base Compatibility libraries Debugging Tools Dial-up Networking suppport Hardware monitoring utilities Performance Tools Development tools
  3.    
  4. 组件安装
  5. [root@percona1 ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm -y
  6. [root@percona1 ~]# yum install Percona-XtraDB-Cluster-55 -y

5.停止mysql服务,选择一个node作为名义上的master,只需要修改mysql的配置文件/etc/my.cnf(需要分别配置)

  1. #PXC集群中MySQL实例的唯一ID,不能重复,必须是数字
  2. server-id=1
  3. wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
  4. #PXC集群的名称
  5. wsrep_cluster_name=pxc-cluster
  6. wsrep_cluster_address=gcomm://192.0.0.197,192.0.0.198,192.0.0.199
  7. #当前节点的名称
  8. wsrep_node_name=pxc1
  9. #当前节点的IP
  10. wsrep_node_address=192.0.0.197
  11. #同步方法(mysqldump、rsync、xtrabackup)
  12. wsrep_sst_method=xtrabackup-v2
  13. #同步使用的帐户
  14. wsrep_sst_auth= admin:Abc_123456
  15. #同步严厉模式
  16. pxc_strict_mode=ENFORCING
  17. #基于ROW复制(安全可靠)
  18. binlog_format=ROW
  19. #默认引擎
  20. default_storage_engine=InnoDB
  21. #主键自增长不锁表
  22. innodb_autoinc_lock_mode=2

6.启动第一个节点

  1. /etc/init.d/mysql bootstrap-pxc
    如果是centos7,则启动命令如下:
    systemctl start mysql@bootstrap.service
    若是重启的话,就先kill,然后删除pid文件后再执行上面的启动命令

7.数据库用户名密码的设置

  1. mysql> UPDATE mysql.user SET password=PASSWORD("Passw0rd") where user='root'; 

8.配置SST认证账号

  1. mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';
  2. mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
  3. mysql> FLUSH PRIVILEGES;  

9.启动其他节点

  1. /etc/init.d/mysql start

各个节点都采用第一个修改的root密码登录

10.常用命令

查看节点数:

  1. show global status like 'wsrep_cluster_size';  

查看集群状态:

  1. show global status like 'wsrep_cluster_size';

查看当前节点状态:

  1. show global status like 'wsrep_cluster_status';

通过查看4567 端口确认集群是否启动:

  1. netstat -plantu | grep mysqld 

集群关闭:所有节点都用

  1. /etc/init.d/mysql stop

节点重启
第一个节点用:

  1. /etc/init.d/mysql restart-bootstrap

其他节点用:

  1. /etc/init.d/mysql restart

11.其他注意事项:

集群关闭之后,再启动,谁做第一个节点谁就执行/etc/init.d/mysql  bootstrap-pxc

如果最后关闭的PXC节点是安全退出的,那么下次启动要最先启动这个节点,而且要以主节点启动 如果最后关闭的PXC节点不是安全退出的,

那么要先修改/var/lib/mysql/grastate.dat 文件, 把其中的safe_to_bootstrap属性值设置为1, 再安装主节点启动。

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

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

只需要在名义上的master节点上设置权限,其它的节点配置好/etc/my.cnf后,只需要启动mysql就行,权限会自动同步过来。

MySQL数据库高可用集群搭建-PXC集群部署的更多相关文章

  1. 美团点评MySQL数据库高可用架构从MMM到MHA+Zebra以及MHA+Proxy的演进

    本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新.同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望. MMM ...

  2. (转)mysql数据库高可用高扩展性架构方案实施

    http://shanhu.blog.51cto.com/1293405/1212605-----mysql数据库高可用高扩展性架构方案实施

  3. MYSQL数据库高可用方案探究

    MySQL作为最关键的应用数据存储中心,如何保证MySQL服务的可靠性和持续性,是我们不得不细致考虑的一个问题.当master宕机的时候,我们如何保证数据尽可能的不丢失,如何保证快速的获知master ...

  4. MySQL数据库高可用方案

    一.什么是高可用性: 高可用性=可靠性,它的本质就是通过技术和工具提高可靠性,尽可能长时间保持数据可用和系统运行,实现高可用性的原则,首先要消除单点故障,其次通过冗余机制实现快速恢复,还有就是实现容错 ...

  5. 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)

    一.MySQL MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换   服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...

  6. [转]数据库高可用架构(MySQL、Oracle、MongoDB、Redis)

    一.MySQL   MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换 服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...

  7. Centos7 Mysql 双机热备实现数据库高可用

    mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器. 双机热备的条件是双机mysql版本必须一致. 服务器分 ...

  8. Mysql双机热备实现数据库高可用

    mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器. 双机热备的条件是双机mysql版本必须一致. 服务器分 ...

  9. 基于keepalived搭建MySQL的高可用集群

    MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...

随机推荐

  1. 实验吧-密码学-js(Chrome用console.log调试js)

    题目就是js,可能就是一个js的代码,查看源码并复制,在Chrome中打开网页,审查元素. 将复制的代码输入,将eval改成console.log,再回车执行,就得到一段js代码. 代码中有Unico ...

  2. 吴裕雄--天生自然 JAVASCRIPT开发学习

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. UVA - 10118 Free Candies(免费糖果)(dp---记忆化搜索)

    题意:桌上有4堆糖果,每堆有N(N<=40)颗.佳佳有一个最多可以装5颗糖的小篮子.他每次选择一堆糖果,把最顶上的一颗拿到篮子里.如果篮子里有两颗颜色相同的糖果,佳佳就把它们从篮子里拿出来放到自 ...

  4. 洛谷 P5663 加工零件

    题目传送门 解题思路: 最暴力的做法: bfs模拟,每次将一个阶段的所有点拿出来,将其所有直连的点都放进队列,知道本阶段结束,最后看1号点会不会在最后一个阶段被放入队列.(洛谷数据40分) 优化了一下 ...

  5. mysql5.6免安装使用

    一.去MYSQL官网下载MYSQL免安装版,由于我的系统是64位的,所以就下载了64位的Mysql版本 http://cdn.mysql.com//Downloads/MySQL-5.6/mysql- ...

  6. FFmpeg的基本使用

    1.FFmpeg理解 (1)FFmpeg是一个视屏.音频编码工具 (2)x项目名称mpeg来源mpeg编码标准,但不局限只能使用mpeg编码标准.FF 表示fast forward (3)被广泛使用. ...

  7. CDH6.2安装配置第二篇:CDH安装的前期配置

    本篇介绍cdh安装之前需要的一些必要配置,当然这些配置也可以用shell脚本来配置.在安装之前请先配置好yum源,在文中用的统一都是阿里源.在安装的时候,要确保主机的内存是4G以上,要不然会无限重启c ...

  8. Java 使用控制台操作实现数据库的增删改查

    使用控制台进行数据库增删改查操作,首先创建一个Java Bean类,实现基础数据的构造,Get,Set方法的实现,减少代码重复性. 基本属性为 学生学号 Id, 学生姓名 Name,学生性别 Sex, ...

  9. Java学习——代理模式

    Java中的三种代理模式 一,什么是代理模式? 代理模式是一种设计模式,简单的来说就是在不改变源码的情况下,实现对目标对象的功能扩展. 比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing ...

  10. 第一次 C语言课程设计

    小学生测验 最近比较忙,就拿前几天做的课设项目水一水. 内容 面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答. 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学 ...