当前位置:首页 > 系统教程 > 正文

Linux运维实战教程:Ubuntu 22.04二进制部署MySQL InnoDB Cluster (企业级高可用与读写分离SSL指南)

本文核心SEO关键词:MySQL InnoDB Cluster, Ubuntu 22.04 MySQL, MySQL 读写分离, MySQL 二进制安装

在现代企业级运维中,数据库的高可用性(HA)是重中之重。MySQL InnoDB Cluster 是官方提供的原生高可用解决方案,通过 MySQL Shell、MySQL Router 和 Group Replication 技术,实现了自动故障转移、强一致性和读写分离。本文将手把手教你在 Ubuntu 22.04 x86_64 架构下,通过二进制方式从零搭建 MySQL InnoDB Cluster 单写模式集群。

Linux运维实战教程:Ubuntu 22.04二进制部署MySQL InnoDB Cluster (企业级高可用与读写分离SSL指南) MySQL  Ubuntu 22.04 读写分离 二进制安装 第1张

一、环境准备与规划

为了搭建集群,我们需要至少 3 个节点以满足 Paxos 协议的投票机制:

  • 节点1: 192.168.1.10 (MySQL Server + Router)
  • 节点2: 192.168.1.11 (MySQL Server)
  • 节点3: 192.168.1.12 (MySQL Server)
  • 操作系统: Ubuntu 22.04 LTS x86_64
  • 软件版本: MySQL 8.0.35 Binary

二、MySQL 二进制安装 (全节点执行)

通过二进制方式安装可以更灵活地控制目录结构。

# 1. 下载并解压# 访问官网下载 mysql-8.0.35-linux-glibc2.17-x86_64.tar.xztar -xvf mysql-8.0.35-linux-glibc2.17-x86_64.tar.xzmv mysql-8.0.35-linux-glibc2.17-x86_64 /usr/local/mysql# 2. 创建用户与权限groupadd mysql && useradd -r -g mysql -s /bin/false mysqlmkdir -p /data/mysql_3306/{data,logs,tmp}chown -R mysql:mysql /usr/local/mysql /data/mysql_3306# 3. 初始化数据库/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_3306/data        

三、配置 MySQL Shell 与集群检查

MySQL Shell 是管理集群的灵魂。我们需要在所有节点安装 MySQL Shell 并通过 dba.configureInstance() 校验配置是否符合集群要求。

注意: InnoDB Cluster 默认强制开启 SSL/TLS,二进制安装后需确保内置证书已生成。

四、构建 InnoDB Cluster 集群

在主节点执行以下命令创建集群:

mysqlsh --uri root@192.168.1.10:3306
> var cluster = dba.createCluster('myCluster');
> cluster.addInstance('root@192.168.1.11:3306');
> cluster.addInstance('root@192.168.1.12:3306');
> cluster.status();

此时,一个单写模式(Single-Primary)的高可用集群就建立完成了。

五、部署 MySQL Router 实现读写分离

MySQL Router 充当代理层,自动识别集群的主从角色,实现流量分发。

# 引导 Router 自动配置mysqlrouter --bootstrap root@192.168.1.10:3306 --user=mysql# 启动后,默认端口:# 6446: 读写端口 (指向 Primary)# 6447: 只读端口 (指向 Secondary)        

六、运维总结与 SSL 验证

至此,我们完成了 Ubuntu 22.04 MySQL 的二进制部署与集群构建。通过 SHOW STATUS LIKE 'Ssl_cipher'; 可以验证连接是否已通过 SSL/TLS 加密。该架构不仅解决了数据库宕机后的手动切库痛点,还通过 MySQL Router 完美实现了 MySQL 读写分离,极大提升了系统的可扩展性。