本教程将详细介绍如何在Ubuntu 22.04系统上,使用x86_64架构CPU的二进制包部署MySQL InnoDB Cluster,实现单写模式集群、读写分离和SSL/TLS加密。内容面向小白用户,步骤详尽,确保您能轻松搭建高可用的MySQL集群环境。
在开始部署MySQL InnoDB Cluster之前,请确保您拥有三台运行Ubuntu 22.04的服务器(或虚拟机),且CPU为x86_64架构。本教程以三台服务器为例,IP地址假设为192.168.1.10、192.168.1.11、192.168.1.12。首先,更新所有服务器系统并安装必要依赖。
sudo apt update && sudo apt upgrade -ysudo apt install -y wget libaio1 libnuma1这些步骤为部署MySQL InnoDB Cluster打下基础,确保环境兼容性。
MySQL InnoDB Cluster 需要MySQL Server 8.0或更高版本。我们从MySQL官网下载二进制包进行安装,避免编译问题。在所有三台服务器上执行以下操作。
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz(请替换为最新版本链接)。tar -xvf mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz && sudo mv mysql-8.0.33-linux-glibc2.17-x86_64-minimal /usr/local/mysql。sudo groupadd mysql && sudo useradd -r -g mysql -s /bin/false mysql。cd /usr/local/mysql,运行 sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data,记录输出的临时密码。完成安装后,MySQL InnoDB Cluster 的核心组件就绪。接下来配置MySQL实例以实现集群。
在每个服务器上配置MySQL配置文件,启用集群功能。首先,编辑 /etc/my.cnf 文件(如不存在则创建),添加以下内容(根据IP调整):
[mysqld]server_id=1 # 在每台服务器上唯一,例如1、2、3bind-address=0.0.0.0datadir=/usr/local/mysql/datasocket=/tmp/mysql.socklog-error=/usr/local/mysql/log/mysql-error.logpid-file=/usr/local/mysql/mysql.pid# 集群设置plugin_load_add="group_replication.so"group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"group_replication_start_on_boot=offgroup_replication_local_address="192.168.1.10:33061" # 替换为当前服务器IPgroup_replication_group_seeds="192.168.1.10:33061,192.168.1.11:33061,192.168.1.12:33061"group_replication_bootstrap_group=offenforce_gtid_consistency=ONgtid_mode=ONbinlog_checksum=NONE
保存后,启动MySQL服务:运行 sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &。然后登录MySQL,使用临时密码,并设置新密码:运行 mysql -u root -p,执行 ALTER USER "root"@"localhost" IDENTIFIED BY "YourNewPassword";。
现在部署MySQL InnoDB Cluster:在第一台服务器(192.168.1.10)上,配置为引导节点。登录MySQL后,执行:
SET SQL_LOG_BIN=0;CREATE USER "clusteruser"@"%" IDENTIFIED BY "ClusterPassword";GRANT ALL PRIVILEGES ON . TO "clusteruser"@"%" WITH GRANT OPTION;SET SQL_LOG_BIN=1;CHANGE MASTER TO MASTER_USER="clusteruser", MASTER_PASSWORD="ClusterPassword" FOR CHANNEL "group_replication_recovery";INSTALL PLUGIN group_replication SONAME "group_replication.so";SET GLOBAL group_replication_bootstrap_group=ON;START GROUP_REPLICATION;SET GLOBAL group_replication_bootstrap_group=OFF;
在另外两台服务器上,重复类似步骤加入集群,但无需引导设置。这样,MySQL InnoDB Cluster 的单写模式集群就初步建立,为读写分离打下基础。
默认情况下,MySQL InnoDB Cluster 支持单写模式(即只有一个节点可写),其他节点只读。这确保了数据一致性。要配置读写分离,我们使用MySQL Router或应用层逻辑。这里以简单应用层为例。
在集群中,第一台服务器(192.168.1.10)作为主写节点。在应用中,将写操作指向该节点,读操作可分散到所有节点。验证集群状态:在任一节点登录MySQL,运行 SELECT * FROM performance_schema.replication_group_members;,应显示三个节点均为ONLINE。
为了优化性能,您可以在只读节点上设置 super_read_only=ON,确保它们不接收写请求。这样,单写模式集群与读写分离就配置完成,提升了系统的可用性和扩展性。
SSL/TLS加密是保护MySQL InnoDB Cluster 数据传输的关键。我们使用OpenSSL生成自签名证书(生产环境建议使用CA签发)。在所有服务器上执行。
sudo openssl req -newkey rsa:2048 -nodes -keyout server-key.pem -x509 -days 365 -out server-cert.pem,填写相关信息。sudo cp server-cert.pem server-key.pem /usr/local/mysql/。/etc/my.cnf,添加SSL设置:ssl_cert=/usr/local/mysql/server-cert.pemssl_key=/usr/local/mysql/server-key.pemrequire_secure_transport=ON
sudo pkill mysqld && sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &。验证SSL/TLS加密:登录MySQL,运行 SHOW VARIABLES LIKE "%ssl%";,应显示SSL已启用。现在,您的MySQL InnoDB Cluster 实现了端到端加密,保障了数据安全。
通过上述步骤,您已成功在Ubuntu 22.04上部署了MySQL InnoDB Cluster,实现了单写模式集群、读写分离和SSL/TLS加密。测试集群功能:在主节点创建数据库和表,数据应自动同步到从节点;尝试写操作,确保只主节点可写。
本教程详细覆盖了从环境准备到安全配置的全过程,适合小白用户逐步操作。关键词如 MySQL InnoDB Cluster、Ubuntu 22.04、单写模式 和 SSL/TLS加密 在文中多次出现,突出了核心主题。如有问题,请参考MySQL官方文档或社区资源。
本文由主机测评网于2026-01-30发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20260121756.html