Windows 10 本地开发环境:用 ShardingSphere-Proxy 5.4.1 快速搭建 MySQL 分库分表测试环境
Windows 10 本地开发环境用 ShardingSphere-Proxy 5.4.1 快速搭建 MySQL 分库分表测试环境对于 Java 后端开发者来说在本地快速搭建一个分库分表测试环境是验证功能、学习新技术的重要环节。本文将详细介绍如何在 Windows 10 系统中使用 ShardingSphere-Proxy 5.4.1 版本构建一个完整的 MySQL 分库分表测试环境让你能够直观地观察数据分片效果。1. 环境准备与安装在开始配置之前我们需要确保系统满足基本运行条件。首先检查 Java 环境是否已正确安装java -version如果显示 Java 版本信息说明环境已就绪。若未安装可从 Oracle 官网下载 JDK 8 或更高版本进行安装。接下来需要准备三个核心组件ShardingSphere-Proxy 5.4.1从 Apache 官网下载二进制发行版MySQL Connector/J 8.0.32MySQL 官方 JDBC 驱动MySQL Community Server 8.0.35数据库服务本体将 MySQL Connector 的 JAR 文件复制到 ShardingSphere-Proxy 的 lib 目录下是关键的依赖配置步骤。这个操作确保了 Proxy 能够与 MySQL 数据库建立连接。2. MySQL 服务配置MySQL 的配置需要特别注意以下几点[mysqld] port3306 basedirD:\\path\\to\\mysql-8.0.35-winx64 character-set-serverutf8 default-storage-engineINNODB default_authentication_pluginmysql_native_password配置完成后通过管理员权限的命令行初始化并启动 MySQL 服务mysqld --initialize --console mysqld -install net start mysql初始化时会生成临时 root 密码记得记录下来用于首次登录。登录后建议立即修改密码并创建测试用的数据库ALTER USER rootlocalhost IDENTIFIED BY new_password; CREATE DATABASE demo_ds_0; CREATE DATABASE demo_ds_1;3. ShardingSphere-Proxy 核心配置ShardingSphere-Proxy 的配置主要集中在两个 YAML 文件中3.1 server.yaml 配置此文件定义代理服务的用户权限authority: users: - user: root% password: root - user: sharding password: sharding3.2 config-sharding.yaml 配置这是分片规则的核心配置文件主要包含三部分内容数据源定义配置连接的实际数据库信息分片规则定义表如何分片算法配置具体分片逻辑的实现一个典型的分库分表配置示例如下databaseName: sharding_db dataSources: ds_0: url: jdbc:mysql://127.0.0.1:3306/demo_ds_0?serverTimezoneUTC username: root password: root ds_1: url: jdbc:mysql://127.0.0.1:3306/demo_ds_1?serverTimezoneUTC username: root password: root rules: - !SHARDING tables: t_order: actualDataNodes: ds_${0..1}.t_order_${0..1} tableStrategy: standard: shardingColumn: order_id shardingAlgorithmName: t_order_inline shardingAlgorithms: t_order_inline: type: INLINE props: algorithm-expression: t_order_${order_id % 2}4. 启动与验证完成配置后通过 bin 目录下的 start.bat 启动 ShardingSphere-Proxy。观察启动日志确认无报错信息后即可连接测试mysql -P3307 -uroot -p连接成功后在 Proxy 中创建表并插入测试数据USE sharding_db; CREATE TABLE t_order(order_id BIGINT, user_id INT, status VARCHAR(50)); INSERT INTO t_order VALUES(1, 1001, ACTIVE), (2, 1002, COMPLETED);通过 Navicat 或 MySQL 命令行工具直接查看 demo_ds_0 和 demo_ds_1 数据库可以观察到数据已按照配置的规则分布到不同的物理表中。5. 分片策略详解理解分片策略是掌握 ShardingSphere 的关键。常见的分片方式包括分片类型适用场景配置示例标准分片单分片键精确匹配shardingColumn: user_id复合分片多分片键组合配置多个 shardingColumn行表达式简单取模等运算algorithm-expression: ds_${user_id % 2}时间范围按日期分片配置日期范围规则对于订单表常见的分库分表需求通常会采用用户ID分库、订单ID分表的策略defaultDatabaseStrategy: standard: shardingColumn: user_id shardingAlgorithmName: database_inline tables: t_order: actualDataNodes: ds_${0..1}.t_order_${0..1} tableStrategy: standard: shardingColumn: order_id shardingAlgorithmName: t_order_inline6. 开发调试技巧在实际开发过程中以下几个技巧可以帮助提高效率日志查看ShardingSphere-Proxy 的日志文件位于 logs 目录下遇到问题时首先检查这里配置热更新修改配置文件后无需重启服务Proxy 会自动检测并重新加载配置SQL 预览通过PREVIEW命令可以查看 SQL 将被路由到哪些真实数据库PREVIEW INSERT INTO t_order VALUES(3, 1003, PENDING);分布式事务对于需要事务支持的场景可以配置 XA 或 BASE 事务管理器7. 常见问题排查在本地环境搭建过程中可能会遇到以下典型问题连接失败检查 MySQL 服务是否运行确认 Proxy 的端口(默认3307)未被占用验证用户名密码是否正确表未正确分片检查 config-sharding.yaml 配置是否正确确认分片键值与算法匹配查看是否配置了绑定表关系性能问题调整连接池参数优化分片算法考虑使用读写分离配置在多次实际项目部署中我发现最容易出错的地方是 YAML 文件的缩进格式问题。建议使用专业的 YAML 编辑器或 IDE 插件来确保格式正确。