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).同步复制,事务要么在所有节点提交或不提交 ...
随机推荐
- java基础 - 什么是hashmap的负载因子,hashmap的容量(即桶个数)为什么是2的幂次
HashMap的负载因子是指,比如容量为16,负载因子为0.75,则当HashMap的元素个数达到16*0.75=12时,触发扩容.(16和0.75是初始默认的容量和负载因子). HashMap的容量 ...
- kaldi简介及安装
操作系统 : Ubuntu18.04_x64 gcc版本 :7.4.0 简介 Kaldi诞生于2009年的JohnsHopkins University,刚开始项目重点是子空间高斯模型(SGMM)建模 ...
- LinAlgError: Last 2 dimensions of the array must be square
python 矩阵计算时出现错误 此时如果矩阵不是方阵,就会出现如下错误: 这里值得注意的是:当我们这样使用的时候,程序运行又会很正常: 貌似我们求得了非方阵的逆. 下面我们来验证一下: 仔细一看,这 ...
- window.innerHeight和document.documentElement.clientHeight区别
今天有人问我这个问题,做了个小例子来记录一下子. 首先这两个都是获取可视区域的高度,那他们有什么区别呢 1.window.innerHeight属于BOM(浏览器对象模型),而document.doc ...
- JMeter压测“java.net.BindException: Address already in use: connect”解决方法
之前在windows机上用JMeter压测,50并发下出现大量接口报“java.net.BindException: Address already in use: connect”错误. 从字面的意 ...
- Create a Solution using the Wizard 使用向导创建解决方案
In this lesson, you will learn how to create a new XAF solution. You will also be able to run the ge ...
- 关于async function(){ let res = await } 详解
本文引自: https://www.jianshu.com/p/435a8b8cc7d3 async function fn(){ //表示异步,这个函数里面有异步任务 let result = aw ...
- 解决npm下载慢的问题
方法一:使用淘宝定制的cnpm命令行工具替代默认安装npm npm install -g cnpm --registry=https://registry.npm.taobao.org 方法二:将np ...
- Violet音乐社区需求分析说明书
目录 一.引言 1.1 编写目的 1.2 开发背景 1.3 开发工具 二.项目需求 2.1 角色定义 2.2 模块划分 2.3 功能概述 2.4 数据流图 三.前端页面 四.软件要求 4.1 性能要求 ...
- redis5.0.4安装配置
1.下载redis wget http://download.redis.io/releases/redis-5.0.4.tar.gz 2.解压到opt目录 tar -zxvf redis-5.0.4 ...