1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > MySQL数据库集群之PXC方案---安装pxc集群

MySQL数据库集群之PXC方案---安装pxc集群

时间:2023-12-16 04:34:25

相关推荐

MySQL数据库集群之PXC方案---安装pxc集群

1. 准备工作

1.1 准备虚拟机

因为我们要实现的是三台mysql节点集群,所以准备3台虚拟机

192.168.1.173192.168.1.174192.168.1.166

1.2 下载pxc资源包

在本文中讲的安装方式是本地安装,所以提前下载好资源包,下载pxc程序资源包。下载之后解压压缩包。pxc捆绑了percona数据库,所以无需单独下载percona安装包

1.3 qpress-11-1.el7.x86_64

下载qpress-11-1.el7.x86_64.prm ,可以去百度或者谷歌下载。

下载完1.2和1.3的资源如下图,由于pxc官网是国外网站,在此添加某国内云链接

2. PXC简介

PXC全称是Percona XtraDB Cluster, 是著名的mysql公司Percona出品的免费的数据库集群产品。

PXC对数据库集群是基于Galera的面向OLTP的多主同步复制插件。

长期以来mysql都缺少官方原生的集群方案,这也给很多第三方公司提供了机会,所以Galera技术就是众多mysql集群技术中较为著名的一种,mysql自带的主从复制模式天生就不能保证数据同步的完整一致,所以很多大公司花了很多人力和物力去解决这个问题,但是收效甚微,幸运的是Galera带来了多主架构,同步复制,并发复制,故障切换等一系列的功能。这才是真正意义上保证了数据的一致性,正确性和完整性。

PXC主要用于解决MySQL集群中数据同步强一致性的问题。

PXC是MySQL集群方案中公认的优先方案之一

2.1 PXC的特点

同步复制,事务在所有集群节点提交成功,要么不成功。

多主复制,可以在任意一个节点写入

数据同步的强一致性,所有节点数据保持一致

2.2 尽可能的控制PXC集群的规模

PXC集群节点越多,数据同步的速度就越慢

2.3 所有PXC节点的硬件配置要相同

PXC集群数据同步的速度取决于配置最低的节点。因为PXC是同步复制,一个节点写入的数据的速度慢,会拖慢整个集群的写入速度

2.4 PXC集群只支持InnoDB引擎

只有InnoDB的数据才会被同步

3. 安装PXC

3.1 删除MariaDB程序包

yum -y remove mari*

3.2 开放防火墙端口

PXC集群要使用4个端口,所以防火墙要开放下边4个端口

firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --zone=public --add-port=4444/tcp --permanentfirewall-cmd --zone=public --add-port=4567/tcp --permanentfirewall-cmd --zone=public --add-port=4568/tcp --permanentfirewall-cmd --reload

3.3 关闭SELINUX

把配置文件中的SELINUX的值改为disabled

vi /etc/selinux/config

修改之后执行reboot,重启linux系统

reboot

3.4 将pxc资源包上传到服务器并安装

在/usr/local目录下创建percona文件夹,将资源包上传到percona目录中

cd /usr/localmkdir perconacd percona

安装PXC

yum localinstall *.rpm

3.5 修改数据库配置文件

Percona数据库配置文件和mysql的配置文件不一样。

用下边命令查看Percona数据库配置文件的位置

cat /etc/f

进入Percona数据库配置文件的目录

mysql的常用信息都写在了f文件,f文件配置的是pxc集群的信息

我们可以简化一下配置文件,将f文件和f文件的内容复制到/etc/f文件中,把所有配置信息写到一个文件中,并添加字符集等配置细腻

[client]socket=/var/lib/mysql/mysql.sock[mysqld]server-id=1datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidlog-binlog_slave_updatesexpire_logs_days=7character_set_server = utf8bind-address = 0.0.0.0#跳过DNS解析skip-name-resolve# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0

初始化root账户密码

启动mysql

systemctl start mysqld

查看默认密码

cat /var/log/mysqld.log | grep "A temporary password"

修改MySQL密码

mysql_secure_installation

输入新密码,新密码需要有大小写字母加数组,我们这里设置Abc_123456

后边有一些初始化的操作,所有都输入y

创建远程管理员账户

root账户默认不允许远程连接,所以我们创建一个可以远程连接的账户

进入mysql

mysql -u root -p

创建新用户赋予远程连接权限

CREATE USER 'admin'@'%' IDENTIFIED BY 'Abc_123456';GRANT all privileges ON *.* TO 'admin'@'%';FLUSH PRIVILEGES;exit

关闭服务

systemctl stop mysqld

在f文件中添加pxc集群配置信息

server-id=1 #PXC集群中MySQL实例的唯一ID,不能重复,必须是数字wsrep_provider=/usr/lib64/galera3/libgalera_smm.sowsrep_cluster_name=pxc-cluster #PXC集群的名称wsrep_cluster_address=gcomm://192.168.1.173,192.168.1.174,192.168.1.166wsrep_node_name=pxc1 #当前节点的名称wsrep_node_address=192.168.1.173 #当前节点的IPwsrep_sst_method=xtrabackup-v2 #同步方法(mysqldump、rsync、xtrabackup)wsrep_sst_auth= admin:Abc_123456 #同步使用的帐户pxc_strict_mode=ENFORCING #同步严厉模式binlog_format=ROW #基于ROW复制(安全可靠)default_storage_engine=InnoDB #默认引擎innodb_autoinc_lock_mode=2 #主键自增长不锁表

最终的配置文件f是这样的

[client]socket=/var/lib/mysql/mysql.sock[mysqld]server-id=1datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidlog-binlog_slave_updatesexpire_logs_days=7character_set_server = utf8bind-address = 0.0.0.0#跳过DNS解析skip-name-resolve# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0wsrep_provider=/usr/lib64/galera3/libgalera_smm.sowsrep_cluster_name=pxc-clusterwsrep_cluster_address=gcomm://192.168.1.173,192.168.1.174,192.168.1.166wsrep_node_name=pxc1wsrep_node_address=192.168.1.173wsrep_sst_method=xtrabackup-v2wsrep_sst_auth= admin:Abc_123456pxc_strict_mode=ENFORCINGbinlog_format=ROWdefault_storage_engine=InnoDBinnodb_autoinc_lock_mode=2

以上步骤在其余两台虚拟机重复此步骤,f的文件中server-id,wsrep_node_name,wsrep_node_address这三个参数是不能重复的值

3.6 启动命令

3.6.1 主节点的管理命令(第一个启动的PXC节点)

systemctl start mysql@bootstrap.servicesystemctl stop mysql@bootstrap.servicesystemctl restart mysql@bootstrap.service

3.6.2 非主节点的管理命令(非第一个启动的PXC节点)

service mysql startservice mysql stop service mysql restart

3.7 连接测试

使用navicat连接三个数据库节点,连接成功

3.8 查看PXC集群状态信息

在任意一个节点执行以下命令

show status like 'wsrep_cluster%';

wsrep_cluster_size参数是说明pxc集群是几个数据库节点的集群。说明集群搭建成功。

4. 测试

我们在192.168.1.166的数据库中创建一个逻辑库testdb

刷新192.168.1.173和192.168.1.174的节点的数据库,发现也同步了testdb数据库

接着在192.168.1.173的testdb的数据库上创建一张student表

刷新其余两个节点的数据库,发现也同步表成功

我们在192.168.1.174节点上新建几条学生数据

刷新其余两个节点,发现数据也同步成功

5. PXC节点启动与关闭

如果最后关闭的PXC节点是安全退出的,那么下次启动要最先启动这个节点,而且要以主节点启动如果最后关闭的PXC节点不是安全退出的,那么要先修改/var/lib/mysql/grastate.dat文件,把其中的safe_to_bootstrap属性值设置为1,再安照主节点启动

5.1 PXC节点的安全关闭操作

节点怎么启动的,就使用对应的命令去关闭。如果用错了关闭命令,是不能关闭节点的数据服务的

systemctl stop mysql@bootstrap.serviceservice mysql stop

使用命令关闭主节点

关闭掉主节点之后查看/var/lib/mysql/grastate.dat文件

我们在关闭其他子节点,我们先关闭192.168.1.166节点,再关闭192.168.1.174节点

下一次pxc集群启动的主节点是192.168.1.174服务器,192.168.1.173和192.168.1.166以子节点启动

5.2 PXC节点的不安全或意外关闭操作

宕机,挂起,关机,重启,断电,断网都会让节点意外下线。

意外下线部分节点

安全下线节点不会让剩下的节点宕机,如果节点意外退出,集群的规模不会缩小,意外退出的节点超过半数,比如三个节点意外退出了2个节点,那么剩下的节点就不能够读写了。其他节点按照普通节点启动上线即可恢复pxc集群

service mysql start

意外下线全部节点,不同时退出

如果三个节点都意外退出,那么查看/var/lib/mysql/grastate.dat文件,看看哪个文件的safe_to_bootstarp的值是1,那么那个节点是最后意外关闭的,再按照safe_to_bootstarp的值启动pxc集群

意外下线全部节点,同时退出

如果三个节点同时意外退出,我们需要修改配置文件,挑选一个节点作为主节点,修改safe_to_bootstarp的值设置为1,那么这个节点可以以主节点启动

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。