1. Percona介绍
Percona Server由领先的MySQL咨询公司Percona发布。 Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB 。
Percona团队的最终声明是“Percona Server是由Oracle发布的最接近官方MySQL Enterprise发行版的版本”,因此与其他更改了大量基本核心MySQL代码的分支有所区别。 Percona Server的一个缺点是他们自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。
Percona提供了高性能XtraDB引擎,还提供PXC高可用解决方案,并且附带了perconatoolkit等DBA管理工具箱
2. Percona 安装
我使用yum安装
-
首先安装yum源
yum -y install https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-6.noarch.rpm
2. 安装percona server
yum install -y Percona-Server-server-57
查看/etc/my.cnf的配置信息:
!includedir /etc/my.cnf.d/ !includedir /etc/percona-server.conf.d/ datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
3. 初始化数据库:
mysqld --initialize --user=mysql
4. 启动数据库
service mysqld start
5. 查看mysql进程
ps –ef|grep mysql
6. 获取root初始化密码:
在/var/log/mysqld.log中所有password关键词,获取初始化密码
7. 修改root 密码
Percona 操作跟mysql 一模一样 命令也是一样
3. Percona存储引擎
Percona XtraDB 是 InnoDB 存储引擎的增强版,被设计用来更好的使用更新计算机硬件系统的性能,同时还包含有一些在高性能环境下的新特性。 XtraDB 存储引擎是完全的向下兼容,在 MariaDB 中, XtraDB 存储引擎被标识为”ENGINE=InnoDB”,这个与 InnoDB 是一样的,所以你可以直接用XtraDB 替换掉 InnoDB而不会产生任何问题。 Percona XtraDB 包含有所有 InnoDB’s 健壮性,可依赖的 ACID 兼容设计和高级MVCC 架构。 XtraDB 在InnoDB 的坚实基础上构建,使 XtraDB 具有更多的特性,更好调用,更多的参数指标和更多的扩展。从实践的角度来看, XtraDB 被设计用来在多核心的条件下更有效的使用内存和更加方便,更加可用。新的特性被用来降低 InnoDB 的局限性。性能层面, XtraDB与内置的MySQL 5.1 InnoDB引擎相比,它每分钟可处理2.7倍的事务。
这是以前的数据对比, 现在新版mysql 5.7.x 或者 mysql 8.x 的 Innodb 对比 ,处理已近差不多了。
4. Percona高可用架构
• MHA
• MMM
• ATLAS
• MyCAT
其配置方法也和MySQL一样
5. Percona XtraDB Cluster (PXC)架构
Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案.
Percona XtraDB Cluster提供的特性有
1.同步复制,事务要么在所有节点提交或不提交。
2.多主复制,可以在任意节点进行写操作。
3.在从服务器上并行应用事件,真正意义上的并行复制。
4.节点自动配置。
5.数据一致性,不再是异步复制。
Percona XtraDB Cluster完全兼容MySQL和Percona Server
,表现在:
-
数据的兼容性
-
应用程序的兼容性:无需更改应用程序
1.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。
2.每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,
从PXC机器群可以拆分成单独的服务器。
3.每个节点都包含完整的数据副本。
5.1 PXC 优缺点
优点如下:
1.当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需远程访问。
2.无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作。
3.良好的读负载扩展,任意节点都可以查询。
缺点如下:
1.加入新节点,开销大。需要复制完整的数据
2.不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。
3.有多少个节点就有多少重复的数据
Percona XtraDB Cluster基于XtraDB的Percona Server以及包含写复制集补丁。 使用Galera 2.x library,事务型应用下的通用的多主同步复制插件
。
6. Percona XtraDB Cluster 搭建
3个节点环境
主机名 | ip | 数据库版本 |
percona1 | 10.0.0.130 | percona 5.7.23 |
percona2 | 10.0.0.131 | percona 5.7.23 |
percona3 | 10.0.0.132 | percona 5.7.23 |
关闭了selinux ,防火墙
各节点做好host解析
/etc/hosts 中添加 10.0.0.130 percona1 10.0.0.131 percona2 10.0.0.132 percona3
每个节点删除原本安装的percona server软件:
yum erase -y Percona-Server-server-57 yum erase -y Percona-Server-client-57
每个节点安装软件:
yum install -y Percona-XtraDB-Cluster-57
在log文件中找到root的临时密码:
每个节点修改root密码:我这省略
配置各个节点的/etc/percona-xtradb-cluster.conf.d/wsrep.cnf文件:
第一个节点percona1
[mysqld] wsrep_provider=/usr/lib64/galera3/libgalera_smm.so wsrep_cluster_address=gcomm://10.0.0.130,10.0.0.131,10.0.0.132 binlog_format=ROW default_storage_engine=InnoDB wsrep_slave_threads= 8 wsrep_log_conflicts innodb_autoinc_lock_mode=2 wsrep_node_address=10.0.0.130 wsrep_cluster_name=pxc-cluster wsrep_node_name=percona1 pxc_strict_mode=ENFORCING wsrep_sst_method=rsync
第一个节点启动必须用下面这种方式:
systemctl start mysql@bootstrap.service
第二个节点
[mysqld] wsrep_provider=/usr/lib64/galera3/libgalera_smm.so wsrep_cluster_address=gcomm://10.0.0.130,10.0.0.131,10.0.0.132 binlog_format=ROW default_storage_engine=InnoDB wsrep_slave_threads= 8 wsrep_log_conflicts innodb_autoinc_lock_mode=2 wsrep_node_address=10.0.0.131 wsrep_cluster_name=pxc-cluster wsrep_node_name=percona2 pxc_strict_mode=ENFORCING wsrep_sst_method=rsync
其他节点启动percona
service mysql start
第三个节点
[mysqld] wsrep_provider=/usr/lib64/galera3/libgalera_smm.so wsrep_cluster_address=gcomm://10.0.0.130,10.0.0.131,10.0.0.132 binlog_format=ROW default_storage_engine=InnoDB wsrep_slave_threads= 8 wsrep_log_conflicts innodb_autoinc_lock_mode=2 wsrep_node_address=10.0.0.132 wsrep_cluster_name=pxc-cluster wsrep_node_name=percona3 pxc_strict_mode=ENFORCING wsrep_sst_method=rsync
第三个节点启动
service mysql start
查看所有的的pxc的状态
show status like 'wsrep_%';
两个节点上分别插入数据测试:
第一个节点:
第二个节点:
关闭第一个节点,对外操作的也没影响
恢复第一节点
其他节点插入数据,
第一节点恢复启动,数据也是同步的