店滴开发者手册店滴开发者手册
首页
指南
插件
接口
智能设备
element后台
SDK
首页
指南
插件
接口
智能设备
element后台
SDK
  • 接口

    • 项目文档
    • /api/api_interface_specification.html
    • 系统安装指南
    • 表单
    • saas
    • 支付
    • 命令行
    • 生成模型类
    • 控制器
    • search
    • 操作单个状态类字段
    • 模型
    • behavior
    • 验证规则
    • 数据库配置指南
    • 字段设计要求
    • /api/db_sharding.html
    • /api/db_read_write_separation.html
    • 检查MySQL服务是否运行
    • 原生sql执行与操作
    • /api/db_transaction.html
    • 关于缓存
    • cookie
    • 用户信息获取
    • /api/event_addonsEvent.html
    • 队列
    • composer 的使用

Linux环境下InnoDB Cluster设置

  1. 首先检查MySQL服务状态 bash

检查MySQL服务是否运行

systemctl status mysqld

或者

systemctl status mysql

如果未运行,启动MySQL

sudo systemctl start mysqld sudo systemctl enable mysqld 2. 使用MySQL Shell创建InnoDB Cluster bash

进入MySQL Shell

mysqlsh

在MySQL Shell中执行以下命令:

javascript // 切换到JavaScript模式 \js -- 切换到 SQL 模式 \sql // 连接到第一个MySQL实例(使用您的实际IP) shell.connect('root@152.136.38.187:3306') // 输入root密码

// 检查实例是否适合创建集群 dba.checkInstanceConfiguration('root@152.136.38.187:3306')

// 如果检查有问题,修复配置 dba.configureInstance('root@152.136.38.187:3306')

// 创建InnoDB Cluster var cluster = dba.createCluster('productionCluster')

// 查看集群状态 cluster.status()

// 添加第二个实例 cluster.addInstance('root@111.231.105.93:3306')

// 再次查看集群状态确认 cluster.status() 3. 退出MySQL Shell并重新引导MySQL Router bash

退出MySQL Shell

\exit

使用新创建的集群引导MySQL Router

sudo mysqlrouter --bootstrap root@152.136.38.187:3306 --user=mysqlrouter --directory /etc/mysql-route

如果引导成功,启动Router服务

sudo systemctl daemon-reload sudo systemctl start mysqlrouter sudo systemctl status mysqlrouter 🔧 故障排除命令 如果遇到问题,使用这些命令排查:

检查基础环境 bash

检查MySQL版本

mysql --version

检查MySQL Shell版本

mysqlsh --version

检查防火墙状态

sudo systemctl status firewalld

或者

sudo ufw status

如果需要,开放端口

sudo firewall-cmd --add-port=3306/tcp --permanent sudo firewall-cmd --add-port=33061/tcp --permanent # Group Replication端口 sudo firewall-cmd --add-port=6446/tcp --permanent # Router读写端口 sudo firewall-cmd --add-port=6447/tcp --permanent # Router只读端口 sudo firewall-cmd --reload 检查MySQL配置 bash

检查MySQL的group_replication配置

mysql -h 152.136.38.187 -u root -p -e "SHOW VARIABLES LIKE 'server_id';" mysql -h 152.136.38.187 -u root -p -e "SHOW VARIABLES LIKE 'gtid_mode';" mysql -h 152.136.38.187 -u root -p -e "SHOW VARIABLES LIKE 'binlog_format';" 📋 分步详细操作 步骤1:准备MySQL实例 bash

连接到第一个MySQL实例进行配置

mysql -h 152.136.38.187 -u root -p 在MySQL中执行:

sql -- 确保配置正确 SET GLOBAL server_id=1; SET PERSIST binlog_format=ROW; SET PERSIST gtid_mode=ON; SET PERSIST enforce_gtid_consistency=ON; SET PERSIST transaction_write_set_extraction=XXHASH64;

-- 创建用于集群管理的用户(可选但推荐) CREATE USER 'clusteradmin'@'%' IDENTIFIED BY 'secure_password'; GRANT ALL PRIVILEGES ON . TO 'clusteradmin'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

EXIT; 步骤2:创建集群的简化方法 如果上面的方法复杂,可以使用这个简化版本:

bash

使用一行命令创建集群

mysqlsh --uri root@152.136.38.187:3306 -e "dba.createCluster('myCluster')"

然后添加第二个实例

mysqlsh --uri root@152.136.38.187:3306 -e "dba.getCluster().addInstance('root@111.231.105.93:3306')" 步骤3:验证集群 bash

检查集群状态

mysqlsh --uri root@152.136.38.187:3306 -e "dba.getCluster().status()" 🚀 快速启动脚本 创建一个自动化脚本:

bash #!/bin/bash

save as setup_cluster.sh

echo "开始设置InnoDB Cluster..."

连接到第一个实例创建集群

mysqlsh --uri root@152.136.38.187:3306 --js << EOF print("正在创建集群..."); var cluster = dba.createCluster('productionCluster'); print("集群创建成功");

print("添加第二个实例..."); cluster.addInstance('root@111.231.105.93:3306'); print("实例添加成功");

print("集群状态:"); cluster.status(); EOF

echo "集群设置完成!" 给脚本执行权限并运行:

bash chmod +x setup_cluster.sh ./setup_cluster.sh ❗ 如果仍然遇到问题 如果还是出现元数据错误,请运行以下诊断命令并告诉我输出:

bash

检查mysql_innodb_cluster_metadata数据库是否存在

mysql -h 152.136.38.187 -u root -p -e "SHOW DATABASES LIKE '%cluster%';"

检查MySQL错误日志

sudo tail -f /var/log/mysqld.log

或者

sudo tail -f /var/log/mysql/error.log 请按照这些步骤操作,如果遇到任何错误,把具体的错误信息发给我,我会帮您进一步解决。

Prev
/api/db_read_write_separation.html
Next
原生sql执行与操作