Apache ShardingSphere 自 6 月底发布 5.1.2 版本以来,历时两个多月,社区持续优化和增强功能,共合并了来自全球的团队和个人累计 1728 个 PR,为大家带来了全面增强的 5.2.0 版本,新版本在功能、性能、测试、文档、示例等方面都进行了大量的优化。此外,shardingsphere-on-cloud 子项目仓库的建立,也标志着 ShardingSphere 云原生的步伐不断加速迈进,欢迎对 Go、Database、Cloud 感兴趣的同学参与 shardingsphere-on-cloud 社区!
本次发布的 5.2.0 版本带来了如下新亮点:
数据分片 SQL 审计功能
数据弹性迁移
SQL 执行进程管理
shardingsphere-on-cloud 子项目上线
新增的数据分片 SQL 审计以及 MySQL SHOW PROCESSLIST & KILL 语句是针对运行 SQL 进行管理的新特性,能够加强用户对 ShardingSphere 的管理能力。SQL 审计功能能够辅助用户进行必要的 SQL 审计管理,避免非法低效的 SQL 对业务系统造成影响。MySQL SHOW PROCESSLIST & KILL 特性则允许用户通过 SHOW PROCESSLIST 语句快速查看当前执行的 SQL,并针对慢 SQL 进行强制取消。
除了增强用户对 ShardingSphere 的管理能力之外,新版本还增加了数据弹性迁移的功能,支持从 Oracle、MySQL、PostgreSQL 迁移数据到 ShardingSphere + MySQL 或 PostgreSQL 组成的分布式数据库生态中,完成从单点数据库向分布式数据库的转换。ShardingSphere 社区会在后续的版本支持更多的异构数据库迁移功能,欢迎大家关注并参与。
本次 5.2.0 版本还将 ShardingSphere 仓库中的 Helm Charts 转移到子项目 shardingsphere-on-cloud 中,旨在为正在寻找分布式数据库上云的用户提供 ShardingSphere + MySQL 或 PostgreSQL 的云上分布式数据库解决方案。5.2.0 版本大量提升了不同数据库的 SQL 解析支持度,完善了 DistSQL 参数使用规范,ShardingSphere 运行模式则移除了 Memory 运行模式,分布式事务支持了跨多个逻辑库的事务功能,本文将给大家介绍 ShardingSphere 5.2.0 版本的更新内容。
新亮点介绍
数据分片 SQL 审计
在大规模的数据分片场景下,如果用户执行了不带分片条件的 SQL 查询,此时 SQL 查询会全路由到底层数据库上执行,将导致大量的数据库连接被占用,出现超时等严重影响业务的问题,如果用户执行的是 UPDATE/DELETE 操作,则可能导致大批量的数据被错误更新和删除。
为了解决这些业务场景中存在的问题,ShardingSphere 5.2.0 版本提供了数据分片 SQL 审计功能,允许用户配置审计策略,策略中可以指定多个审计算法及是否允许禁用审计规则,任意一个审计算法不通过则会禁止 SQL 执行,如下展示了数据分片 SQL 审计的配置。
rules:
- !SHARDING
tables:
t_order:
actualDataNodes: ds_${0..1}.t_order_${0..1}
tableStrategy:
standard:
shardingColumn: order_id
shardingAlgorithmName: t_order_inline
auditStrategy:
auditorNames:
- sharding_key_required_auditor
allowHintDisable: true
defaultAuditStrategy:
auditorNames:
- sharding_key_required_auditor
allowHintDisable: true
auditors:
sharding_key_required_auditor:
type: DML_SHARDING_CONDITIONS
考虑到业务场景的复杂性,数据分片 SQL 审计功能允许用户通过 SQL Hint 的方式,对审计算法进行动态禁用,以支持部分场景下允许操作的业务 SQL 执行。目前,ShardingSphere 5.2.0 内置了 DML 禁止全路由审计 算法,用户也可以自行实现 ShardingAuditAlgorithm 接口,实现更高级的 SQL 审计功能。
/* ShardingSphere hint: disableAuditNames=sharding_key_required_auditor */
SELECT * FROM t_order;
数据弹性迁移
数据迁移一直是 ShardingSphere 社区关注的重点功能,在 5.2.0 版本前,用户执行数据迁移需要先将外部表添加为单分片的分片表,然后通过修改分片规则触发迁移,这种使用方式对于普通用户来说过于复杂且难以理解。为了提升数据迁移功能的易用性,ShardingSphere 5.2.0 版本提供了全新的数据迁移功能,并搭配弹性迁移的 DistSQL,可以让用户通过 SQL-Like 的方式一体化完成从已有的单点数据库迁移到 ShardingSphere + MySQL 或 PostgreSQL 组成的分布式数据库系统中,实现从单点数据库向分布式数据库的转换。
语句 |
说明 |
示例 |
MIGRATE TABLE ds.schema.table INTO table |
从源端迁移到目标端 |
MIGRATE TABLE ds_0.public.t_order INTO t_order |
SHOW MIGRATION LIST |
查询运行列表 |
SHOW MIGRATION LIST |
SHOW MIGRATION STATUS jobId |
查询作业状态 |
SHOW MIGRATION STATUS 1234 |
STOP MIGRATION jobId |
停止作业 |
STOP MIGRATION 12345 |
START MIGRATION jobId |
开启停止的作业 |
START MIGRATION 1234 |
CHECK MIGRATION jobId |
数据一致性校验 |
CHECK MIGRATION 1234 |
SHOW MIGRATION CHECK ALGORITHMS |