前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何组建高性能、高可用、可扩展的MySQL集群?

如何组建高性能、高可用、可扩展的MySQL集群?

作者头像
灵雀云
发布2022-11-23 21:05:51
6000
发布2022-11-23 21:05:51
举报

作者:王三岁

灵雀云后端工程师

mysql高可用-PXC集群(安装和特性)

PXC是基于Galera的面向OLTP的多主同步复制插件,mysql自带的主从集群方案(replication)异步复制无法保证主从复制的完整一致。

OLAP强调数据分析和数据挖掘,比较适合MyISAM,OLTP强调事务一致性和增删改查,比较适合InnoDB,而Galara只支持InnoDB,PXC主要用于解决MySQL集群中数据同步强一致性的问题,PXC是MySQL集群方案中公认的优选方案之一。

集群的特点

多主架构:真正的多点读写的集群,没有主从节点之分,在任何节点读写数据,都是最新的

同步复制:事务在所有集群节点同时提交,任何一个节点失败都算作事务失败,这样不同节点之间数据同步,没有延迟,在数据库挂掉之后,数据不会丢失

强一致性:所有节点的数据保持一致,数据不仅在本地写入,还要同步到所有节点才成功(这种情况下当pxc节点过多时,每个节点都要跟其他节点进行数据同步,节点越多同步关系越复杂,同步效率越慢)

并发复制:从节点APPLY数据时,支持并行执行,更好的性能

故障切换:在出现数据库故障时,因支持多点写入,切换容易

热插拔:在服务期间,如果数据库挂了,只要监控程序发现的够快,不可服务时间就会非常少。在节点故障期间,节点本身对集群的影响非常小

自动节点克隆:在新增节点,或者停机维护时,增量数据或者基础数据不需要人工手动备份提供,集群会自动拉取在线节点数据,最终集群会变为一致

对应用透明:集群的维护,对应用程序是透明的

PXC集群的缺点

1、只能对InnoDB写入的数据进行同步,就算在其他引擎写数据,也无法完成同步。

2、新节点加入需要全量拷贝数据,有时会导致数据同步的提供者无法提供读写,只有等待整个拷贝完成

3、集群的性能取决于集群中性能最差的节点的性能(全局校验过程)

4、所有表都要有主键

5、不支持 LOCK TABLE 等显式锁操作

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

安装pxc集群

删除MariaDB程序包

代码语言:javascript
复制
yum -y remove mari*

开放防火墙端口

代码语言:javascript
复制
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent

3306(mysql服务端口):对外提供mysql的服务端口 4567(集群通讯端口):集群中mysql节点间通信的端口 4444 (SST(State Snaphot Transfer)端口):请求全量同步端口 4568(IST(Incremental State Transfer)端口):请求增量同步的端口

关闭SELINUX

代码语言:javascript
复制
vi /etc/selinux/config
# 把SELINUX属性值设置成disabled
reboot

在所有节点下载并安装pxc

下载安装包

https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/LATEST/

下载以上安装包后额外需要下载qpress-11-1.el7.x86_64包。

进入RPM文件目录,执行安装命令

代码语言:javascript
复制
yum localinstall *.rpm

修改配置文件

代码语言:javascript
复制
vi /etc/my.cnf
#里面有两个文件目录 my.cnf.d 和 percona-xtradb-cluster.conf.d
cd /etc/percona-xtradb-cluster.conf.d
vi mysqld.cnf #配置mysql常用信息
#加入如下信息
#数据库字符集
character_set_server = utf8
#允许远程访问的IP地址
bind-address = 0.0.0.0
#跳过DNS解析
skip-name-resolve

初始化所有节点的mysql

代码语言:javascript
复制
#启动mysql
systemctl start mysqld
#查看MySQL初始密码
cat /var/log/mysqld.log | grep "A temporary password"
#修改MySQL密码
mysql_secure_installation
#创建远程管理员账户
mysql -u root -p
CREATE USER 'admin'@'%' IDENTIFIED BY 'Abc_123456';
GRANT all privileges ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;
exit

停止所有节点的mysql并构建数据库集群

代码语言:javascript
复制
systemctl stop mysqld
#修改配置信息
vi wsrep.cnf #配置了pxc集群信息
#需要增加节点的配置信息,三个节点都要操作,server-id,wsrep_node_name,wsrep_node_address这三个参数是不能重复的值
server-id=1 #PXC集群中MySQL实例的唯一ID,不能重复,必须是数字
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster #PXC集群的名称 自定义
wsrep_cluster_address=gcomm://1.1.1.1,1.1.1.2,1.1.1.3 #这写PXC所有集群的ip地址,逗号分割
wsrep_node_name=pxc1 #当前节点的名称 自定义
wsrep_node_address=1.1.1.1 #当前节点的IP
wsrep_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 #主键自增长不锁表

#启动第一个节点
systemctl start mysql@bootstrap.service 
#这是第一个节点的操作指令
#systemctl stop mysql@bootstrap.service
#systemctl restart mysql@bootstrap.service
#启动其他节点
service mysql start #其他节点会根据配置信息自动添加到第一个节点,合成一个集群
#这是其他节点的操作指令
service mysql stop 
service mysql restart

验证

在任何一个节点的mysql执行以下sql可以查看集群状态:

代码语言:javascript
复制
show status like 'wsrep_cluster%'
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-02,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 云原生技术社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • mysql高可用-PXC集群(安装和特性)
  • 集群的特点
  • PXC集群的缺点
  • 安装pxc集群
    • 删除MariaDB程序包
      • 开放防火墙端口
        • 关闭SELINUX
          • 在所有节点下载并安装pxc
            • 修改配置文件
              • 初始化所有节点的mysql
                • 停止所有节点的mysql并构建数据库集群
                  • 验证
                  相关产品与服务
                  云数据库 SQL Server
                  腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                  http://www.vxiaotou.com