安装依赖与注意事项:

 

1. rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

1.yum install socat

2.yum install -y perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL  perl-Time-HiRes.x86_64 socat

3.安装xtrabackup  下载地址:http://www.percona.com/downloads/XtraBackup/

4.注意iptables  4567是wsrep使用的默认端口

5.如果是对现有环境做galera集群,需要对mysql现有表做检查,包括表,表引擎,是否无主键,是否有全文索引,是否有空间索引:

SELECT DISTINCT

CONCAT(t.table_schema,'.',t.table_name) AS tbl,

t.engine,

IF(ISNULL(c.constraint_name),'NOPK','') AS nopk,

IF(s.index_type = 'FULLTEXT','FULLTEXT','') AS ftidx,

IF(s.index_type = 'SPATIAL','SPATIAL','') AS gisidx

FROM information_schema.tables AS t

LEFT JOIN information_schema.key_column_usage AS c

ON (t.table_schema = c.constraint_schema AND t.table_name = c.table_name

AND c.constraint_name = 'PRIMARY')

LEFT JOIN information_schema.statistics AS s

ON (t.table_schema = s.table_schema AND t.table_name = s.table_name

AND s.index_type IN ('FULLTEXT','SPATIAL'))

WHERE t.table_schema NOT IN ('information_schema','performance_schema','mysql')

AND t.table_type = 'BASE TABLE'

AND (t.engine <> 'InnoDB' OR c.constraint_name IS NULL OR s.index_type IN ('FULLTEXT','SPATIAL'))

ORDER BY t.table_schema,t.table_name;

6.pxc  下载地址

https://www.percona.com/downloads/Percona-XtraDB-Cluster-56/Percona-XtraDB-Cluster-5.6.21-25.8/binary/tarball/Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64.tar.gz

 

安装步骤:

1. 和普通mysql安装步骤一样安装并初始化

2. 安装innobackupex并且添加到环境变量

3. 添加sst账号

DELETE FROM mysql.user WHERE user='';

GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost' IDENTIFIED BY 'sstuser';;

FLUSH PRIVILEGES;

4.修改my.cnf配置文件(添加如下参数)

###pxc

##Path to Galera library

#指定Galera库文件,PXC自带该库文件,mariadb galera需要安装galera

wsrep_provider                          = /usr/local/Percona-XtraDB-Cluster-5.6.24-rel72.2-25.11..Linux.x86_64/lib/libgalera_smm.so

# Cluster connection URL contains the IPs of node#1, node#2 and node#3

#指定集群每个节点的连接地址

wsrep_cluster_address         = gcomm://10.1.1.121:4567,10. 1.1.122:4567,10. 1.1.123:4567

#本机ip

wsrep_provider_options                  = gmcast.listen_addr=tcp://10.1.1.121:4567;gcache.size=8G;gcs.fc_limit=512;gcs.fc_factor=0.9;

# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera

innodb_autoinc_lock_mode                = 2

# Node #1 address

#本机ip

wsrep_node_address                      = 10. 1.1.122

#指定SST方式,支持rsync(最快,需要锁表),mysqldump和xtrabackup,从5.5.33-23.7.6起支持xtrabackup-v2

# SST method

wsrep_sst_method                        = xtrabackup-v2

#wsrep_sst_method                        = rsync

# Cluster name

wsrep_cluster_name                      = my_centos_cluster

wsrep_slave_threads                     = 16

# Authentication for SST method

#SST的认证方式(账号密码)

wsrep_sst_auth                          = "sstuser:sstuser"

5.先启动主节点

/usr/local/Percona-XtraDB-Cluster-5.6.24-rel72.2-25.11..Linux.x86_64/bin/mysqld_safe --defaults-file=/etc/my.cnf  --wsrep-cluster-address="gcomm://"  &

或者

service mysqld_3306 bootstrap-pxc

其他节点正常启动

service mysqld_3306 start

或者

/etc/init.d/mysqld_3306 start --wsrep_sst_donor=指定主ip

6.查看pxc状态

show status like 'wsrep%';

ps aux | grep mysql | grep wsrep_start_position

绕开SST通过IST方式添加节点需要创建的文件

在源mysql 用innobackupex  加 --galera-info 参数做完整备份

在目标mysql还原并且创建grastate.dat文件

sudo cat xtrabackup_galera_info

b0b66f5c-6254-11e3-b7c8-d2d41d32ec17: 433411

sudo vim grastate.dat
# GALERA saved state
version: 2.1
uuid: b0b66f5c-6254-11e3-b7c8-d2d41d32ec17
seqno: 433411
cert_index:

sudo chown mysql:mysql -R *

 

/etc/init.d/mysqld_3306
start --wsrep_sst_donor=源mysql

 

名词:
    WS:write set 写数据集
    IST: Incremental State
Transfer 增量同步
    SST:State Snapshot Transfer 全量同步 
    UUID:节点状态改变及顺序的唯一标识。
    GTID:Global Transaction ID ,由UUID和偏移量组成。wsrep api 中定义的集群内全局事务id。

状态机变化阶段:
     1.OPEN: 节点启动成功,尝试连接到集群,如果失败则根据配置退出或创建新的集群
     2.PRIMARY: 节点处于集群PC中,尝试从集群中选取donor进行数据同步
     3.JOINER: 节点处于等待接收/接收数据文件状态,数据传输完成后在本地加载数据
     4.JOINED: 节点完成数据同步工作,尝试保持和集群进度一致
     5.SYNCED:节点正常提供服务:数据的读写,集群数据的同步,新加入节点的sst请求
     6.DONOR:节点处于为新节点准备或传输集群全量数据状态,对客户端不可用。

原生的Mysql也可使用galera

https://launchpad.net/codership-mysql/+download

局限性

1.目前的复制仅仅支持InnoDB存储引擎。任何写入其他引擎的表,包括mysql.*表将不会复制。但是DDL语句会被复制的,因此创建用户将会被复制,但是insert into mysql.user…将不会被复制的。

2.DELETE操作不支持没有主键的表。没有主键的表在不同的节点顺序将不同,如果执行SELECT…LIMIT… 将出现不同的结果集。

3.在多主环境下LOCK/UNLOCK
TABLES不支持。以及锁函数GET_LOCK(), RELEASE_LOCK()…

4.查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。

5.允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。任何大型操作将被拒绝。如大型的LOAD DATA操作。

6.由于集群是乐观的并发控制,事务commit可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。对于集群级别的中止,集群返回死锁错误代码(Error: 1213 SQLSTATE: 40001
(ER_LOCK_DEADLOCK)).

7.XA事务不支持,由于在提交上可能回滚。

8.整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的节点应使用统一的硬件。

9.集群节点建议最少3个。2个也可以运行,但是官方不推荐这么做,因为3个节点是为了预防脑裂。

10.如果DDL语句有问题将破坏集群。建议使用pt-online-schema-change操作DDL。

 

  

Galera监控

1、常用查询指令

查看wsrep版本:
mysql> SHOW GLOBAL STATUS LIKE 'wsrep_provider_version';

查看wsrep有关的所有变量:
mysql> SHOW VARIABLES LIKE 'wsrep%' \G

查看Galera集群状态: mysql>
show status like 'wsrep%';

2、参数说明

1)集群完整性检查:

wsrep_cluster_state_uuid:在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群.

wsrep_cluster_conf_id:正常情况下所有节点上该值是一样的.如果值不同,说明该节点被临时”分区”了.当节点之间网络连接恢复的时候应该会恢复一样的值.

wsrep_cluster_size:如果这个值跟预期的节点数一致,则所有的集群节点已经连接.

wsrep_cluster_status:集群组成的状态.如果不为”Primary”,说明出现”分区”或是”split-brain”状况.

2)节点状态检查:

wsrep_ready: 该值为ON,则说明可以接受SQL负载.如果为Off,则需要检查wsrep_connected.

wsrep_connected: 如果该值为Off,且wsrep_ready的值也为Off,则说明该节点没有连接到集群.(可能是wsrep_cluster_address或wsrep_cluster_name等配置错造成的.具体错误需要查看错误日志)

wsrep_local_state_comment:如果wsrep_connected为On,但wsrep_ready为OFF,则可以从该项查看原因.

3)复制健康检查:

wsrep_flow_control_paused:表示复制停止了多长时间.即表明集群因为Slave延迟而慢的程度.值为0~1,越靠近0越好,值为1表示复制完全停止.可优化wsrep_slave_threads的值来改善.

wsrep_cert_deps_distance:有多少事务可以并行应用处理.wsrep_slave_threads设置的值不应该高出该值太多.

wsrep_flow_control_sent:表示该节点已经停止复制了多少次.

wsrep_local_recv_queue_avg:表示slave事务队列的平均长度.slave瓶颈的预兆.

最慢的节点的wsrep_flow_control_sent和wsrep_local_recv_queue_avg这两个值最高.这两个值较低的话,相对更好.

4)检测慢网络问题:

wsrep_local_send_queue_avg:网络瓶颈的预兆.如果这个值比较高的话,可能存在网络瓶颈

5)冲突或死锁的数目:

wsrep_last_committed:最后提交的事务数目

wsrep_local_cert_failures和wsrep_local_bf_aborts:回滚,检测到的冲突数目

--设置节点不参与流量控制

set global
wsrep_desync=ON;

--需注意的参数修改gcs.fc_limit=1024 触发流控大小设置

wsrep_provider_options 
= "evs.keepalive_period=PT1S; evs.inactive_check_period=PT0.5S; evs.suspect_timeout=PT5S; evs.inactive_timeout=PT15S; gcs.fc_factor=1.0; gcs.fc_limit=1024; gcs.fc_master_slave=yes; gcache.size=8G; "

--在线调整方法

SET GLOBAL
wsrep_provider_options="gcs.fc_limit=512;gcs.fc_factor=1.0;evs.send_window=256;evs.user_send_window=128; ";

--如果脑裂导致所有节点不可用

SET GLOBAL wsrep_provider_options='pc.bootstrap=true';

当网络状况不好时考虑调整的参数设置:

1 wsrep_provider_options = "evs.keepalive_period = PT3S;
evs.inactive_check_period = PT10S; evs.suspect_timeout = PT30S;
evs.inactive_timeout = PT1M; evs.consensus_timeout = PT1M"

2 evs.keepalive_period              
参数控制多久发送一次keepalive请求信号

3 evs.inactive_check_period          参数控制多久检测一次节点活动/静止状态

4 evs.suspect_timeout               参数控制某个节点是否被标识为suspected状态的时 间间隔

5 evs.inactive_timeout             参数控制节点不活动时检测周期

6 evs.consensus_timeout         参数控制多久检测一次节点一致性 通过上面的设 置,可以使节点超时时间为30秒

7 evs.inactive_timeout参数必须不小于evs.suspect_timeout, evs.consensus_timeout必须不小于evs.inactive_timeout

PXC安装部署的更多相关文章

  1. MySQL高可用之PXC安装部署(续)

      Preface       Yesterday I implemented a three-nodes PXC,but there were some errors when proceeding ...

  2. MySQL高可用之PXC安装部署

      Preface       Today,I'm gonna implement a PXC,Let's see the procedure.   Framework   Hostname IP P ...

  3. PXC 5.7.14 安装部署

    http://www.dbhelp.net/2017/01/06/pxc-5-7-14-%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2-pxc-install.html PX ...

  4. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

  5. KVM安装部署

    KVM安装部署 公司开始部署KVM,KVM的全称是kernel base virtual machine,对KVM虚拟化技术研究了一段时间, KVM是基于硬件的完全虚拟化,跟vmware.xen.hy ...

  6. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  7. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

  8. C# winform安装部署(转载)

    c# winform 程序打包部署 核心总结: 1.建议在完成的要打包的项目外,另建解决方案建立安装部署项目(而不是在同一个解决方案内新建),在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目 ...

  9. Ubuntu14.04 Django Mysql安装部署全过程

    Ubuntu14.04 Django Mysql安装部署全过程   一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...

随机推荐

  1. facl

    file access control lists 文件的额外赋权机制,针对性的对某用户对文件的权限进行处理 setfacl 指定空权限

  2. 洛谷P1560 蜗牛的旅行

    题目 搜索,注意判断特殊情况,并且区分开什么时候转弯什么时候停止.然后转弯的时候更是要注意是否会进入障碍. #include <bits/stdc++.h> using namespace ...

  3. 基于Linux(中标麒麟)上QT的环境搭建——解决cannot find lGL的问题

    接上一篇,QT在中标麒麟环境安装完成后遇到运行报错的问题 一.问题描述: 在中标麒麟上配置好QT的环境后,新建一个工程,不做其他的任何操作,直接运行都会报cannot find lGL的错误.如图所示 ...

  4. rust控制流

    fn main() { let number = 6; if number % 4 == 0 { println!("number is divisible by 4"); } e ...

  5. JavaWeb项目启动过程与ServletContext

    ServletContext的官方名称叫Servlet上下文,服务器会为每一个工程创建一个对象,这个对象就是ServletContext.一个项目只有一个ServletContext对象,工程内的所有 ...

  6. Spring Boot 项目 application.properties配置说明

    #======================================================================================# ★☆★☆★☆★☆★☆ ...

  7. 爬虫urllib2库的基本使用

    所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在Python中有很多库可以用来抓取网页,urllib2库基本使用. urllib2 是 Python2.7 自带的模块 ...

  8. C# redis客户端帮助类

    需要在NuGet里面引用ServiceStack.Redis using ServiceStack.Redis; using ServiceStack.Redis.Generic; using Sys ...

  9. ISO/IEC 9899:2011 摘要

    本国际标准指定了C编程语言的形式并建立了对用它所表达的程序的解释.其目的在于促进在多种计算机系统上的C语言程序的可移植性.可靠性.可维护性以及高效的执行. 为了详细地说明C语言本身以及C语言执行库,包 ...

  10. 简易商城 [ html + css ] 练习

    1. 前言 通过使用 HTML + CSS 编写一个简易商城首页. 如图: 2. 布局思路 通过页面分析,大致可以决定页面的布局分为 5 大板块. 接下来,可以先定义页面的布局: <!DOCTY ...