Percona XtraDB Cluster集群
官网参考地址:
https://www.percona.com/doc/percona-xtradb-cluster/LATEST/configure.html
前期准备:
都用的root权限或使用sudo
确保3306、4444、4567、4568端口没有被防火墙拦截
关闭selinux
$ cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
$ uname -r
3.10.0-693.el7.x86_64
IP 主机名
192.168.3.120 node1
192.168.3.121 node2
192.168.3.122 node3
##########################################################################
安装版块:(所有节点上执行)
$ yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm
$ yum -y install Percona-XtraDB-Cluster-57 #如是本地执行可能会提示要挂载光盘,如云上则不会
$ service mysql start
复制超级用户帐户的自动生成的临时密码:
$ grep 'temporary password' /var/log/mysqld.log|awk -F '@' '{print $2}'|awk -F ' ' '{print $2}'
使用此密码登录为root:
$ mysql -u root -p
更改超级用户帐户的密码并注销:
$ mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
##########################################################################
创建数据、日志、临时文件目录(所有节点上执行)
mkdir -p /data/mysql/{data,logs,tmp}
chown -R mysql.mysql /data
mv /etc/my.cnf{,.bak}
cp /etc/percona-xtradb-cluster.conf.d/wsrep.cnf /etc/my.cnf
##########################################################################
在第一个节点上的/etc/my.cnf中添加以下配置变量:
cat /etc/my.cnf | grep -v ^#|grep -v ^$
[mysqld]
user=mysql
innodb_buffer_pool_size = 1024M
datadir = /data/mysql/data
port = 3306
server_id = 1 #每个节点的server_id都不一样
socket = /var/lib/mysql/mysql.sock
pid-file = /var/lib/mysql/controller.pid
log-error = /data/mysql/logs/error.log
log_warnings = 2
slow_query_log_file = /data/mysql/logs/slow.log
long_query_time = 0.1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.3.120,192.168.3.121,192.168.3.122
binlog_format=ROW
default_storage_engine=InnoDB
wsrep_slave_threads= 8
wsrep_log_conflicts
innodb_autoinc_lock_mode=2
wsrep_node_address=192.168.3.120 #IP为本机IP
wsrep_cluster_name=pxc-cluster
wsrep_node_name=pxc-cluster-node-1
pxc_strict_mode=ENFORCING
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth="sstuser:123456" 格式:用户名:密码
在上面的配置文件中,有个wsrep_sst_auth参数。该参数是用于其它节点加入到该集群中,利用XtraBackup执行State Snapshot Transfer(类似于全量同步)的。
所以,接下来是授权
mysql> create user 'sstuser'@'localhost' identified by '123456';
mysql> grant reload,lock tables,process,replication client on *.* to 'sstuser'@'localhost';
mysql> flush privileges;
mysql> show grants for sstuser@localhost;
mysql> exit service mysql stop
##########################################################################
对于第二个节点:
server_id = 2
wsrep_node_name=pxc2
wsrep_node_address=192.168.3.121
对于第三个节点:
server_id = 3
wsrep_node_name=pxc3
wsrep_node_address=192.168.3.122
除以上3项和节点1上不一样之外,第二个节点和第三个节点的其他配置和节点1上的my.cnf配置一样
########### 以上各参数解析 ##############
wsrep_provider
指定Galera库的路径。
红帽或CentOS: /usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name
指定群集的逻辑名称。对于群集中的所有节点它必须相同。
wsrep_cluster_address
指定群集中节点的IP地址。节点加入群集至少需要一个,但建议列出所有节点的地址。这样,如果列表中的第一个节点不可用,则加入节点可以使用其他地址。
wsrep_node_name
指定每个节点的逻辑名称。如果未指定此变量则将使用主机名。
wsrep_node_address
指定此特定节点的IP地址。
wsrep_sst_method
默认情况下,Percona XtraDB群集使用Percona XtraBackup进行状态快照传输(SST)。
wsrep_sst_method=xtrabackup-v2强烈建议设置。此方法需要在初始节点上设置用户SST。
使用wsrep_sst_auth变量提供SST用户凭据。
wsrep_sst_auth
指定认证凭证SST 作为<sst_user>:<sst_pass>
pxc_strict_mode
PXC严格模式默认启用并设置为ENFORCING,这会阻止在Percona XtraDB Cluster中使用实验和不支持的功能。
binlog_format
Galera仅支持行级复制因此设置成binlog_format=ROW。
default_storage_engine
Galera完全支持InnoDB存储引擎。它无法与MyISAM或任何其他非事务性存储引擎一起正常工作。将此变量设置为default_storage_engine=InnoDB
innodb_autoinc_lock_mode
Galera仅支持2InnoDB的interleaved()锁定模式。设置传统(0)或连续(1)锁定模式可能会导致复制因未解决的死锁而失败。将此变量设置为innodb_autoinc_lock_mode=2
########### 各参数解析结束 ##############
##########################################################################
启动第一个节点:
$ systemctl start mysql@bootstrap.service
##注意!第一个节点启动方式和其他节点方式启动不同
##如果是CentOS 6,则启动方式为 # /etc/init.d/mysql bootstrap-pxc,之所以采用bootstrap启动,其实是告诉数据库,这是第一个节点,不用进行数据的同步。
更改mysql的root密码:
vim /etc/my.cnf
在[mysqld]中添加
skip-grant-tables
$ systemctl restart mysql@bootstrap.service
$ mysql -uroot -p (直接点击回车,密码为空)
use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;
exit
删除skip-grant-tables
$ systemctl restart mysql@bootstrap.service
确保已初始化群集运行以下命令:(所有节点上执行,下图是节点一上还未启动其他节点时的)
$ mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> show status like 'wsrep%';


注:现在上面的wsrep_cluster_size 是为1的
验证sstuser登录:(所有节点上执行)
$ mysql -usstuser -p123456 -S /var/lib/mysql/mysql.sock -e 'show databases'
注意:如有报错自行修改,也就是权限和用户有没添加的问题

启动其他所有节点:(所有节点上执行)
$ systemctl start mysql
附:启动时有一个节点报了个错,如下:

根据报错信息,最后解决:

再到节点有上去看下:


简单测试:
在节点2上创建一个数据库,并在节点1上在节点2上创建的库中创建一张test100表
然后再在节点3上的节点2上创建的test100表中插入数据



Percona XtraDB Cluster集群的更多相关文章
- 如何搭建Percona XtraDB Cluster集群
一.环境准备 主机IP 主机名 操作系统版本 PXC 192.168.244.146 node1 ...
- kubernetes部署Percona XtraDB Cluster集群
PXC介绍 全称percona-xtradb-cluster,提供了MySQL高可用的一种实现方法.PXC集群以节点组成(推荐至少3节点,便于故障恢复),每个节点都是基于常规的 MySQL Serve ...
- mysql之 Percona XtraDB Cluster集群线程模型
Percona XtraDB集群创建一组线程来为其操作提供服务,这些线程与现有的MySQL线程无关.有三个主要线程组: 一.Applier线程 Applier线程应用从其他节点接收的写入集.写消息直接 ...
- 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 ...
- Percona XtraDB Cluster Strict Mode(PXC 5.7)
在Percona XtraDB Cluster集群架构中,为了避免多主节点导致的数据异常,或者说一些不被支持的特性引发的数据不一致的情形,PXC集群可以通过配置pxc_strict_mode这个变量来 ...
- PXC(Percona XtraDB Cluster)集群的安装与配置
Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...
- PXC5.7(Percona XtraDB Cluster)+HAproxy+Keepalived 集群部署
Percona-XtraDB-Cluster+Haproxy 搭建集群环境 环境准备及服务器信息: 配置防火墙 firewall-cmd --add-port=3306/tcp --permanent ...
- 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 ...
随机推荐
- 【Java并发编程】15、ReentrantLock实现原理深入探究
原文已经写得非常详细了,直接把大神的文章转发过来了 https://www.cnblogs.com/xrq730/p/4979021.html 前言 这篇文章被归到Java基础分类中,其实真的一点都 ...
- 理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
ajax的4种方法:$.get.$.post.$getJSON.$ajax. 1.$.get $.get()方法使用GET方式来进行异步请求,它的语法结构为: $.get( url [, data] ...
- Git应用—01初始化项目
1.环境变量GIT_HOME D:\GreenSoftware\PortableGit Path %GIT_HOME%\cmd; 2.初始化git config --global u ...
- Kotlin入门(11)江湖绝技之特殊函数
上一篇文章介绍了Kotlin对函数的输入参数所做的增强之处,其实函数这块Kotlin还有好些重大改进,集中体现在几类特殊函数,比如泛型函数.内联函数.扩展函数.尾递归函数.高阶函数等等,因此本篇文章就 ...
- Android--字符串和Drawable之间互相转化
//将字符串转化成Drawable public synchronized static Drawable StringToDrawable(String icon) { if (icon == nu ...
- python之装饰器函数
本章内容 引入 装饰器的形成过程 开放封闭原则 谈装饰器主要功能和装饰器固定结构 带参数的装饰器 多个装饰器装饰一个函数 引入 作为一个会写函数的python开发,我们从今天开始要去公司上班了.写了一 ...
- 洗礼灵魂,修炼python(13)--模块random,math,pickle
random 1.作用: random模块用于生成随机数 2.常用函数: random:用于生成一个0到1的随机符点数: 0 <= n < 1.0 uniform(a, b):用于生成一个 ...
- python第二十一天---昨天没写完作业
作业 2, 模拟计算器开发:实现加减乘除及拓号优先级解析用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 ...
- 转,ffmpeg参数中文详细解释
a) 通用选项 -L license-h 帮助-fromats 显示可用的格式,编解码的,协议的...-f fmt 强迫采用格式fmt-I filename 输入文件-y 覆盖输出文件-t durat ...
- Linux 小知识翻译 - 「RAID」
最近术语「RAID」变得比较有名.「RAID」是指将多个HDD组合起来使用,从而提高存储可靠性的一种技术. 那么,关于 RAID 中的 「RAID 0」「RAID 1」「RAID 5」等各种「RAID ...