本文是一篇完整的MySQL InnoDB Cluster部署实战教程,基于Ubuntu 22.04部署环境,采用x86_64架构CPU的二进制包进行安装。我们将实现单写模式下的集群,并通过MySQL Router实现读写分离。即使你是运维新手,只要按照步骤操作,也能成功搭建一套生产可用的MySQL高可用方案。
准备三台Ubuntu 22.04服务器(或虚拟机),IP假设为192.168.1.10, 192.168.1.11, 192.168.1.12。确保CPU架构为x86_64,并关闭防火墙或开放相应端口(3306, 33060, 6446, 6447等)。
# 关闭防火墙(测试环境)sudo ufw disable# 或开放端口(生产环境)sudo ufw allow 3306/tcpsudo ufw allow 33060/tcpsudo ufw allow 6446/tcpsudo ufw allow 6447/tcp 配置主机名解析(可选,建议在/etc/hosts中写入):
192.168.1.10 mysql-1192.168.1.11 mysql-2192.168.1.12 mysql-3 从MySQL官网下载适用于Linux x86_64的二进制包(选择glibc2.17版本)。以8.0.32为例:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.32-linux-glibc2.17-x86_64.tar.xz 同时在所有节点下载MySQL Shell和MySQL Router(也可后续单独下载)。
创建mysql用户和组,解压二进制包到/usr/local/mysql:
sudo groupadd mysqlsudo useradd -r -g mysql -s /bin/false mysqlsudo tar -xvf mysql-8.0.32-linux-glibc2.17-x86_64.tar.xz -C /usr/local/sudo ln -s /usr/local/mysql-8.0.32-linux-glibc2.17-x86_64 /usr/local/mysqlcd /usr/local/mysqlsudo mkdir mysql-filessudo chown mysql:mysql mysql-filessudo chmod 750 mysql-files 将MySQL bin目录加入PATH(编辑~/.bashrc或全局profile):
export PATH=/usr/local/mysql/bin:$PATH 在三台节点上分别执行初始化,生成临时密码。
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 注意记录输出的临时root密码。
编辑/etc/my.cnf(或/etc/mysql/my.cnf),以下为基础配置,注意server_id需唯一:
[mysqld]server_id=1 # 节点2改为2,节点3改为3gtid_mode=ONenforce_gtid_consistency=ONlog_bin=mysql-binbinlog_format=ROWrelay_log=relay-loginnodb_dedicated_server=ONdisabled_storage_engines=MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORYreport_host=mysql-1 # 对应节点主机名mysqlx_port=33060[client]port=3306socket=/tmp/mysql.sock 确保数据目录权限正确。
使用mysqld_safe启动:
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql & 或配置systemd服务(略)。登录并修改root密码:
mysql -uroot -p"临时密码"ALTER USER "root"@"localhost" IDENTIFIED BY "新密码"; 下载并安装MySQL Shell(二进制包同样解压即可)。添加bin到PATH。
wget https://dev.mysql.com/get/Downloads/MySQL-Shell/mysql-shell-8.0.32-linux-glibc2.17-x86-64bit.tar.gztar -xzf mysql-shell-8.0.32-linux-glibc2.17-x86-64bit.tar.gz -C /usr/local/export PATH=/usr/local/mysql-shell-8.0.32-linux-glibc2.17-x86-64bit/bin:$PATH 在任意节点(如mysql-1)使用MySQL Shell连接实例,并创建集群。
mysqlsh --uri root@mysql-1:3306\sqlALTER USER root@"%" IDENTIFIED BY "新密码"; # 允许远程连接\jsvar cluster = dba.createCluster("myCluster", {adoptFromGR: false, multiMaster: false, force: true});cluster.addInstance("root@mysql-2:3306"); # 输入密码cluster.addInstance("root@mysql-3:3306"); 这里通过单写模式(multiMaster: false)创建集群,即只有主节点可写,其余为只读从节点。
使用MySQL Router实现应用层的读写分离。在应用服务器或单独节点安装Router。
wget https://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-8.0.32-linux-glibc2.17-x86_64.tar.xztar -xJf mysql-router-8.0.32-linux-glibc2.17-x86_64.tar.xz -C /usr/local/ 引导配置Router连接到集群:
sudo /usr/local/mysql-router-8.0.32-linux-glibc2.17-x86_64/bin/mysqlrouter --bootstrap root@mysql-1:3306 --user=mysql 根据提示设置读写端口(默认6446写,6447读)。启动Router:
sudo /usr/local/mysql-router-8.0.32-linux-glibc2.17-x86_64/bin/mysqlrouter -c /usr/local/mysql-router-8.0.32-linux-glibc2.17-x86_64/mysqlrouter.conf & 通过Router端口连接,验证读写流量是否正确分发。
mysql -h 127.0.0.1 -P 6446 -u root -p # 写端口,应连接至主节点mysql -h 127.0.0.1 -P 6447 -u root -p # 读端口,可能连接任一从节点 执行SELECT @@server_id;验证。同时测试在主库写入数据,从库能否同步。
至此,我们成功在Ubuntu 22.04上使用二进制包部署了MySQL InnoDB Cluster,并实现了单写模式与读写分离。整个过程不依赖包管理器,适用于离线环境。建议生产环境开启防火墙并配置SSL加密,确保数据安全。
—— 运维总结,愿对你有所帮助。
本文由主机测评网于2026-02-21发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20260226293.html