Klustron 1.1 release notes
Klustron 1.1 release notes
Klustron团队在 1.1版本周期内,研发了一系列重要功能,让Klustron 在1.0 版本已经具备核心功能集的基础上,具备了更全面的功能和更好的性能。具体来说我们新增了如下一系列功能,并且优化了已有的若干功能实现,还修复了不少bug并且改进了易用性和用户友好性。这里仅列出我们在1.1 实现的重点功能和修复的部分重点功能的bug。如果需要查询我们在1.1 版本周期内实现全部的功能和修复的全部bug,可以在我们的任务系统搜索
1 新增功能
1.1 逻辑备份和恢复
#1174 Logical backup and restore
用户可以逻辑备份一个Klustron集群,也可以只备份其中的部分数据,例如一个 database, schema, 或者table。 使用逻辑备份数据在任何时候可以恢复一个集群或者其中的特定库表。
使用逻辑备份恢复的常见场景包括:
a. 用户可以在执行危险操作之前,先备份一个database或者table。万一操作失败可以迅速恢复这个被误操作损坏的database或者table,并且这些误操作不会影响其他database和table,集群也不需要停服。
b. 对集群的不同部分的数据做不同频率的备份,例如对高价值数据或者频繁更新的数据就每12个小时全量备份一次,对于变化不频繁的库表,可以每周备份一次。
c. 将Klustron的集群导出并灌入其他数据库系统 功能和用法介绍
1.2 表重分布(table repartition)
#1176 Table repartitioning
如果一个表的分区方式随着时间推移不再适合,或者原先没有分区的表现在变得太大了需要分区,或者原先分区的表现在变得很小不再需要分区,那么用户可以使用repartition功能,将表按照其他方式重新分区,调整分区参数,或者不再分区。在此操作期间这个表可以持续的读写访问不受影响。更多信息。
1.3 镜像表
为了最优性能,那些数据量不太大并且更新不频繁的表,适合存储在每一个存储集群,以便Klustron可以实现最优的查询性能(适合join下推)。功能和用法介绍
#218 mirror sharding
#976 replicate mirror tables to newly added shards
1.4 资源隔离
如果在一组服务器上部署了多个Klustron集群,并且需要为每个集群分配一定数量的计算资源,限定每个集群可以使用的计算资源数量,那么可以使用本功能。功能和用法介绍
#1089 support cgroup
1.5 MySQL DML 私有语法
为了让Klustron实现良好的MySQL兼容性,以便用户的各种应用软件可以完全不需要任何修改和重新编译就能与Klustron协作,我们做了大量工作,在1.1版本包括这些内容。这样,Klustron-1.1 就能够支持所有MySQL私有DML语法,MySQL系统变量读写语法,MySQL SHOW系列命令,MySQL 数据类型以及MySQL 常见系统函数,还有MySQL特有的反引号机制。特别是 Klustron-1.1 在1.0版本已经支持了autocommit 事务的基础上,新增支持了MySQL的事务错误处理方法 --- 在语句执行错误的时候,不回滚事务而是只回滚出错的语句,由客户端(应用软件)决定要回滚还是继续执行或者提交这个事务。
详见Klustron MySQL 连接协议简介, Klustron 不支持的 MySQL 语法和功能汇总 和 Klustron 对 MySQL 私有 DML 语法的支持
#38 support locking clauses in select stmts SELECT 加锁子句 SELECT FOR UPDATE, SELECT LOCK IN SHARE MODE
#644 More MySQL private DML grammars
#930 timestamp[tz]类型支持mysql语法“on update current_timestamp”
#944 Multi-table update and delete statements
#945 Allow updating shard key
1.6 并行查询
#1062 server side cursor improvement
#1017 refresh snapshot
#943 parallel readonly query execution
#980 Parallel read only query execution
1.7 MySQL 兼容性
支持 MySQL SHOW系列命令,MySQL 常见系统函数;特别是 Klustron-1.1 支持了 autocommit 事务和 MySQL 的事务错误处理方法 --- 在语句执行错误的时候,不回滚事务而是只回滚出错的语句,由客户端(应用软件)决定要回滚还是继续执行或者提交这个事务。
#902 Support widely used mysql functions
#915 Implement MySQL private functions
#992 show tables/schemas/database支持where 条件
#1000 支持show table status
#1085 Support MySQL style error handling
#1110 In MySQL connections transform CREATE DATABASE to CREATE SCHEMA by default
#1084 lower case quoted symbol names
#1087 Add MySQL facilities
#902 Support widely used mysql functions
1.8 DBaaS
Klustron DBaaS 所需的内部功能,用户不会直接用到。
#1128 usage stats by session groups
#1129 user accounts for internal connections
#1130 collect usage and consumption status
#1134 DBaaS service registry on public clouds
1.9 Single shard mode
#1175 Single shard mode
1.10 其他
#694 Cluster_mgr 增加 raft 组成员及信息落盘
#95 support for range types in query
#551/552 Allow users to set fullsync config vars
#623 xpanel支持rbr主备切换
2 已有功能优化和改进
#225 Refuse client requests if local metadata lags too far behind
#485 do not add disabled nodes into computing nodes metadata tables
#609 create dedicated per-thread connection handler for admin connections
#776 Allow illegal chars in symbol names by back-quoting
#923 Use fullsync for metadata shard
#927 Record used port in server_nodes
#929 重构分布式事务ID的生成
#931 Allow accessing a new Klustron-server node after it has replayed all ddl logs
2.1 备份恢复优化
#481 选择源存储节点做备份时考虑备机状态
#940 当 cluster 的 shard 发生增减时,需要在元数据集群中记录下当前的 shard 信息
#941 回档操作时,要参考历史事件线上,shard 拓扑变化的情况
#952 Remember next sequence values to start reserve
#996 Backup MetadataCluster
2.2 扩容优化
#1032 Optimize the Catching-up phase during table moving - XA trx id
#1033 replicating too many irrelevent events
#1036 Fullsync per channel fsync ack setting
#1080 Recording the binlog state (filename,pos) before reroute table during scale out
#1113 A statement to clean up binlog dump filters on master storage instance
3 重要bug修复
#760 Generate ID number for autoinc column when given NULL value
#939 mysql and flashback crash for rbr one-shard testing
#958 随机排序问题
#959 与创建索引相关的问题
#972 attach 分区导致计算节点coredump
#975 ddl applier进程回放了当前节点正在执行中的ddl
#995 sqlsmith 在join中调用pg_rotate_logfile()触发了core
#1122 server side cursor bug fixes