网站建设毕业设计指导老师意见,珠海九洲旅游开发公司,网络设计培训班,wordpress安装包下载1. PXC集群概述
1.1. PXC介绍
Percona XtraDB Cluster#xff08;简称PXC#xff09; 是基于Galera的MySQL高可用集群解决方案Galera Cluster是Codership公司开发的一套免费开源的高可用方案PXC集群主要由两部分组成#xff1a;Percona Server with XtraDB#xff08;数据…1. PXC集群概述
1.1. PXC介绍
Percona XtraDB Cluster简称PXC 是基于Galera的MySQL高可用集群解决方案Galera Cluster是Codership公司开发的一套免费开源的高可用方案PXC集群主要由两部分组成Percona Server with XtraDB数据存储插件和 Write Set Replication patches同步、多主复制插件官网http://galeracluster.com 1.2. PXC特点
数据强一致性无同步延迟写入主服务器的数据所有从服务器必须马上也得有没有主从切换操作无需使用虚拟IP无需一主多从的结构无需vip地址支持InnoDB存储引擎多线程复制多线程同步工作部署使用简单。支持节点自动加入无需手动拷贝数据服务器会自动同步宕机期间的数据无需手动配置
1.3. 相应端口
端口说明3306数据库服务端口4444SST端口4567集群通信端口4568IST端口SSTState Snapshot Transfer 全量同步ISTIncremental State Transfer 增量同步集群通信端口是指集群中各服务器之间通信的端口数据库服务端口3306和集群通信端口4567是每时每刻都开放的 SST 端口4444和IST 端口4568只有数据同步的时候才会开放。
1.4. 主机角色
3台服务器
主机名IP地址在角色pxcnode10192.168.2.10数据库服务器pxcnode20192.168.2.20数据库服务器pxcnode30192.168.2.30数据库服务器
##在每台主机上都修改自己的主机名
[rootlocalhost ~]# hostname pxcnode10 ;su --在192.168.2.10上执行
[rootlocalhost ~]# hostname pxcnode20 ;su --在192.168.2.20上执行
[rootlocalhost ~]# hostname pxcnode30 ;su --在192.168.2.30上执行
##在每台主机上执行修改hosts文件
vim /etc/hosts
#添加下面内容
192.168.2.10 pxcnode10
192.168.2.20 pxcnode20
192.168.2.30 pxcnode302. 部署PXC
2.1. 安装软件包
软件介绍
软件作用percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm在线热备程序qpress.1.1-14.11.x86_64.rpm递归压缩程序Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar集群服务程序
软件下载 percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm 下载地址 https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/ qpress.1.1-14.11.x86_64.rpm 下载地址 http://rpm.pbone.net/results_limit_2_srodzaj_2_dl_40_search_qpress.html Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar 下载地址 https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/LATEST/ 下面的操作三台服务器都需要执行 ##下载软件包
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.13/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpmwget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home%3A/AndreasStieger%3A/branches%3A/Archiving/RedHat_RHEL-6/x86_64/qpress-1.1-14.11.x86_64.rpmwget https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-57/Percona-XtraDB-Cluster-5.7.25-31.35/binary/redhat/7/x86_64/Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar##安装软件包
[rootpxcnode10 ~]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
[rootpxcnode10 ~]# yum -y install *.rpm2.2. 配置服务
相关配置文件
/etc/percona-xtradb-cluster.conf.d/ ---所有的配置文件配置文件说明 mysqld.cnf ------数据库服务运行参数配置文件mysqld_safe.cnf ------mysqld的进程配置文件wsrep.cnf-------PXC集群配置文件 修改配置文件(mysqld.cnf) [mysqld] server-id1 #server-id,不允许重复 datadir/var/lib/mysql #数据库目录的路径 socket/var/lib/mysql/mysql.sock #socker文件的路径 log-error/var/log/mysqld.log #日志文件的路径 pid-file/var/run/mysqld/mysqld.pid #pid文件的路径 log-bin #默认启用binlog日志 log_slave_updates #启用链式复制 expire_logs_days7 #日志文件保留天数默认日志文件保留7天 ##pxcnode10操作
[rootpxcnode10 ~]# cd /etc/percona-xtradb-cluster.conf.d/
[rootpxcnode10 percona-xtradb-cluster.conf.d]# vim mysqld.cnf
[mysqld]
##修改如下
server-id10##pxcnode20操作
[rootpxcnode20 ~]# cd /etc/percona-xtradb-cluster.conf.d/
[rootpxcnode20 percona-xtradb-cluster.conf.d]# vim mysqld.cnf
[mysqld]
##修改如下
server-id20##pxcnode30操作
[rootpxcnode30 ~]# cd /etc/percona-xtradb-cluster.conf.d/
[rootpxcnode30 percona-xtradb-cluster.conf.d]# vim mysqld.cnf
[mysqld]
##修改如下
server-id30修改集群配置文件(wsrep.cnf) wsrep_cluster_addressgcomm:// #集群成员列表3台必须相同 wsrep_node_address192.168.70.63 #本机IP地址 wsrep_cluster_namepxc-cluster #集群名称可自定义3台必须相同 wsrep_node_namepxc-cluster-node #本机主机名 wsrep_sst_auth“sstuser:s3cretPass” #SST数据同步用户授权3台必须相同 ##在pxcnode10操作如下
[rootpxcnode10 percona-xtradb-cluster.conf.d]# vim wsrep.cnf
修改如下
wsrep_cluster_addressgcomm://192.168.2.20,192.168.2.30,192.168.2.10 ---集群成员列表
wsrep_node_address192.168.2.10 ---本机IP地址
wsrep_node_namepxcnode10 ---本机主机名
wsrep_sst_authsstuser:1234 SST数据同步用户密码##在pxcnode20操作如下
[rootpxcnode20 percona-xtradb-cluster.conf.d]# vim wsrep.cnf
修改如下
wsrep_cluster_addressgcomm://192.168.2.10,192.168.2.30,192.168.2.20 ---集群成员列表
wsrep_node_address192.168.2.20 ---本机IP地址
wsrep_node_namepxcnode20 ---本机主机名
wsrep_sst_authsstuser:1234 SST数据同步用户密码##在pxcnode30操作如下
[rootpxcnode30 percona-xtradb-cluster.conf.d]# vim wsrep.cnf
修改如下
wsrep_cluster_addressgcomm://192.168.2.10,192.168.2.20,192.168.2.30 ---集群成员列表
wsrep_node_address192.168.2.30 ---本机IP地址
wsrep_node_namepxcnode30 ---本机主机名
wsrep_sst_authsstuser:1234 SST数据同步用户密码2.3. 启动服务
在任意一台执行即可 启动集群服务添加授权用户 [rootpxcnode10 ~]# systemctl start mysqlbootstrap.service ---启动集群服务
##查看数据库初始密码
[rootpxcnode10 ~]# grep pass /var/log/mysqld.log
2023-02-27T10:23:13.040978Z 1 [Note] A temporary password is generated for rootlocalhost: qgCeYyfl3a*j##使用初始密码登录mysql
[rootpxcnode10 ~]# mysql -uroot -pqgCeYyfl3a*j
##修改root密码
mysql alter user rootlocalhost identified by 1234;
Query OK, 0 rows affected (0.02 sec)mysql flush privileges;
Query OK, 0 rows affected (0.01 sec)
##添加授权用户
mysql grant reload ,lock tables,replication client,process on *.* to sstuserlocalhost identified by 1234;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)
--添加授权用户数据会自动同步到主机20和30上。
reload装载数据的权限lock tables锁表的权限
replication client查看服务状态的权限process管理服务的权限查看进程信息
授权用户和密码必须是集群的配置文件中指定的wsrep_sst_authsstuser:1234。2.4. 启动另外两台数据库服务
##pxcnode20和pxcnode30都需要执行
[rootpxcnode20 ~]# systemctl start mysql
---启动过程比较慢因为第一次启动都会向pxcnode10做全量同步。3. 测试配置
查看集群信息在任意一台操作即可
mysql show status like “%wsrep%”; wsrep_incoming_addresses 192.168.233.72:3306,192.168.233.73:3306,192.168.233.71:3306 //成员列表 wsrep_cluster_size 3 //集群服务器台数 wsrep_cluster_status Primary //集群状态 wsrep_connected ON //连接状态 wsrep_ready ON //服务状态 3.1. 测试集群同步功能
在任意一台服务器上添加访问数据的授权用户在客户端使用授权用户连接任意数据库服务器都可以存储数据且可以查看到同样的数据建表时必须有主键字段
##在任意一台服务器上创建授权用户
mysql grant all on *.* to test% identified by 1234;
##测试test这个用户是否可以登录其他的服务器mysql。
[rootpxcnode10 ~]# mysql -h 192.168.2.30 -utest -p1234
[rootpxcnode10 ~]# mysql -h 192.168.2.20 -utest -p1234
[rootpxcnode10 ~]# mysql -h 192.168.2.10 -utest -p1234
--测试完成我这边都可以登录。##创建数据并创建表
mysql create database sxy default charsetutf8;
mysql create table t1(id int primary key auto_increment,name char(10)not null,sex enum(boy,girl),age int unsigned);
Query OK, 0 rows affected (0.01 sec)
mysql insert into t1 values(1,bob,boy,29);
##在任意一台服务器查看t1表信息。
[rootpxcnode20 ~]# mysql -h192.168.2.10 -utest -p1234 -e select * from sxy.t1;
mysql: [Warning] Using a password on the command line interface can be insecure.
----------------------
| id | name | sex | age |
----------------------
| 1 | bob | boy | 29 |
----------------------
-----其他的我这边就不展示了。 3.2. 测试高可用功能及数据库服务器自动恢复。
测试故障自动恢复 任何一台数据库服务器宕机都不影响用户存取数据服务器运行后自动同步宕机期间的数据 3.2.1. 模拟pxcnode20宕机
##模拟pxcnode20服务停止
[rootpxcnode20 ~]# systemctl stop mysql
[rootpxcnode20 ~]# netstat -nltp |grep 33063.2.2.客户端连接pxcnode10查看集群状态
[rootpxcnode10 ~]# mysql -h192.168.2.10 -utest -p1234
mysql show status like %wsrep%;如图所示集群数量服务器数量变为2台正在运行只有192.168.2.10和192.168.2.30。
3.2.3. 在pxcnode10的sxy.t1表插入数据
mysql use sxy;mysql insert into t1(name,sex,age) values(andy,boy,24),(lucy,girl,29);
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0mysql select * from t1;如图所示红圈圈起来的数据为服务器pxcnode20宕机期间新插入的数据由于服务器pxcnode20宕机只剩下两台服务器步长与服务器的数量有关所以新插入的数据自增长的步长为2。
3.2.4. 在pxcnode30上查看sxy.t1表的内容
[rootpxcnode10 ~]# mysql -h192.168.2.30 -utest -p1234 -e select * from sxy.t1;----------------------
| id | name | sex | age |
----------------------
| 1 | bob | boy | 29 |
| 3 | andy | boy | 24 |
| 5 | lucy | girl | 29 |
----------------------
##可以看的出来数据同步正常。3.2.5. 恢复pxcnode20查看集群状态
[rootpxcnode20 ~]# systemctl start mysql
[rootpxcnode20 ~]# netstat -ntlp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 11409/mysqld
[rootpxcnode20 ~]# mysql -uroot -p1234 -e show status like %wsrep%;如图所示pxcnode20已经加入集群集群服务数量变成3。
3.2.6. 客户端访问pxcnode20查看sxy.t1表内容
[rootpxcnode20 ~]# mysql -uroot -p1234 -e select * from sxy.t1;
mysql: [Warning] Using a password on the command line interface can be insecure.
----------------------
| id | name | sex | age |
----------------------
| 1 | bob | boy | 29 |
| 3 | andy | boy | 24 |
| 5 | lucy | girl | 29 |
----------------------
---可以看的出来新插入的数据已经同步OK。