3 Star 0 Fork 11

src-openEuler / greatsql

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

关于 GreatSQL


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

下载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备份加密、审计日志入表、表空间国密加密等多个安全提升特性,进一步保障业务数据安全,更适用于金融级应用场景。

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

注意事项


推荐采用jemalloc库(推荐5.2.1+版本)来代替glibc中默认的内存管理分配器,是一个能够快速分配/回收内存,减少内存碎片,对多核友好,具有可伸缩性的内存分配器。为更好的支持多核内存分配的需要,jemalloc首次在FreeBSD中引入,而后被facebook发扬光大,成为了业界流行的内存分配解决方案之一。

先安装

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.2 (libc6,x86-64) => /usr/lib64/libjemalloc.so.2
        libjemalloc.so (libc6,x86-64) => /usr/lib64/libjemalloc.so

安装GreatSQL

执行下面的命令安装GreatSQL

#首先,查找GreatSQL
$ yum search GreatSQL
...
greatsql-client.x86_64 : GreatSQL - Client
greatsql-devel.x86_64 : GreatSQL - Development header files and libraries
greatsql-icu-data-files.x86_64 : GreatSQL packaging of ICU data files
greatsql-mysql-config.x86_64 : GreatSQL config
greatsql-mysql-router.x86_64 : GreatSQL MySQL Router
greatsql-server.x86_64 : GreatSQL: a high performance, highly reliable, easy to use, and high security database that can be used to replace
                       : MySQL or Percona Server.
greatsql-shared.x86_64 : GreatSQL - Shared libraries
greatsql-test.x86_64 : Test suite for the GreatSQL

#然后安装
$ yum install -y greatsql-client greatsql-devel greatsql-icu-data-files greatsql-server greatsql-shared

安装完成后,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参考

RPM方式安装后的GreatSQL默认配置不是太合理,建议参考下面这份my.cnf文档:

调整文档中关于datadir目录配置等相关选项,默认 datadir=/var/lib/mysql 通常都会改掉,例如替换成 datadir=/data/GreatSQL,修改完后保存退出, 替换原来的 /etc/my.cnf,然后重启GreatSQL,会重新进行初始化。

# 新建 /data/GreatSQL 空目录,并修改目录所有者
$ mkdir -p /data/GreatSQL
$ chown -R mysql:mysql /data/GreatSQL

# 重启mysqld服务,即自行完成重新初始化
$ systemctl restart mysqld

登入GreatSQL

首次登入GreatSQL前,需要先找到初始化时随机生成的root密码:

$ grep root /data/GreatSQL/error.log
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: dt_)MtExl594

其中的 dt_)MtExl594 就是初始化时随机生成的密码,在登入GreatSQL时输入该密码:

$ mysql -uroot -p'dt_)MtExl594'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32-25

Copyright (c) 2021-2021 GreatDB Software Co., Ltd
Copyright (c) 2009-2021 Percona LLC and/or its affiliates
Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \s
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>

首次登入立刻提醒该密码已过期,需要修改,执行类似下面的命令修改即可:

mysql> ALTER USER USER() IDENTIFIED BY 'GreatSQL-8032~%';
Query OK, 0 rows affected (0.02 sec)

之后就可以用这个新密码再次登入GreatSQL了。

创建新用户、测试库&表,及写入数据

修改完root密码后,应尽快创建普通用户,用于数据库的日常使用,减少超级用户root的使用频率,避免误操作意外删除重要数据。

#创建一个新用户GreatSQL,只允许从192.168.0.0/16网络连入,密码是 GreatSQL-2024
mysql> CREATE USER GreatSQL@'192.168.0.0/16' IDENTIFIED BY 'GreatSQL-2024';
Query OK, 0 rows affected (0.06 sec)

#创建一个新的用户库,并对GreatSQL用户授予读写权限
mysql> CREATE DATABASE GreatSQL;
Query OK, 1 row affected (0.03 sec)

mysql> GRANT ALL ON GreatSQL.* TO GreatSQL@'192.168.0.0/16';
Query OK, 0 rows affected (0.03 sec)

切换到普通用户GreatSQL登入,创建测试表,写入数据:

$ mysql -h192.168.1.10 -uGreatSQL -p'GreatSQL-2024'
...
# 切换到GreatSQL数据库下
mysql> use GreatSQL;
Database changed

# 创建新表
mysql> CREATE TABLE t1(id INT PRIMARY KEY);
Query OK, 0 rows affected (0.07 sec)

# 写入测试数据
mysql> INSERT INTO t1 SELECT RAND()*1024;
Query OK, 1 row affected (0.05 sec)
Records: 1  Duplicates: 0  Warnings: 0

# 查询数据
mysql> SELECT * FROM t1;
+-----+
| id  |
+-----+
| 203 |
+-----+
1 row in set (0.00 sec)

成功。

版本历史


GreatSQL 8.0

GreatSQL 5.7

MTR回归测试

GreatSQL已经在openEuler 20.03 (LTS-SP2) 环境下通过MTR回归测试,表明GreatSQL与openEuler开源操作系统完全兼容,功能齐全,测试完备。 相关MTR测试报告详见:GreatSQL 8.0.25-16通过MTR回归测试

更多使用文档


专栏文章

相关资源

GreatSQL vs MySQL

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

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

此外,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 - GreatSQL focuses on improving the reliability and performance of MGR, supports InnoDB parallel query and other features, and is a domestic MySQL version suitable for financial applications. It can be used as an optional replacement of MySQL or Percona Server. It is completely free and compatible with MySQL or Percona server. 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/src-openeuler/greatsql.git
git@gitee.com:src-openeuler/greatsql.git
src-openeuler
greatsql
greatsql
master

搜索帮助