实施PXC 5.7

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Percona XtraDB Cluster(简称PXC集群)提供了MySQL高可用的一种实现方法。 PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(使用了Galera library,一个通用的用于事务型应用的同步、多主复制插件)。
Percona XtraDB Cluster(简称PXC集群)提供了MySQL高可用的一种实现方法。
  • PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(使用了Galera library,一个通用的用于事务型应用的同步、多主复制插件)。
  • 集群是有节点组成的,推荐3-8个节点,实际环境一般都是3个节点
  • 每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。
  • 每个节点都包含完整的数据副本。

PXC特性:
  • 同步复制,事务要么在所有节点提交或不提交。
  • 多主复制,可以在任意节点进行写操作。
  • 在从服务器上并行应用事件,真正意义上的并行复制。
  • 节点自动配置,数据一致性(基于innodb引擎层),不再是异步复制。

PXC限制:
  • 当前版本(5.6.20)的复制只支持InnoDB引擎,其他存储引擎的更改不复制。然而,DDL(Data Definition Language) 语句在statement级别被复制,并且,对mysql.*表的更改会基于此被复制。wsrep_replicate_myisam实验参数能复制,但是不推荐。例如CREATE USER...语句会被复制,但是DML不会被复制,例如INSERT INTO mysql.user...语句则不会。
  • PXC集群一致性控制机制,事有可能被终止,原因如下:集群允许在两个节点上同时执行操作同一行的两个事务,但是只有一个能执行成功,另一个会被终止,集群会给被终止的客户端返回死锁错误(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
  • 写入效率取决于节点中最弱的一台,因为PXC集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。
  • 在多主环境下LOCK/UNLOCK TABLES不支持。以及锁函数GET_LOCK(), RELEASE_LOCK()…  lock tables操作不能阻塞其他节点继续更新表,只是本机被lock了失去意义了,而且这个也只是针对myisam才有意义,事务型的存储引擎无意义
  • 允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。LOAD DATA INFILE processing will commit every 10 000 rows. So large transactions due to LOAD DATA will be split to series of small transactions.
  • DELETE操作不支持没有主键的表。没有主键的表在不同的节点顺序将不同,如果执行SELECT…LIMIT… 将出现不同的结果集。
  • 查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。log_output = FILE
  • XA事务不支持,由于在提交上可能回滚。
  • 如果DDL语句有问题将破坏集群。alter table会锁住全部实例,要么死等,要么关闭一个节点,但是最好的还是用pt-online-schmea-change(还是要避免高峰期)
  • 不支持innodb表空间传输


一、安装软件
1、下载Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101.tar.gz
  1. 注意一点:centos要下载带ssl101的安装包
  • ssl100: for all supported Debian and Ubuntu versions
  • ssl101: for supported Red Hat Enterprise Linux derivatives

默认端口
  • 3306
  • 4444
  • 4567
  • 4568

[root@my01 ~]# getenforce
Disabled
[root@my01 ~]# /etc/init.d/iptables status
iptables:未运行防火墙。

官方文档已经没有卸载mysql-lib,还是按照以前方法卸载
rpm -qa|grep mysql-libs|xargs rpm -e --nodeps
需要依赖包
perl-Time-HiRes perl-DBD-MySQL.x86_64 perl-IO-Socket-SSL.noarch  nc libev 
socat 提供 两个独立数据的双向传输之间起到中继作用的软件
Percona-XtraDB-Cluster-galera 提供 / usr / lib64 / libgalera_smm . so tarball的lib目录已经包含了这个库文件,所以路径要记得修改


2、第一个节点修改 /etc/my.cnf
mkdir /data/mysql/pxc3306/{data,logs,tmp} -p
chown mysql.mysql /data/mysql/pxc3306/ -R

#其他参数
#pxc from percona
binlog_format=row
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so
wsrep_cluster_address=gcomm://10.20.30.101,10.20.30.102,10.20.30.103
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_node_address=10.20.30.101
wsrep_sst_method=xtrabackup-v2
wsrep_cluster_name=my_pxc_cluster
wsrep_sst_auth="sstuser:sstpwd"
3、启动第一个节点
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
mysqld --defaults-file=/etc/my.cnf --initialize
cat error.log 查看是否有错误和临时root密码

[root@my01 data]# /etc/init.d/mysql bootstrap-pxc
Bootstrapping PXC (Percona XtraDB Cluster)Starting MySQL (Percona XtraDB Cluster).2018-01-02T09:21:15.749596Z mysqld_safe The file /mnt/workspace/percona-xtradb-cluster-5.7-binary-tarball/label_exp/centos6-64/Percona-XtraDB-Cluster-5.7.19-29.22/374/usr/local/Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101/bin/mysqld
does not exist or is not executable. Please cd to the mysql installation
directory and restart this script from there as follows:
./bin/mysqld_safe&
The server quit without updating PID file (/data/mysql/pxc3[失败]ta/mysql.pid).
MySQL (Percona XtraDB Cluster) server startup failed!      [失败]


代码写死了,需要执行替换
cp mysqld_safe mysqld_safe.bak
sed -i 's#/mnt/workspace/percona-xtradb-cluster-5.7-binary-tarball/label_exp/centos6-64/Percona-XtraDB-Cluster-5.7.19-29.22/374/usr/local/Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101#/usr/local/mysql#g' /usr/local/mysql/bin/mysqld_safe

/etc/init.d/mysql bootstrap-pxc
centos7应该这样启动   systemctl start mysql@bootstrap.serv ice

mysql -S /tmp/pxc3306.sock -uroot -p
>alter user user() identified by 'gouliping';
>flush privileges;

Akv3y0f4SAEKUIACFKAABShAAQpQgAK1SYCBtdp0


> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'sstpwd';
> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, PROCESS ON *.* TO 'sstuser'@'localhost';        # 比官方文档中多了PROCESS权限
> FLUSH PRIVILEGES;

mysql -usstuser -psstpwd -e 'show databases'

4、第二个节点配置
  • 修改my.cnf    (改server_uuid和wsrep_node_address)
  • 初始化(不需要修改密码,启动起来后,会同步)
  • 启动
    • cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
  • /etc/init.d/mysql start

5、第三个节点配置
同第二个节点一样

Abylj5+HEEssAAAAAElFTkSuQmCC

6、建表测试同步

root@ localhost@pxc3306.sock [(none)]>create database pxc;
Query OK, 1 row affected (0.04 sec)

root@ localhost@pxc3306.sock [(none)]>use pxc;
Database changed
root@ localhost@pxc3306.sock [pxc]>create table exp (node_id int primary key,node_name varchar(30));
Query OK, 0 rows affected (0.02 sec)

root@ localhost@pxc3306.sock [pxc]>insert into exp values(1,'my03');
Query OK, 1 row affected (0.01 sec)

root@ localhost@pxc3306.sock [(none)]>select * from pxc.exp;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
|       1 | my03      |
+---------+-----------+
1 row in set (0.00 sec) 
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
监控 安全 关系型数据库
在规划阿里云RDS跨区迁移资源和服务可用性
在规划阿里云RDS跨区迁移资源和服务可用性
303 4
|
2月前
|
安全 关系型数据库 分布式数据库
PolarDB 的安全性和合规性措施
【8月更文第27天】随着云计算技术的不断发展,企业对云数据库的安全性和合规性的需求日益增长。阿里云的 PolarDB 作为一款高度兼容 MySQL、PostgreSQL 和 Oracle 的关系型数据库服务,提供了强大的安全保护和合规性支持。本文将详细探讨 PolarDB 如何确保数据安全,并符合各种法规要求。
52 0
|
3月前
|
网络协议 关系型数据库 MySQL
【最佳实践】MySQL数据库迁移到PXC集群
借本次数据库迁移实践,再次总结一下MySQL数据库迁移到PXC的最佳操作路径。
61 0
|
5月前
|
关系型数据库 分布式数据库 数据库
【PolarDB开源】PolarDB安全策略:强化数据库防护的多维度措施
【5月更文挑战第24天】PolarDB,阿里云的高性能云原生数据库,提供全面的安全策略,包括SSL/TLS加密、VPC网络隔离、用户访问控制、数据加密和监控审计,构建多层防护体系。通过角色权限、列级加密和审计日志等措施,确保数据传输、访问和存储的安全。建议定期审计、更新系统、安全培训和备份策略,以增强数据库安全性。
234 2
|
5月前
|
安全 关系型数据库 MySQL
rds迁移评估与规划
rds迁移评估与规划
80 1
|
5月前
|
SQL 监控 关系型数据库
规划阿里云RDS跨区迁移业务需求迁移方案设计
规划阿里云RDS跨区迁移业务需求迁移方案设计
73 5
|
5月前
|
存储 运维 关系型数据库
规划阿里云RDS跨区迁移业务需求业务影响分析
规划阿里云RDS跨区迁移业务需求业务影响分析
62 4
|
5月前
|
监控 容灾 安全
规划阿里云RDS跨区迁移并构建容灾与备份策略
规划阿里云RDS(Relational Database Service)跨区迁移并构建容灾与备份策略
172 2
|
5月前
|
监控 关系型数据库 测试技术
规划阿里云RDS跨区迁移业务需求
规划阿里云RDS(Relational Database Service)跨区迁移业务需求
43 1
|
弹性计算 运维 数据中心
运维编排系列场景--跨账号跨地域实例操作系统补丁修复
运维编排(OOS) 简介什么是OOSOperation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于OOS更