Percona XtraDB Cluster简易入门 - 安装篇
说明
Percona XtraDB Cluster(简称PXC),是由percona公司推出的mysql集群解决方案。特点是每个节点都能进行读写,且都保存全量的数据。也就是说在任何一个节点进行写入操作,都会同步给其它所有节点写入到自己的磁盘。这点跟Oracle Rac有本质的区别,Rac是多个节点连同一个共享存储,假如Oracle的共享存储挂了,整个集群就挂了。而Mysql pxc中任何一台机器挂了,集群照常运转,因为节点间并不共享磁盘。
写在前面的注意事项(节选自官方手册)
1. 由于pxc只作用于innodb引擎,而mysql自带的系统库(mysql)里面有些表是MyISAM的存储引擎,因此不能直接对系统库(mysql)的表进行dml操作,比如INSERT INTO mysql.user...。而是使用CREATE USER...,这个是没有问题的,而且也是正确的方式。
2. 不支持LOCK TABLES和UNLOCK TABLES语句
mysql> lock tables world write;
ERROR 1105 (HY000): Percona-XtraDB-Cluster prohibits use of LOCK TABLE/FLUSH TABLE <table> WITH READ LOCK/FOR EXPORT with pxc_strict_mode = ENFORCING
3. log_output参数不能是TABLE
4. 不支持分布式事务
5. 新建表必须要有主键,否则对表进行dml操作会报以下错误
ERROR 1105 (HY000): Percona-XtraDB-Cluster prohibits use of DML command on a table (hello.world) without an explicit primary key with pxc_strict_mode = ENFORCING or MASTER
6. 推荐的节点数最小是3个
安装
准备三个节点,操作系统使用centos6.10,pxc采用rpm安装的方式,简单
节点1 ip: 10.40.16.120 hostname:mysqla
节点2 ip: 10.40.16.121 hostname:mysqlb
节点3 ip: 10.40.16.122 hostname:mysqlc
所有节点关闭防火墙
service iptables stop
chkconfig iptables off
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
所有节点安装以下rpm包
#安装percona cluster依赖包
wget ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm
wget http://www.rpmfind.net/linux/epel/6/x86_64/Packages/s/socat-1.7.2.3-1.el6.x86_64.rpm yum install -y libev-4.04-2.el6.x86_64.rpm
yum install -y socat-1.7.2.3-1.el6.x86_64.rpm #配置yum仓库
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm #安装percona cluster
yum install -y Percona-XtraDB-Cluster-57
到这里所有的安装工作就已经完成了,接下来就是修改参数文件,把这三个节点连起来组成集群
修改参数文件
需要修改的参数已经列出来了,其余不用动,注意下面这些参数有的前面有#号,需要去掉
修改节点1的参数文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
user=mysql
wsrep_cluster_address=gcomm://10.40.16.120,10.40.16.121,10.40.16.122 #集群的所有节点ip
wsrep_node_address=10.40.16.120 #本机的ip
wsrep_node_name=pxc-cluster-node-1 #本机在集群中的名字
wsrep_sst_auth="sstuser:s3cretPass" #集群间同步的用户,后面需要在节点1创建该用户
vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
server-id=1 #集群内所有节点的id不能相同
启动节点1的mysql
/etc/init.d/mysql bootstrap-pxc #集群的第一个节点启动必须使用该方式。如果手工将整个集群关掉了,那么重新启动集群时,应该启动最后一个被关闭的节点,且以该方式。第一个启动的节点称为donater,后面启动的节点为joiner,两者启动方式不一样,需要留意
[root@mysqla ~]# /etc/init.d/mysql bootstrap-pxc
Bootstrapping PXC (Percona XtraDB Cluster)MySQL (Percona XtraDB Cluster) is not running, but lock file (/var/lock/subsys/mysql) exists [FAILED]
Starting MySQL (Percona XtraDB Cluster).... [ OK ]
前面那个failed忽略,属于正常情况
找出root的临时密码
[root@mysqla ~]# grep "temporary password" /var/log/mysqld.log |awk -F " " '{print $11}'
&enffgG_E8Ty
修改root密码并创建同步账号(同步账号需要跟/etc/percona-xtradb-cluster.conf.d/wsrep.cnf的键值wsrep_sst_auth对应)
[root@mysqla ~]# mysql -uroot -p'&enffgG_E8Ty'
mysql> alter user root@'localhost' identified by 'root';
mysql> create user 'sstuser'@'localhost' identified by 's3cretPass';
mysql> grant process, reload, lock tables, replication client on *.* to 'sstuser'@'localhost';
mysql> flush privileges;
修改节点2的参数文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
user=mysql
wsrep_cluster_address=gcomm://10.40.16.120,10.40.16.121,10.40.16.122
wsrep_node_address=10.40.16.121
wsrep_node_name=pxc-cluster-node-2
wsrep_sst_auth="sstuser:s3cretPass"
vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
server-id=2
启动节点2的mysql
service mysql start
[root@mysqlb ~]# service mysql start
MySQL (Percona XtraDB Cluster) is not running, but lock fil[FAILED]lock/subsys/mysql) exists
Starting MySQL (Percona XtraDB Cluster)......State transfer in progress, setting sleep higher
. [ OK ]
修改节点3的参数文件
vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
user=mysql
wsrep_cluster_address=gcomm://10.40.16.120,10.40.16.121,10.40.16.122
wsrep_node_address=10.40.16.122
wsrep_node_name=pxc-cluster-node-3
wsrep_sst_auth="sstuser:s3cretPass"
vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
server-id=3
启动节点3的mysql
service mysql start
[root@mysqlc ~]# service mysql start
MySQL (Percona XtraDB Cluster) is not running, but lock fil[FAILED]lock/subsys/mysql) exists
Starting MySQL (Percona XtraDB Cluster)......State transfer in progress, setting sleep higher
. [ OK ]
测试
在任意节点创建一张表,注意这里创建的表必须有主键,查看其它节点是否有数据,有就表示同步完成,没有的话去看日志/var/log/mysqld.log查找原因
如果文章帮到了你,还希望你点个赞,你的点赞是我写作的最大动力,哈哈。
Percona XtraDB Cluster简易入门 - 安装篇的更多相关文章
- Percona XtraDB Cluster 5.7安装配置
优点:1.准同步复制2.多个可同时读写节点,可实现写扩展,较分片方案更进一步3.自动节点管理4.数据严格一致5.服务高可用缺点:1.只支持innodb引擎2.所有表都要有主键3.所有的写操作都将发生在 ...
- Percona XtraDB Cluster(PXC) -集群环境安装
Percona XtraDB Cluster(PXC) ---服务安装篇 1.测试环境搭建: Ip 角色 OS PXC-version 172.16.40.201 Node1 Redhat/C ...
- Percona XtraDB Cluster(PXC) Mysql 集群
Percona XtraDB Cluster(PXC) ---原理介绍篇 目录 一.简介 1 二.优缺点 2 三.区别/局限性 3 四. PXC复制原理 4 五. 服务解释 5 ...
- PXC(Percona XtraDB Cluster)集群的安装与配置
Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...
- docker1.12 安装pxc(Percona XtraDB Cluster )测试
docker1.12 安装pxc(Percona XtraDB Cluster )测试
- 搭建高可用mysql系列(2)-- Percona XtraDB Cluster 安装
本文主要介绍在 centos 下 Percona XtraDB Cluster(下文简称PXC) 的安装, 个人的系统版本信息如下: [root@c2-d09 worker]# more /etc/r ...
- 如何搭建Percona XtraDB Cluster集群
一.环境准备 主机IP 主机名 操作系统版本 PXC 192.168.244.146 node1 ...
- 使用percona xtradb cluster的IST方式添加新节点
使用percona xtradb cluster的IST(Incremental State Transfer)特性添加新节点,防止新节点加入时使用SST(State SnapShop Transfe ...
- mysql高可用之PXC(Percona XtraDB Cluster)
简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...
随机推荐
- Node.js实现图片上传功能
node接口实现 const express = require('express') const mysql = require('mysql') const cors = require('cor ...
- 【algo&ds】6.图及其存储结构、遍历
1.什么是图 图表示"多对多"的关系 包含 一组顶点:通常用 V(Vertex)表示顶点集合 一组边:通常用 E(Edge)表示边的集合 边是顶点对:(v,w)∈ E,其中 v,w ...
- C# winfrom调用摄像头扫描二维码(完整版)
前段时间看到一篇博客,是这个功能的,参考了那篇博客写了这个功能玩一玩,没有做商业用途.发现他的代码给的有些描述不清晰的,我就自己整理一下发出来记录一下. 参考博客链接:https://www.cnbl ...
- Java操作数据库——手动实现数据库连接池
Java操作数据库——手动实现数据库连接池 摘要:本文主要学习了如何手动实现一个数据库连接池,以及在这基础上的一些改进. 部分内容来自以下博客: https://blog.csdn.net/soonf ...
- IDEA中安装EasyCode插件并连接数据库生成代码
场景 EasyCode是基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml).只要是与数据库相关的代码都可以通过自定义模板来生成.支持数据库类型与j ...
- [Spring]:java.lang.NoSuchMethodError: 'java.lang.String javax.annotation.Resource.lookup()'
错误信息 11月 05, 2019 9:32:15 下午 org.springframework.test.context.TestContextManager prepareTestInstance ...
- 去掉烦人的“!=null"(判空语句)
文章首发于公众号 松花皮蛋的黑板报 作者就职于京东,在稳定性保障.敏捷开发.高级JAVA.微服务架构有深入的理解 为了避免空指针调用,我们经常会看到这样的语句 if (someobject != nu ...
- Saltstack_使用指南16_syndic
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- 26-限制容器对CPU的使用
默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重.如果不指定,默认值为 1024. 与 ...
- IOR and mdtest - measure parallel file system I/O performance at both the POSIX and MPI-IO level.
This parallel program performs writes and reads to/from files under several sets of conditions and r ...