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_分解质因数
题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个 ...
- 解决VM提示:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary files.
问题: 在开启虚拟机的时候报: VMware Workstation cannot connect to the virtual machine. Make sure you have rights ...
- 使用git连接本地和远程github
使用git连接本地和远程github 网上很多github的流程比较乱,自己尝试整理了一下,主要是步骤较为清晰,如果有不清楚的可详细进行搜索对比 1. 申请和设置github https://gith ...
- Spring@Autowired注解与自动装配(转发)
1 配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...
- LearnX控件漏洞挖掘与利用
前言 大学英语会用到一个 ActiveX 插件 LearnX ,最近从网上下了一个下来分析了一下,找到了一些漏洞并完成了 exploit . 虽然涉及的知识比较老旧,不过还是挺有意思的.这里分享一下整 ...
- Android BitmapUtils工具类
Bitmap工具类 public final class BitmapUtils { public static final String TAG = "BitmapUtil"; ...
- OCaml相关
1.open Core.Std 时报Unbound module Core 先安装库 $ opam init $ opam install core $ opam install utop 在~/.o ...
- jmeter 压力测试
转自: https://blog.csdn.net/cbzcbzcbzcbz/article/details/78023327 Jmeter压力测试简单教程(包括服务器状态监控) 2017年09月18 ...
- [20171113]修改表结构删除列相关问题4.txt
[20171113]修改表结构删除列相关问题4.txt --//连续写了3篇修改表结构删除列的相关问题,链接如下: http://blog.itpub.net/267265/viewspace-214 ...
- 带你熟悉SQLServer2016中的System-Versioned Temporal Table 版本由系统控制的临时表
什么是 System-Versioned Temporal Table? System-Versioned Temporal Table,暂且容我管它叫版本由系统控制的临时表,它是 SQL Serve ...