一、环境准备

主机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. linux下QT程序输出乱码解决方法

    参考文章:http://blog.csdn.net/jiang1013nan/article/details/6667871 http://my.oschina.net/zjlaobusi/blog/ ...

  2. Where product development should start

    We all need to know our customers in order to create products they’ll actually buy. This is why the  ...

  3. iOS开发UI高级手势识别器

    ####手势识别器 UIGestureRecognizer类 ·UITapGestureRecognizer(轻击) ·UIPinchGestureRecognizer(捏合) ·UIPanGestu ...

  4. Python模块之常用模块,反射以及正则表达式

    常用模块  1. OS模块 用于提供系统级别的操作,系统目录,文件,路径,环境变量等 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("di ...

  5. win7安装oracle 时容易出的问题

    Windows7下安装Oracle11G.10G,都会提示如下信息 正在检查操作系统要求... 要求的结果: 5.0,5.1,5.2,6.0 之一 实际结果: 6.1 检查完成.此次检查的总体结果为: ...

  6. navicat 结合快捷键

    ctrl+q 打开查询窗口ctrl+/ 注释sql语句ctrl+shift +/ 解除注释ctrl+r 运行查询窗口的sql语句ctrl+shift+r 只运行选中的sql语句F6 打开一个mysql ...

  7. Oracle数据库操作

    本例使用oracle数据库,使用PL/SQL可视化工具: --查询员工表数据 (emp为pl/sql自带的表,也可自己新建)select * from emp; --创建表空间create table ...

  8. js 预处理用户上传图片

    前几个月闲得无聊写得一段代码,没想最近刚好用上了,在硬盘里翻了半天找回来,还没好好整理直接用上了手机用户拍照上传的图片一般都在1M 到4M 之间,如果只是用作头像尺寸就可以缩小很多,1M甚至几M的图转 ...

  9. ASP.NET Core 数据保护(Data Protection)【上】

    前言 上一篇博客记录了如何在 Kestrel 中使用 HTTPS(SSL), 也是我们目前项目中实际使用到的. 数据安全往往是开发人员很容易忽略的一个部分,包括我自己.近两年业内也出现了很多因为安全问 ...

  10. Linux服务器安装笔记 汇总

    系统 Ubuntu笔记:http://www.cnblogs.com/newsea/p/4746967.html CentOs笔记:http://www.cnblogs.com/newsea/p/47 ...