Skip to content
View GreatSQL's full-sized avatar
Block or Report

Block or report GreatSQL

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
GreatSQL/README.md

关于 GreatSQL


GreatSQL数据库是一款开源免费数据库,可在普通硬件上满足金融级应用场景,具有高可用高性能高兼容高安全等特性,可作为MySQL或Percona Server for MySQL的理想可选替换。

GreatSQL LOGO

下载GreatSQL


GreatSQL 8.0

GreatSQL 5.7

GreatSQL核心特性


1. 高可用

针对MGR进行了大量改进和提升工作,新增支持地理标签仲裁节点读写节点可绑定动态IP快速单主模式智能选主,并针对流控算法事务认证队列清理算法节点加入&退出机制recovery机制等多项MGR底层工作机制算法进行深度优化,进一步提升优化了MGR的高可用保障及性能稳定性。

  • 支持地理标签特性,提升多机房架构数据可靠性。
  • 支持仲裁节点特性,用更低的服务器成本实现更高可用。
  • 支持读写节点动态VIP特性,高可用切换更便捷。
  • 支持快速单主模式,在单主模式下更快,性能更高。
  • 支持智能选主特性,高可用切换选主机制更合理。
  • 采用全新流控算法,使得事务更平稳,避免剧烈抖动。
  • 优化了节点加入、退出时可能导致性能剧烈抖动的问题。
  • 优化事务认证队列清理算法,高负载下不不复存在每60秒性能抖动问题。
  • 解决了个别节点上磁盘空间爆满时导致MGR集群整体被阻塞的问题。
  • 解决了长事务造成无法选主的问题。
  • 修复了recovery过程中长时间等待的问题。

更多信息详见文档:高可用

2. 高性能

相对MySQL及Percona Server For MySQL的性能表现更稳定优异,支持高性能的内存查询加速AP引擎InnoDB并行查询并行LOAD DATA事务无锁化线程池等特性,在TPC-C测试中相对MySQL性能提升超过30%,在TPC-H测试中的性能表现是MySQL的十几倍甚至上百倍。

  • 支持类似MySQL HeatWave的大规模并行、高性能的内存查询加速AP引擎,可将GreatSQL的数据分析性能提升几个数量级。
  • 支持InnoDB并行查询,适用于轻量级OLAP应用场景,在TPC-H测试中平均提升15倍,最高提升40+倍。
  • 优化InnoDB事务系统,实现了大锁拆分及无锁化等多种优化方案,OLTP场景整体性能提升约20%。
  • 支持并行LOAD DATA,适用于频繁导入大批量数据的应用场景,性能可提升约20+倍。
  • 支持线程池(Threadpool),降低了线程创建和销毁的代价,保证高并发下,性能稳定不会明显衰退。

更多信息详见文档:高性能

3. 高兼容

支持大多数常见Oracle用法,包括数据类型、函数、SQL语法、存储程序等兼容性用法。

更多信息详见文档:高兼容

4. 高安全

支持逻辑备份加密、CLONE备份加密、审计日志入表、表空间国密加密等多个安全提升特性,进一步保障业务数据安全,更适用于金融级应用场景。

更多信息详见文档:高安全

注意事项


运行GreatSQL可能需要依赖jemalloc库(推荐5.2.1+版本),因此请先先安装上

yum -y install jemalloc jemalloc-devel

也可以把自行安装的lib库so文件路径加到系统配置文件中,例如:

[root@greatdb]# cat /etc/ld.so.conf
/usr/local/lib64/

而后执行下面的操作加载libjemalloc库,并确认是否已存在

[root@greatdb]# ldconfig

[root@greatdb]# ldconfig -p | grep libjemalloc
        libjemalloc.so.1 (libc6,x86-64) => /usr/local/lib64/libjemalloc.so.1
        libjemalloc.so (libc6,x86-64) => /usr/local/lib64/libjemalloc.so

jemalloc下载地址:https://centos.pkgs.org/8/epel-x86_64/jemalloc-5.2.1-2.el8.x86_64.rpm.html

安装GreatSQL

推荐安装GreatSQL RPM包。

戳此链接下载GreatSQL RPM包

执行下面的命令安装GreatSQL:

#首先,查找GreatSQL是否已安装
$ yum search greatsql
...
No matches found.

#然后安装
$ rpm -ivh --nodeps greatsql-client-8.0.32-25.1.el8.x86_64.rpm greatsql-devel-8.0.32-25.1.el8.x86_64.rpm greatsql-icu-data-files-8.0.32-25.1.el8.x86_64.rpm greatsql-mysql-router-8.0.32-25.1.el8.x86_64.rpm greatsql-server-8.0.32-25.1.el8.x86_64.rpm greatsql-shared-8.0.32-25.1.el8.x86_64.rpm greatsql-test-8.0.32-25.1.el8.x86_64.rpm

提示:正式安装GreatSQL RPM包时,可能还需要依赖Perl等其他软件包,此处为快速演示,因此加上 --nodeps 参数,忽略相应的依赖关系检查。安装完毕后,如果因为依赖关系无法启动,请再行安装相应软件依赖包。

安装完成后,GreatSQL会自行完成初始化,可以再检查是否已加入系统服务或已启动:

$ systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
...
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 1137698 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 1137732 (mysqld)
   Status: "Server is operational"
    Tasks: 39 (limit: 149064)
   Memory: 336.7M
   CGroup: /system.slice/mysqld.service
           └─1137732 /usr/sbin/mysqld
...

my.cnf参考

就可以正常启动GreatSQL服务了。

编译GreatSQL二进制包

推荐利用Docker环境快速编译GreatSQL二进制包,可参考方法:编译源码安装GreatSQL

版本历史


GreatSQL 8.0

GreatSQL 5.7

用户手册及学习资料


GreatSQL编译构建相关

GreatSQL管理运维使用相关

其他GreatSQL相关资源仓库

GreatSQL vs MySQL

下面是GreatSQL 和 MySQL社区版本的对比表格:

1.主要特性 GreatSQL 8.0.32-25 MySQL 8.0.32
开源 ✔️ ✔️
ACID完整性 ✔️ ✔️
MVCC特性 ✔️ ✔️
支持行锁 ✔️ ✔️
Crash自动修复 ✔️ ✔️
表分区(Partitioning) ✔️ ✔️
视图(Views) ✔️ ✔️
子查询(Subqueries) ✔️ ✔️
触发器(Triggers) ✔️ ✔️
存储程序(Stored Programs) ✔️ ✔️
外键(Foreign Keys) ✔️ ✔️
窗口函数(Window Functions) ✔️ ✔️
通用表表达式CTE ✔️ ✔️
地理信息(GIS) ✔️ ✔️
基于GTID的复制 ✔️ ✔️
组复制(MGR) ✔️ ✔️
MyRocks引擎 ✔️
2. 性能提升扩展 GreatSQL 8.0.32-25 MySQL 8.0.32
AP引擎 ✔️ 仅云上HeatWave
InnODB并行查询 ✔️ 仅主键扫描
并行LOAD DATA ✔️
InnoDB事务ReadView无锁优化 ✔️
InnoDB事务大锁拆分优化 ✔️
InnoDB资源组 ✔️ ✔️
自定义InnoDB页大小 ✔️ ✔️
Contention-Aware Transaction Scheduling ✔️ ✔️
InnoDB Mutexes拆分优化 ✔️
MEMORY引擎优化 ✔️
InnoDB Flushing优化 ✔️
并行Doublewrite Buffer ✔️ ✔️
InnoDB快速索引创建优化 ✔️
VARCHAR/BLOB/JSON类型存储单列压缩 ✔️
数据字典中存储单列压缩信息 ✔️
3. 面向开发者提升改进 GreatSQL 8.0.32-25 MySQL 8.0.32
X API ✔️ ✔️
JSON ✔️ ✔️
NoSQL Socket-Level接口 ✔️ ✔️
InnoDB全文搜索改进 ✔️
更多Hash/Digest函数 ✔️
Oracle兼容-数据类型 ✔️
Oracle兼容-函数 ✔️
Oracle兼容-SQL语法 ✔️
Oracle兼容-存储程序 ✔️
4. 基础特性提升改进 GreatSQL 8.0.32-25 MySQL 8.0.32
MGR提升-地理标签 ✔️
MGR提升-仲裁节点 ✔️
MGR提升-读写节点绑定VIP ✔️
MGR提升-快速单主模式 ✔️
MGR提升-智能选主机制 ✔️
MGR提升-全新流控算法 ✔️
information_schema表数量 95 65
全局性能和状态指标 853 434
优化器直方图(Histograms) ✔️ ✔️
Per-Table性能指标 ✔️
Per-Index性能指标 ✔️
Per-User性能指标 ✔️
Per-Client性能指标 ✔️
Per-Thread性能指标 ✔️
全局查询相应耗时统计 ✔️
SHOW INNODB ENGINE STATUS增强 ✔️
回滚段信息增强 ✔️
临时表信息增强 ✔️
用户统计信息增强 ✔️
Slow log信息增强 ✔️
5.安全性提升 GreatSQL 8.0.32-25 MySQL 8.0.32
国密支持 ✔️
备份加密 ✔️
审计日志入库 ✔️
SQL Roles ✔️ ✔️
SHA-2密码Hashing ✔️ ✔️
密码轮换策略 ✔️ ✔️
PAM认证插件 ✔️ 仅企业版
审计插件 ✔️ 仅企业版
Keyring存储在文件中 ✔️ ✔️
Keyring存储在Hashicorp Vault中 ✔️ 仅企业版
InnoDB数据加密 ✔️ ✔️
InnoDB日志加密 ✔️ ✔️
InnoDB各种表空间文件加密 ✔️ ✔️
二进制日志加密 ✔️
临时文件加密 ✔️
强制加密 ✔️
6. 运维便利性提升 GreatSQL 8.0.32-25 MySQL 8.0.32
DDL原子性 ✔️ ✔️
数据字典存储InnoDB表 ✔️ ✔️
快速DDL ✔️ ✔️
SET PERSIST ✔️ ✔️
不可见索引 ✔️ ✔️
线程池(Threadpool) ✔️ 仅企业版
备份锁 ✔️
SHOW GRANTS扩展 ✔️
表损坏动作扩展 ✔️
杀掉不活跃事务 ✔️
START TRANSACTION WITH CONSISTENT SNAPSHOT扩展 ✔️

此外,GreatSQL 8.0.32-25基于Percona Server for MySQL 8.0.32版本,它在MySQL 8.0.32基础上做了大量的改进和提升以及众多新特性,详情请见:Percona Server for MySQL feature comparison,这其中包括线程池、审计、数据脱敏等MySQL企业版才有的特性,以及performance_schema提升、information_schema提升、性能和可扩展性提升、用户统计增强、PROCESSLIST增强、Slow log增强等大量改进和提升,这里不一一重复列出。

GreatSQL同时也是gitee(码云)平台上的GVP项目,详见:https://gitee.com/gvp/database-related 数据库相关类目。

问题反馈


提示


如果您使用了GreatSQL,请告诉我们。有机会获得精美礼品一份和免费技术支持

联系我们


扫码关注微信公众号

输入图片说明

Popular repositories Loading

  1. GreatSQL GreatSQL Public

    GreatSQL is a MySQL branch originated from GreatDB

    C++ 123 23

  2. gt-checksum gt-checksum Public

    gt-checksum是GreatSQL社区开源的一款静态数据库校验修复工具,支持MySQL、Oracle等主流数据库。

    Go 22 3

  3. GreatSQL-Doc GreatSQL-Doc Public

    GreatSQL-Doc

    Shell 13 1

  4. GreatSQL-Ansible GreatSQL-Ansible Public

    GreatSQL-Ansible

    Shell 10 1

  5. GreatSQL-Docker GreatSQL-Docker Public

    GreatSQL-Docker

    Shell 10 1

  6. GreatSQLHA GreatSQLHA Public

    Python 1