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

PXC原理描述:

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

一些名词介绍:

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

PXC环境所涉及的端口:

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

1.有3个节点

pxc_node0 192.0.0.197
pxc_node1 192.0.0.198
pxc_node2 192.0.0.199 

2.防火墙设置 

01关闭防火墙

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

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

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

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

firewall-cmd --reload 

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

01执行命令 永久关闭Selinux

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

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

setenforce 0

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

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

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

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

6.启动第一个节点

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

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

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

8.配置SST认证账号

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

9.启动其他节点

/etc/init.d/mysql start

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

10.常用命令

查看节点数:

show global status like 'wsrep_cluster_size';  

查看集群状态:

show global status like 'wsrep_cluster_size';

查看当前节点状态:

show global status like 'wsrep_cluster_status';

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

netstat -plantu | grep mysqld 

集群关闭:所有节点都用

/etc/init.d/mysql  stop

节点重启
第一个节点用:

/etc/init.d/mysql restart-bootstrap

其他节点用:

/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就行,权限会自动同步过来。

转载于:https://www.cnblogs.com/hiit/p/11107455.html

MySQL数据库高可用集群搭建-PXC集群部署相关推荐

  1. mysql datahost ha_mysql MySQL数据库高可用HA实现

    起因:在工作中常常要用到mysql,平常只是对数据库crud,并没有认真的了解过她,sql语句也只是会一些最基本的,和常用的,一些不常用的都要去网上百度,即决定学习一下mysql,来了解她,虽然开发很 ...

  2. MySQL数据库高可用HA实现

    1. 什么是数据库高可用 1.1 什么是高可用集群 N+1:N就是集群,1就是高可用,高可用的核心就是冗余,集群是保证服务最低使用标准的 1.2. 高可用集群的衡量标准 一般是通过系统的可靠性和可维护 ...

  3. MySQL数据库高可用之mmm

    一:MMM简介 MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制 配置的监控.故障转移和 ...

  4. haproxy负载均衡_基于mycat+haproxy+keepalived搭建mysql数据库高可用负载均衡

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

  5. 几种常见Mysql数据库高可用方案

    1.概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断 ...

  6. mysql数据库高可用_MySQL数据库高可用

    一.MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件.运行在代码应用和MySQL数据库之间的应用. 前身 : corb ...

  7. 淘宝MySQL数据库高可用实现方案

    一.常见的高可用MySQL解决方案 高性能性需要解决的主要有两个问题,即如何实现数据共享或同步数据,另一个是如何处理failover,数据共享一般的解决方案是通过SAN(Storage Area Ne ...

  8. centos7双机搭建_Centos7 Mysql 双机热备实现数据库高可用

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

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

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

最新文章

  1. markdown错误和问题
  2. uniapp添加顶部导航栏并且更换图标
  3. CodeForces - 1512G Short Task(欧拉筛求因子和)
  4. input change获取改变之前的值和改变之后的值_科技改变游戏:玩家使用氛围灯追踪角色资源变化...
  5. 【Excel】统计不重复数据的个数,设置单元格不允许出现重复数据
  6. 基于 VS 2010 阐述C# 4个特性
  7. python3高级 一 迭代器
  8. wpf项目中类库内新建用户控件和自定义控件的问题
  9. 基于代理的数据库分库分表框架 Mycat实践
  10. 当对象转换成JSON的时候处理时间格式
  11. java对象与json对象间的相互转换的方法
  12. Linux开发_最全在Ubnutu环境下为你的程序设置快捷启动项和启动时管理员权限
  13. Camtasia怎么添加文字效果
  14. php分解质因数,JavaScript趣题:分解质因数
  15. Windows搭建邮件服务器,实现收发邮件(对第三方邮箱,例如QQ邮箱等)
  16. More Accurate Question Answering on Freebase阅读笔记
  17. 动态规划-最短路径问题
  18. 使用video.js遇到的坑。VIDEOJS: WARN: Player “player3“ is already initialised. Options will not be applied.
  19. python中if语句的实例_python的if语句里怎样写两个条件
  20. 实用帖!22个无版权、免费、高清图片素材网站整理!(合集)

热门文章

  1. 有光照就能上网 0.2秒即可下载一部高清电影
  2. File.separator
  3. Linux下tcpdump用法
  4. Vagrant控制管理器——“Hobo”
  5. shell介绍,命令历史,命令补全和别名 ,通配符, 输入输出重定向
  6. 在Linux系统中修改目录的权限如何恢复
  7. 【智能家居篇】wifi网络结构(上)
  8. 3分钟内快速部署MySQL5.6.35数据库实践
  9. ThreadLocal的使用场景
  10. WCF学习之旅—WCF服务的WAS寄宿(十二)