MySQL高可用架构之MySQL5.7.19 PXC
CentOS7.3下Percona-XtraDB-Cluster-5.7.19集群部署
PXC三节点安装:
node1:10.10.10.11
node2:10.10.10.12
node3:10.10.10.13
软件版本选择:
Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101
percona-xtrabackup-2.4.11-Linux-x86_64.libgcrypt11.tar.gz/percona-xtrabackup-2.4.12-Linux-x86_64.libgcrypt11.tar.gz
注意openssl版本,ssl100、ssl101、ssl102分别对应三类linux版本,所以下载ssl101

#node1、node2、node3
操作系统版本
[root@node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@node1 ~]# systemctl status firewalld.service
* firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@node1 ~]#
[root@node1 ~]# getenforce
Disabled
[root@node1 ~]#cat /etc/hosts
#for pxc test
10.10.10.13 node3
10.10.10.11 node1
10.10.10.12 node2
安装依赖包:
yum install -y git scons gcc gcc-c++ openssl check cmake bison boost-devel asio-devel libaio-devel ncurses-devel readline-devel pam-devel socat
创建MySQL,basedir和datadir,编辑my.cnf
[root@node1 ~]#ls /opt/source
percona-xtrabackup-2.4.12-Linux-x86_64.libgcrypt11.tar.gz
Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101.tar.gz
[root@node1 ~]#tar -zxf percona-xtrabackup-2.4.12-Linux-x86_64.libgcrypt11.tar.gz
[root@node1 ~]#tar -zxf Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101.tar.gz
[root@node1 ~]#ln -s /opt/source/Percona-XtraDB-Cluster-5.7.14-rel8-26.17.1.Linux.x86_64.ssl100 /usr/local/pxc
ln -s /opt/source/xtrabackup-2.4.11/bin/xtrabackup /opt/source/Percona-XtraDB-Cluster-5.7.22-rel22-29.26.1.Linux.x86_64.ssl101/bin/xtrabackup
[root@node1 ~]#mkdir -p /data/mysql_33071/{data,logs,run,tmp}
[root@node1 ~]#groupadd -g 1000 mysql
[root@node1 ~]#useradd -r -g mysql -u 1000 -s /bin/false mysql
编辑my.cnf配置文件
[root@node1 ~]#vi /data/mysql_33071/my.cnf
[root@node1 ~]#chown -R mysql:mysql /data/mysql_33071
[root@node1 ~]#chown -R mysql:mysql /usr/local/pxc
node1的操作:
#node1:初始化实例和启动实例方式
/usr/local/pxc/bin/mysqld --defaults-file=/data/mysql_33071/my.cnf --initialize --basedir=/usr/local/pxc --datadir=/data/mysql_33071/data --user=mysql
在错误日志,记录下root初始密码!
启动实例:
/usr/local/pxc/bin/mysqld_safe --defaults-file=/data/mysql_33071/my.cnf --ledir=/usr/local/pxc/bin --wsrep_new_cluster &
#当采用自定义路径的my.cnf初始化及启动实例的时候,需要首先指定defaults-file;而且mysqld采用自定义路径时,需要指定ledir
[root@masterdb ~]#ps -ef |grep mysql
root 27690 1 0 9 ? 00:00:00 /bin/sh /usr/local/pxc/bin/mysqld_safe --defaults-file=/data/mysql_33071/my.cnf --ledir=/usr/local/pxc/bin --wsrep_new_cluster
mysql 28111 27690 0 9 ? 00:11:07 /usr/local/pxc/bin/mysqld --defaults-file=/data/mysql_33071/my.cnf --basedir=/usr/local/pxc --datadir=/data/mysql_33071/data
--plugin-dir=/usr/local/pxc/lib/mysql/plugin --user=mysql --wsrep-provider=/usr/local/pxc/lib/libgalera_smm.so --wsrep-new-cluster --log-error=/data/mysql_33071/logs/mysql_error.log --pid-file=/data/mysql_33071/logs/mysql.pid
--socket=/data/mysql_33071/run/mysql.sock --port=33071 --wsrep_start_position=4946b0f0-ad00-11e8-8524-f2562c72b43b:5
修改root密码:
[root@node1 ~]#mysql -uroot -p -S /data/mysql_33071/run/mysql.sock
mysql> set password=password('root');
mysql> flush privileges;
创建sst user,并授予相应权限
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'sstuser';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
备份数据库
[root@node1 ~]#innobackupex --user=root --password="root" --socket=/data/mysql_33071/run/mysql.sock /tmp/
node2、node3的操作:
###node2、node3:###
用node1的备份,在节点2、节点3进行恢复;启动,加入复制集
innobackupex --defaults-file=/etc/my.cnf --user=root --password=xxxxxx --apply-log /data/2019-01-12_22-45-44
innobackupex --defaults-file=/etc/my.cnf --user=root --password=xxxxxx --copy-back /data/2019-01-12_22-45-44
/usr/local/pxc/bin/mysqld_safe --defaults-file=/data/mysql_33071/my.cnf --ledir=/usr/local/pxc/bin &
验证:
node1检查pxc状态
mysql> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.01 sec)
show status like 'wsrep%';
mysql> show global status like 'wsrep_incoming_addresses';
+--------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------------+
| wsrep_incoming_addresses | 10.10.10.12:33071,10.10.10.13:33071,10.10.10.11:33071 |
+--------------------------+-----------------------------------------------------------+
1 row in set (0.01 sec)
[root@node1 ~]#vi /data/mysql_33071/my.cnf
[client]
socket=/data/mysql_33071/run/mysql.sock
port = [mysqld]
port =
server_id =
user = mysql
basedir = /usr/local/pxc
datadir =/data/mysql_33071/data
tmpdir = /data/mysql_33071/tmp socket = /data/mysql_33071/run/mysql.sock
pid-file = /data/mysql_33071/logs/mysql.pid
log-error = /data/mysql_33071/logs/mysql_error.log
slow_query_log_file = /data/mysql_33071/logs/slow.log
log_warnings =
long_query_time =
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES innodb_buffer_pool_size = 2048M ## pxc variables ##
# Path to Galera library
wsrep_provider=/usr/local/pxc/lib/libgalera_smm.so
# Cluster connection URL contains the IPs of node#, node# and node#
wsrep_cluster_address=gcomm://10.10.10.11,10.10.10.12,10.10.10.13
# 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 InnoDB autoincrement locking mode is a requirement for Galera
innodb_autoinc_lock_mode=
# Node name
#wsrep_node_name = pxc1
wsrep_node_name = masterdb
# Node address
wsrep_node_address=10.10.10.11
# SST method默认情况下,Percona XtraDB群集使用Percona XtraBackup进行状态快照传输(SST)
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=my-pxc
# Authentication for SST method
wsrep_sst_auth="sstuser:sstuser" #将SST的身份验证凭据指定为<sst_user>:<sst_pass>
node1:my.cnf
[client]
socket=/data/mysql_33071/run/mysql.sock
port = [mysqld]
port =
server_id =
user = mysql
basedir = /usr/local/pxc
datadir =/data/mysql_33071/data
tmpdir = /data/mysql_33071/tmp socket = /data/mysql_33071/run/mysql.sock
pid-file = /data/mysql_33071/logs/mysql.pid
log-error = /data/mysql_33071/logs/mysql_error.log
slow_query_log_file = /data/mysql_33071/logs/slow.log
log_warnings =
long_query_time =
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES innodb_buffer_pool_size = 2048M ## pxc variables ##
# Path to Galera library
wsrep_provider=/usr/local/pxc/lib/libgalera_smm.so
# Cluster connection URL contains the IPs of node#, node# and node#
wsrep_cluster_address=gcomm://10.10.10.11,10.10.10.12,10.10.10.13
# 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 InnoDB autoincrement locking mode is a requirement for Galera
innodb_autoinc_lock_mode=
# Node name
#wsrep_node_name = pxc2
wsrep_node_name = qa06..yz
# Node address
wsrep_node_address=10.10.10.12
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=my-pxc
# Authentication for SST method
wsrep_sst_auth="sstuser:sstuser" pxc_strict_mode=ENFORCING
node2:my.cnf
[client]
socket=/data/mysql_33071/run/mysql.sock
port = [mysqld]
port =
server_id =
user = mysql
basedir = /usr/local/pxc
datadir =/data/mysql_33071/data
tmpdir = /data/mysql_33071/tmp socket = /data/mysql_33071/run/mysql.sock
pid-file = /data/mysql_33071/logs/mysql.pid
log-error = /data/mysql_33071/logs/mysql_error.log
slow_query_log_file = /data/mysql_33071/logs/slow.log
log_warnings =
long_query_time =
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES innodb_buffer_pool_size = 2048M ## pxc variables ##
# Path to Galera library
wsrep_provider=/usr/local/pxc/lib/libgalera_smm.so
# Cluster connection URL contains the IPs of node#, node# and node#
wsrep_cluster_address=gcomm://10.10.10.11,10.10.10.12,10.10.10.13
# 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 InnoDB autoincrement locking mode is a requirement for Galera
innodb_autoinc_lock_mode=
# Node name
wsrep_node_name = cgdb..yz
# Node address
wsrep_node_address=10.10.10.13
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=my-pxc
# Authentication for SST method
wsrep_sst_auth="sstuser:sstuser" pxc_strict_mode=ENFORCING
node3:my.cnf
Percona XtraDB Cluster与MySQL Replication区别在于:
分布式系统的CAP理论:
C— 一致性,所有节点的数据一致;
A— 可用性,一个或多个节点失效,不影响服务请求;
P— 分区容忍性,节点间的连接失效,仍然可以处理请求;
任何一个分布式系统,需要满足这三个中的两个。
MySQL Replication: 可用性和分区容忍性;
Percona XtraDBCluster: 一致性和可用性。
因此MySQL Replication并不保证数据的一致性,而Percona XtraDB Cluster提供数据一致性
阅读:
https://www.cnblogs.com/kevingrace/p/5685371.html
MySQL高可用架构之MySQL5.7.19 PXC的更多相关文章
- MySQL高可用架构之MySQL5.7组复制MGR
MySQL高可用架构之MySQL5.7组复制MGR########################################################################### ...
- mysql高可用架构之MHA,haproxy实现读写分离详解
MySQL高可用架构之MHA 一.运维人员需要掌握的MySQL技术: 1.基本SQL语句 2.基本的管理[库表数据的管理 权限的管理] 3.容灾 保证数据不丢失. 二.工作中MySQ ...
- 032:基于Consul和MGR的MySQL高可用架构
目录 一.Consul 1.Consul简介 2.准备环境 3.Consul 安装 4.Consul配置文件 5.Consul 服务检查脚本 6.Consul启动 二.MGR搭建 1.MGR配置 2. ...
- (转)MySQL高可用架构之MHA
MySQL高可用架构之MHA 原文:http://www.cnblogs.com/gomysql/p/3675429.html 简介: MHA(Master High Availability)目前 ...
- MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解
MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Mycat介绍 1>.什么是Mycat Mycat背后是 ...
- MySQL 高可用架构在业务层面的应用分析
MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&idx=1&a ...
- 从mysql高可用架构看高可用架构设计
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- MySQL高可用架构应该考虑什么? 你认为应该如何设计?
一.MySQL高可用架构应该考虑什么? 对业务的了解,需要考虑业务对数据库一致性要求的敏感程度,切换过程中是否有事务会丢失 对于基础设施的了解,需要了解基础设施的高可用的架构.例如 单网线,单电源等情 ...
- mysql高可用架构MHA搭建(centos7+mysql5.7.28)
无论是传统行业,还是互联网行业,数据可用性都是至关重要的,虽然现在已经步入大数据时代,nosql比较流行,但是作为数据持久化及事务性的关系型数据库依然是项目首选,比如mysql. 现在几乎所有的公司项 ...
随机推荐
- pthread.h 的 undefined reference to `pthread_create'
在编译中要加 -lpthread或-pthread参数(不同版本的gcc可能不一样,man gcc可以查阅对应参数). 例如:在加了头文件#include <pthread.h>之后执行 ...
- SGU 521 North-East ( 二维LIS 线段树优化 )
521. "North-East" Time limit per test: 0.5 second(s)Memory limit: 262144 kilobytes input: ...
- django模板传入参数的处理方式与反向生成url
前端模板传入参数的处理方式 1.传入单个参数: 前端使用href="/sel-{{ row.0 }}.html, url使用url(r'sel-(.+).html',home.index), ...
- 2019 360杯 re wp--Here are some big nums
测试文件:https://www.lanzous.com/i7303oh 1.准备 获取信息: 32位文件 2.IDA打开 找到主函数之后,反编译为伪C代码 int sub_404D70() { in ...
- 虚拟机的linux(CentOS)系统安装
一.安装虚拟机:VirtualBox 1.软件下载:https://www.virtualbox.org/ 2.一路点击下一步完成安装 二.安装linux:CentOS6.8 1.官方网站:ht ...
- arcgis server10.2发布地图服务报错
发布地图服务时,读取了本机电脑中的切片方案.发布服务,报打包成功,但发布失败错误. 解决办法:给arcgis账户,赋予读写权限即可.重复发布服务,成功发布.
- MySQL使用explain时各字段解释
1.id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: (1)id相同,执行顺序由上至下 id相同,执行顺序由上至下 此例中 先执行where 后的 ...
- 源讯科技(中国)有限公司(Atos Worldline)
源讯公司是欧洲***的IT服务公司,去年营收达到88亿欧元,在全球52个国家拥有77100名员工.Worldline为Atos(源讯)全资子公司,专注于金融支付领域.Worldline在B2B及B2C ...
- GUI学习之三十—QCalendarWidget学习总结
今天学习的是最后一个展示控件——QCalendarWidget 一.描述 QCalendarWidget提供了一个基于每月的日历控件,允许用户选择一个日期,还可以看一下里面的图示: QCalendar ...
- 自定义指令 限制input 的输入位数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...