前言
记录docker compose 部署MySQL InnoDB Cluster + Router 高可用集群
现在有三台服务器:
172.16.10.80
172.16.10.98
172.16.10.97
通过网盘分享的文件:mysql集群部署.zip
链接: https://pan.baidu.com/s/1XiSMzs2pQ0qly1dRCg26KA?pwd=5ga8 提取码: 5ga8
快速部署
步骤一:下载压缩包解压
将 mysql集群部署\ip\mysql 文件夹上传到对应服务器 /home 文件夹下
步骤二:修改 /home/mysql/conf/my.cnf 文件

步骤三启动容器:
进入80 97 98服务器执行命令启动mysql容器
cd /home/mysql
docker compose up -d
安装 MySQL shellsudo apt update
sudo apt install mysql-shell
配置 InnoDB Cluster 注:需要输入mysql密码配置得是root123输入即可
mysqlsh root@172.16.10.80:3306
// 初始化当前实例,注册到 MySQL Shell
dba.configure_instance('root@172.16.10.80:3306')
// 创建集群(首次执行)
cluster = dba.create_cluster('myCluster')
// 初始化其他节点
dba.configure_instance('root@172.16.10.97:3306')
dba.configure_instance('root@172.16.10.98:3306')
// 加入到集群当中
cluster.add_instance('root@172.16.10.97:3306')
cluster.add_instance('root@172.16.10.98:3306')
连接80 97 98 mysql执行
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123';
FLUSH PRIVILEGES;
进入80服务器执行命令启动mysql-router容器
cd /home/mysql/mysqlrouter
docker compose up -d
启动成功:mysqlrouter 172.16.10.80 6446端口(读写)/ 6447 (读)
MySQL Router 就是 MySQL 集群的智能"流量转发器",把应用的请求自动送到正确的节点,实现读写分离、负载均衡和高可用。

yml配置
#${MYSQL_HOST:mysqlrouter} 不走环境变量可用改成 ${MYSQL_HOST:172.16.10.80} spring: datasource: url: jdbc:mysql:replication://${MYSQL_HOST:mysqlrouter}:6446,${MYSQL_HOST:mysqlrouter}:6447/${MYSQL_DB:test}?roundRobinLoadBalance=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=Hongkong&useAffectedRows=true&allowMultiQueries=true&rewriteBatchedStatements=true
