一、环境准备

主机IP                     主机名               操作系统版本     PXC

192.168.244.146     node1              CentOS7.1      Percona-XtraDB-Cluster-56-5.6.30

192.168.244.147     node2              CentOS7.1      Percona-XtraDB-Cluster-56-5.6.30

192.168.244.148     node3              CentOS7.1      Percona-XtraDB-Cluster-56-5.6.30

关闭防火墙或者允许3306, 4444, 4567和4568四个端口的连接

关闭SElinux

二、下载PXC

安装PXC yum源

# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

这样会在/etc/yum.repos.d下生成percona-release.repo文件

安装PXC

# yum install Percona-XtraDB-Cluster-56

最终下载下来的版本是Percona-XtraDB-Cluster-56-5.6.30

注意:三个节点上均要安装。

三、配置节点

配置节点一

修改node1的/etc/my.cnf

[mysqld]

datadir=/var/lib/mysql
user=mysql # Path to Galera library
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so # Cluster connection URL contains the IPs of node#, node# and node#
wsrep_cluster_address=gcomm://192.168.244.146,192.168.244.147,192.168.244.148 # In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW # MyISAM storage engine has only experimental support
default_storage_engine=InnoDB # This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode= # Node # address
wsrep_node_address=192.168.244.146 # SST method
wsrep_sst_method=xtrabackup-v2 # Cluster name
wsrep_cluster_name=my_centos_cluster # Authentication for SST method
wsrep_sst_auth="sstuser:s3cret"

启动node1

# systemctl start mysql@bootstrap.service

注意:这个是CentOS 7下的启动方式,如果是CentOS 6,则启动方式为 # /etc/init.d/mysql bootstrap-pxc

之所以采用bootstrap启动,其实是告诉数据库,这是第一个节点,不用进行数据的同步。

利用这种方式启动,相当于wsrep_cluster_address方式设置为gcomm://。

此时,可登录客户端查看数据库的状态

mysql> show status like 'wsrep%';

主要关注以下参数的状态

+------------------------------+--------------------------------------+
| Variable_name | Value |
+------------------------------+--------------------------------------+
| wsrep_local_state_uuid | 1fbb69e3-32a3-11e6-a571-aeaa962bae0c |
...
| wsrep_local_state |
| wsrep_local_state_comment | Synced |
...
| wsrep_cluster_size |
...
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
...
| wsrep_ready | ON |

在上面的配置文件中,有个wsrep_sst_auth参数。该参数是用于其它节点加入到该集群中,利用XtraBackup执行State Snapshot Transfer(类似于全量同步)的。

所以,接下来是授权

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

配置节点二

修改node2的/etc/my.cnf

[mysqld]

datadir=/var/lib/mysql
user=mysql # Path to Galera library
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so # Cluster connection URL contains the IPs of node#, node# and node#
wsrep_cluster_address=gcomm://192.168.244.146,192.168.244.147,192.168.244.148 # In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW # MyISAM storage engine has only experimental support
default_storage_engine=InnoDB # This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode= # Node # address
wsrep_node_address=192.168.244.147 # SST method
wsrep_sst_method=xtrabackup-v2 # Cluster name
wsrep_cluster_name=my_centos_cluster # Authentication for SST method
wsrep_sst_auth="sstuser:s3cret"

启动node2

# systemctl start mysql

如果是CentOS 6,则启动方式为 # /etc/init.d/mysql start

如果在启动的过程中出现问题,可查看mysql的错误日志,如果是RPM安装,默认是/var/lib/mysql/主机名.err

启动完毕后,也可通过mysql> show status like 'wsrep%';命令查看集群的信息。

配置节点三

修改node3的/etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
user=mysql # Path to Galera library
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so # Cluster connection URL contains the IPs of node#, node# and node#
wsrep_cluster_address=gcomm://192.168.244.146,192.168.244.147,192.168.244.148 # In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW # MyISAM storage engine has only experimental support
default_storage_engine=InnoDB # This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode= # Node # address
wsrep_node_address=192.168.244.148 # SST method
wsrep_sst_method=xtrabackup-v2 # Cluster name
wsrep_cluster_name=my_centos_cluster # Authentication for SST method
wsrep_sst_auth="sstuser:s3cret"

启动node3

# systemctl start mysql

登录数据库,查看集群的状态

+------------------------------+--------------------------------------+
| Variable_name | Value |
+------------------------------+--------------------------------------+
| wsrep_local_state_uuid | 1fbb69e3-32a3-11e6-a571-aeaa962bae0c |
...
| wsrep_local_state |
| wsrep_local_state_comment | Synced |
...
| wsrep_cluster_size |
...
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
...
| wsrep_ready | ON

通过wsrep_cluster_size可以看出集群有3个节点。

四、 测试

下面来测试一把,在node3中创建一张表,并插入记录,看node1和node2中能否查询得到。

node3中创建测试表并插入记录

root@node3 > create table test.test(id int,description varchar(10));
Query OK, 0 rows affected (0.18 sec) root@node3 > insert into test.test values(1,'hello,pxc');
Query OK, 1 row affected (0.01 sec)

node1和node2中查询

root@node1 > select * from test.test;
+------+-------------+
| id | description |
+------+-------------+
| 1 | hello,pxc |
+------+-------------+
1 row in set (0.00 sec)
root@node2 > select * from test.test;
+------+-------------+
| id | description |
+------+-------------+
| 1 | hello,pxc |
+------+-------------+
1 row in set (0.05 sec)

至此,Percona XtraDB Cluster搭建完毕~

总结:

1. 刚开始启动node2的时候,启动失败,错误日志中报如下信息:

2016-06-15 20:06:09 4937 [ERROR] WSREP: failed to open gcomm backend connection: 110: failed to reach primary view: 110 (Connection timed out)
at gcomm/src/pc.cpp:connect():162
2016-06-15 20:06:09 4937 [ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():208: Failed to open backend connection: -110 (Connection timed out)
2016-06-15 20:06:09 4937 [ERROR] WSREP: gcs/src/gcs.cpp:gcs_open():1387: Failed to open channel 'my_centos_cluster' at 'gcomm://192.168.244.146,192.168.244.147,192.168.244.148': -110 (Connection timed out)
2016-06-15 20:06:09 4937 [ERROR] WSREP: gcs connect failed: Connection timed out
2016-06-15 20:06:09 4937 [ERROR] WSREP: wsrep::connect(gcomm://192.168.244.146,192.168.244.147,192.168.244.148) failed: 7
2016-06-15 20:06:09 4937 [ERROR] Aborting
2016-06-15 20:27:03 5870 [ERROR] WSREP: Failed to read 'ready <addr>' from: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '192.168.244.147' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --defaults-group-suffix '' --parent '5870'  ''
Read: '(null)'
2016-06-15 20:27:03 5870 [ERROR] WSREP: Process completed with error: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '192.168.244.147' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --defaults-group-suffix '' --parent '5870' '' : 2 (No such file or directory)
2016-06-15 20:27:03 5870 [ERROR] WSREP: Failed to prepare for 'xtrabackup-v2' SST. Unrecoverable.
2016-06-15 20:27:03 5870 [ERROR] Aborting

特别是下面的报错信息,根据https://mariadb.com/kb/en/mariadb/problem-with-the-galera-wsrep_sst_method-xtrabackup-v2/的解决思路,还以为是socat的版本太低。

后来才发现,是SElinux没有关闭。。。

另外,在节点加入集群的过程中,如果报有关xtrabackup-v2的错误,不妨先将wsrep_sst_method的方式设置为rsync或者mysqldump,看能否成功。

2. 以systemctl start mysql@bootstrap.service启动的节点,必须以systemctl stop mysql@bootstrap.service关闭,如果以systemctl stop mysql关闭,则没效果。

参考文档:

1. http://www.cnblogs.com/zejin2008/p/5475285.html

2. PXC官方文档

3. http://galeracluster.com/documentation-webpages/

如何搭建Percona XtraDB Cluster集群的更多相关文章

  1. Percona XtraDB Cluster集群

    官网参考地址: https://www.percona.com/doc/percona-xtradb-cluster/LATEST/configure.html 前期准备: 都用的root权限或使用s ...

  2. kubernetes部署Percona XtraDB Cluster集群

    PXC介绍 全称percona-xtradb-cluster,提供了MySQL高可用的一种实现方法.PXC集群以节点组成(推荐至少3节点,便于故障恢复),每个节点都是基于常规的 MySQL Serve ...

  3. mysql之 Percona XtraDB Cluster集群线程模型

    Percona XtraDB集群创建一组线程来为其操作提供服务,这些线程与现有的MySQL线程无关.有三个主要线程组: 一.Applier线程 Applier线程应用从其他节点接收的写入集.写消息直接 ...

  4. Percona XtraDB Cluster集群5.7 开启SSL认证

    mysqldump -uroot -p --ssl-cert=/data/mysql/client-cert.pem --ssl-key=/data/mysql/client-key.pem -h 1 ...

  5. 搭建分布式 Redis Cluster 集群与 Redis 入门

    目录 Redis 集群搭建 Redis 是啥 集群(Cluster) Redis Cluster 说明 Redis Cluster 节点 Redis Cluster 集群模式 不能保证一致性 创建和使 ...

  6. Percona XtraDB Cluster Strict Mode(PXC 5.7)

    在Percona XtraDB Cluster集群架构中,为了避免多主节点导致的数据异常,或者说一些不被支持的特性引发的数据不一致的情形,PXC集群可以通过配置pxc_strict_mode这个变量来 ...

  7. Redis进阶实践之十一 Redis的Cluster集群搭建

    一.引言      本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的详细概念做深入的探讨.本文只是提供了有关如何设置集群.测试和操作集群的说明,而不涉及Redis集群规范中涵 ...

  8. redis cluster 集群畅谈(二)

    上一篇http://www.cnblogs.com/qinyujie/p/9029482.html, 主要讲解 redis cluster 集群 搭建,本篇主要讲解实验多master写入.读写分离.实 ...

  9. 搭建mysql集群,使用Percona XtraDB Cluster搭建

    Percona XtraDB Cluster提供的特性有:1.同步复制,事务要么在所有节点提交或不提交.2.多主复制,可以在任意节点进行写操作.3.在从服务器上并行应用事件,真正意义上的并行复制.4. ...

随机推荐

  1. div 添加滚动条

    <div id="dic" style="overflow:auto">

  2. zepto区别于jquery获取select表单选中的值

    在jquery下,我们获取select表单选中的值通常是通过$('select').val()来实现,这样的方式简单又明了,或者通过$('select option[selected]').text( ...

  3. 模拟--poj1835宇航员的故事

    这道题委实无语了,刚开始以为是很一般的方位模拟题,懒得看样例直接写的代码,然后敲了好几个switch结果样例居然没出来.. 仔细分析了样例之后才发现原来随着宇航员方位的改变他的左手方向以及头顶方向是跟 ...

  4. git使用手册

    1.git常用命令 >>首先做git clone 形成本地repository: >>然后做checkout形成分支 列出所有分支  $ git branch –r 切换到新分 ...

  5. 更加精确的定时器:dispatch_source_t

    在使用定时器时,我们经常使用NSTimer,但是由于NSTimer会受RunLoop影响,当RunLoop处理的任务很多时,就会导致NSTimer的精度降低,所以在一些对定时器精度要求很高的情况下,应 ...

  6. 建模元件有哪些在MapleSim中

    信号库:包含通用信号模块.布尔.控制器.离散信号模块.信号源.线性信号模块.非线性信号模块.时间离散信号模块.查询表.信号转换器.数学运算.关系元件.特殊信号模块,应用案例. 电子库:包含电阻.运算放 ...

  7. CSS3 Flexbox不迷路指南

    Flexbox早有耳闻,但是决定切实尝试一番,还是因为看了这条围脖: 我觉得用flexbox可以实现,但是发觉无从下手,属性特性都不了解.趁此机会,学习下. 英文原版参考资料在这里:A Complet ...

  8. C#+OpenGL+FreeType显示3D文字(1) - 从TTF文件导出字形贴图

    C#+OpenGL+FreeType显示3D文字(1) - 从TTF文件导出字形贴图 +BIT祝威+悄悄在此留下版了个权的信息说: 最近需要用OpenGL绘制文字,这是个很费时费力的事.一般的思路就是 ...

  9. 七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理

    第三天我们将学习Asp.Net中数据处理功能,了解数据访问层,EF,以及EF中常用的代码实现方式,创建数据访问层和数据入口,处理Post数据,以及数据验证等功能. 系列文章 七天学会ASP.NET M ...

  10. CSS效果集锦(持续更新中)

    高亮光弧效果 使用CSS3实现的一个高亮光弧效果,当鼠标hover到某一个元素上时,一道光弧从左向右闪过,效果如下: 代码如下: <!DOCTYPE html> <html lang ...