转换LFS仓库为普通仓库

This commit is contained in:
Jiayi Yin 2025-05-18 22:34:57 +00:00
commit d138b02c07
11 changed files with 2298 additions and 0 deletions

36
README.en.md Normal file
View File

@ -0,0 +1,36 @@
# greatsql
#### Description
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.
#### Software Architecture
Software architecture description
#### Installation
1. xxxx
2. xxxx
3. xxxx
#### Instructions
1. xxxx
2. xxxx
3. xxxx
#### Contribution
1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request
#### Gitee Feature
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

399
README.md Normal file
View File

@ -0,0 +1,399 @@
# 关于 GreatSQL
GreatSQL 数据库是一款 **开源免费** 数据库,可在普通硬件上满足金融级应用场景,具有 **高可用**、**高性能**、**高兼容**、**高安全** 等特性,可作为 MySQL 或 Percona Server for MySQL 的理想可选替换。
最新版本GreatSQL 8.0.32-27。
## 下载GreatSQL
- [下载 GreatSQL 最新版本](https://gitee.com/GreatSQL/GreatSQL/releases/GreatSQL-8.0.32-27)
- [下载 GreatSQL 历史版本](https://gitee.com/GreatSQL/GreatSQL/releases/)
# GreatSQL核心特性
### [高可用](https://greatsql.cn/docs/5-enhance/5-2-ha.html)
针对 MGR 及主从复制进行了大量改进和提升工作,支持 地理标签、仲裁节点、读写动态 VIP、快速单主模式、智能选主 等特性,并针对 流控算法、事务认证队列清理算法、节点加入&退出机制、recovery机制 等多个 MGR 底层工作机制算法进行深度优化,进一步提升优化了 MGR 的高可用保障及性能稳定性。
- 支持 [地理标签](https://greatsql.cn/docs/5-enhance/5-2-ha-mgr-zoneid.html) 特性,提升多机房架构数据可靠性。
- 支持 [仲裁节点](https://greatsql.cn/docs/5-enhance/5-2-ha-mgr-arbitrator.html) 特性,用更低的服务器成本实现更高可用。
- 支持 [读写动态 VIP](https://greatsql.cn/docs/5-enhance/5-2-ha-mgr-vip.html) 特性,高可用切换更便捷,更快实现读负载均衡。支持 [当主节点切换时,主动关闭当前活跃连接](https://greatsql.cn/docs/5-enhance/5-2-ha-mgr-kill-conn-after-switch.html),缩短应用端不可用时长。。
- 支持 [快速单主模式](https://greatsql.cn/docs/5-enhance/5-2-ha-mgr-fast-mode.html),在单主模式下更快,性能更高。
- 支持 [智能选主](https://greatsql.cn/docs/5-enhance/5-2-ha-mgr-election-mode.html) 特性,高可用切换选主机制更合理。
- 优化 [流控算法](https://greatsql.cn/docs/5-enhance/5-2-ha-mgr-new-fc.html),使得事务更平稳,避免剧烈抖动。
- 支持 [记录 MGR 网络通信开销超过阈值的事件](https://greatsql.cn/docs/5-enhance/5-2-ha-mgr-request-time.html),用于进一步分析和优化。
- 支持自动选择从最新事务数据的成员节点复制数据,可有效提升 Clone 速度,提高 MGR 的服务可靠性。
- 在主从复制中,从节点向主节点发起 Binlog 读取请求时支持限速控制。
- 优化了 [asynchronous connection failover](https://dev.mysql.com/doc/refman/8.0/en/replication-asynchronous-connection-failover.html) 中的故障检测效率,降低主从复制链路断开的时间,提高整体可用性。
- 支持在跨机房容灾场景中的 [主主双向复制防止回路](https://greatsql.cn/docs/5-enhance/5-2-ha-repl-server-mode.html) 机制。
- 优化了 MGR 节点加入、退出时可能导致性能剧烈抖动的问题。
- 解决了个别节点上磁盘空间爆满时导致MGR集群整体被阻塞的问题。
- 优化了 MGR 事务认证队列清理算法,高负载下不复存在每 60 秒性能抖动问题。
- 解决了 MGR 中长事务造成无法选主的问题。
- 修复了 MGR recovery 过程中长时间等待的问题。
- 优化了MGR大事务传输时压缩超过限制的处理机制。
更多信息详见文档:[高可用](https://greatsql.cn/docs/5-enhance/5-2-ha.html)。
### [高性能](https://greatsql.cn/docs/5-enhance/5-1-highperf.html)
相对 MySQL 及 Percona Server For MySQL 的性能表现更稳定优异,支持 Rapid 引擎、Turbo引擎、事务无锁化、并行 LOAD DATA、异步删除大表、线程池、非阻塞式 DDL、NUMA 亲和调度优化 等特性,在 [TPC-C 测试中相对 MySQL 性能提升超过 30%](https://greatsql.cn/docs/10-optimize/3-5-benchmark-greatsql-vs-mysql-tpcc-report.html),在 [TPC-H 测试中的性能表现是 MySQL 的十几倍甚至上百倍](https://greatsql.cn/docs/10-optimize/3-3-benchmark-greatsql-tpch-report.html)。
- 支持 [大规模并行、基于内存查询、高压缩比的高性能 Rapid 引擎](https://greatsql.cn/docs/5-enhance/5-1-highperf-rapid-engine.html),可将数据分析性能提升几个数量级。
- 支持 [高性能并行查询引擎Turbo](https://greatsql.cn/docs/5-enhance/5-1-highperf-turbo-engine.html)使GreatSQL具备多线程并发的向量化实时查询功能。
- 优化 InnoDB 事务系统实现了大锁拆分及无锁化等多种优化方案OLTP 场景整体性能提升约 20%。
- 支持 [并行 LOAD DATA](https://greatsql.cn/docs/5-enhance/5-1-highperf-parallel-load.html),适用于频繁导入大批量数据的应用场景,性能可提升约 20 多倍;对于无显式定义主键的场景亦有优化提升。
- 支持 [异步删除大表](https://greatsql.cn/docs/5-enhance/5-1-highperf-async-purge-big-table.html),提高 InnoDB 引擎运行时性能的稳定性。
- 支持 [线程池](https://greatsql.cn/docs/5-enhance/5-1-highperf-thread-pool.html),降低了线程创建和销毁的代价,保证高并发下,性能稳定不会明显衰退。
- 支持 [非阻塞式 DDL](https://greatsql.cn/docs/5-enhance/5-1-highperf-nonblocking-ddl.html),可以避免数据库因为必须尽快完成 DDL 操作而导致业务请求大量被阻塞的问题。
- 支持 [NUMA 亲和性优化](https://greatsql.cn/docs/5-enhance/5-1-highperf-numa-affinity.html),通过 NUMA 亲和性调度优化,将前端用户线程和后台线程绑定到固定 NUMA 节点上以提升线程处理性能。
更多信息详见文档:[高性能](https://greatsql.cn/docs/5-enhance/5-1-highperf.html)。
### [高兼容](https://greatsql.cn/docs/5-enhance/5-3-easyuse.html)
GreatSQL 实现 100% 完全兼容 MySQL 及 Percona Server For MySQL 语法,支持大多数常见 Oracle 语法,包括 [数据类型兼容](https://greatsql.cn/docs/5-enhance/5-3-easyuse.html#数据类型兼容)、[函数兼容](https://greatsql.cn/docs/5-enhance/5-3-easyuse.html#函数兼容)、[SQL 语法兼容](https://greatsql.cn/docs/5-enhance/5-3-easyuse.html#sql语法兼容)、[存储程序兼容](https://greatsql.cn/docs/5-enhance/5-3-easyuse.html#存储程序兼容) 等众多兼容扩展用法。
更多信息详见文档:[高兼容](https://greatsql.cn/docs/5-enhance/5-3-easyuse.html)。
### [高安全](https://greatsql.cn/docs/5-enhance/5-4-security.html)
GreatSQL 支持逻辑备份加密、CLONE 备份加密、审计、表空间国密加密、敏感数据脱敏、存储登录历史等多个安全提升特性,进一步保障业务数据安全,更适用于金融级应用场景。
- 支持 [mysqldump 逻辑备份加密](https://greatsql.cn/docs/5-enhance/5-4-security-mysqldump-encrypt.html),提供了利用 mysqldump 逻辑备份的安全加密需求。
- 支持 [Clone 备份加密](https://greatsql.cn/docs/5-enhance/5-4-security-clone-encrypt.html),提供了利用 Clone 物理备份的安全加密需求。
- 支持 [审计功能](https://greatsql.cn/docs/5-enhance/5-4-security-audit.html),及时记录和发现未授权或不安全行为。
- 支持 [InnoDB 表空间国密加密算法](https://greatsql.cn/docs/5-enhance/5-4-security-innodb-tablespace-encrypt.html),确保重要数据的加密安全。
- 支持 [基于函数和策略的两种数据脱敏](https://greatsql.cn/docs/5-enhance/5-4-security-data-masking.html) 工作方式,保障敏感用户数据查询结果保密性。
- 支持 [存储登录历史](https://greatsql.cn/docs/5-enhance/5-4-security-last-login.html),便于管理员查询,进一步提升数据库安全性。
通过上述多个安全提升特性,进一步保障业务数据安全。更多信息详见文档:[高安全](https://greatsql.cn/docs/5-enhance/5-4-security.html)。
### [其他](https://greatsql.cn/docs/5-enhance/5-5-others.html)
- 支持 [Clone 在线全量热备、增备及恢复](https://greatsql.cn/docs/5-enhance/5-5-clone-compressed-and-incrment-backup.html),结合 Binlog 可实现恢复到指定时间点。此外Clone 备份还支持压缩功能。
- 支持 [InnoDB Page透明压缩采用Zstd算法](https://greatsql.cn/docs/5-enhance/5-5-innodb-page-compression.html),进一步提高数据压缩率,尤其是当有大量长文本重复数据时。
## 安装GreatSQL
### 安装 jemalloc推荐
运行 GreatSQL 时如果有 jemalloc 支持,则数据库进程的内存分配会更稳定、高效,因此建议安装 jemalloc非必须
如果是ARM环境下可以不必安装配置 jemalloc 依赖。
以 CentOS 8 x86_64 系统为例,采用类似下面的方法安装 jemalloc 软件包:
```bash
# 先安装 epel 源
$ yum install -y epel-release
# 再安装jemalloc
$ yum -y install jemalloc jemalloc-devel
```
也可以把自行安装的动态库so文件路径加到系统配置文件中例如
```bash
$ cat /etc/ld.so.conf
/usr/local/lib64/
```
而后执行下面的操作加载libjemalloc库并确认是否已存在
```bash
$ ldconfig
$ 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
```
如果无法通过 yum 直接安装 jemalloc可以自行下载 RPM 包,地址:[https://centos.pkgs.org/8/epel-x86_64/jemalloc-5.2.1-2.el8.x86_64.rpm.html](https://centos.pkgs.org/8/epel-x86_64/jemalloc-5.2.1-2.el8.x86_64.rpm.html)
### 安装 GreatSQL
执行下面的命令安装GreatSQL
```
#首先查找GreatSQL
$ yum search GreatSQL
...
greatsql.src : GreatSQL: a high performance, highly reliable, easy to use, and high security database
greatsql-client.x86_64 : GreatSQL - Client
greatsql-debuginfo.x86_64 : Debug information for package greatsql
greatsql-debugsource.x86_64 : Debug sources for package greatsql
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 --allowerasing 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
...
```
就可以正常启动 GreatSQL 服务了。
想要 GreatSQL 更高效运行,建议参考这份 my.cnf 配置模板:[my.cnf for GreatSQL](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/my.cnf-example)。
调整文档中关于`datadir`目录配置等相关选项,默认 `datadir=/var/lib/mysql` 通常都会改掉,例如替换成 `datadir=/data/GreatSQL`,修改完后保存退出,
替换原来的 `/etc/my.cnf`然后重启GreatSQL会重新进行初始化。
```bash
# 新建 /data/GreatSQL 空目录,并修改目录所有者
$ mkdir -p /data/GreatSQL
$ chown -R mysql:mysql /data/GreatSQL
# 重启mysqld服务即自行完成重新初始化
$ systemctl restart mysqld
```
## 登入GreatSQL
首次登入GreatSQL前需要先找到初始化时随机生成的root密码
```bash
$ grep root /data/GreatSQL/error.log
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: dt_)MtExl594
```
其中的 **dt_)MtExl594** 就是初始化时随机生成的密码在登入GreatSQL时输入该密码
```bash
$ 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-27
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-2025
mysql> CREATE USER GreatSQL@'192.168.0.0/16' IDENTIFIED BY 'GreatSQL-2025';
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-2025'
...
# 切换到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 版本历史](https://greatsql.cn/docs/1-docs-intro/1-2-release-history.html)。
## QA测试
GreatSQL 8.0.32-27 已经在 openEuler-25.03 环境下通过回归测试,表明 GreatSQL 与 openEuler-25.03 完全兼容,功能齐全,测试完备。
相关回归测试报告详见:[openEuler-25.03-GreatSQL测试报告](./openEuler-25.03-GreatSQL测试报告.md)。
## GreatSQL vs MySQL
| **1.主要特性** | GreatSQL 8.0.32-27 | 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: | ❌ |
|支持龙芯架构| :heavy_check_mark: | ❌ |
| **2. 性能提升扩展** | GreatSQL 8.0.32-27 | MySQL 8.0.32 |
|Rapid 引擎| :heavy_check_mark: | 仅云上HeatWave |
|Turbo 引擎| :heavy_check_mark: | ❌ |
|NUMA 亲和性优化| :heavy_check_mark: | ❌ |
|非阻塞式 DDL| :heavy_check_mark: | ❌ |
|无主键表导入优化 | :heavy_check_mark: | ❌ |
|InnoDB 并行查询| :heavy_check_mark: | 仅主键扫描 |
|并行 LOAD DATA| :heavy_check_mark: | ❌ |
|InnoDB 事务 ReadView 无锁优化| :heavy_check_mark: | ❌ |
|InnoDB 事务大锁拆分优化| :heavy_check_mark: | ❌ |
|InnoDB page压缩支持zstd| :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-27 | 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-27 | 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: | ❌ |
|MGR 提升-网络分区异常处理 | :heavy_check_mark: | ❌ |
|MGR 提升-节点异常退出处理 | :heavy_check_mark: | ❌ |
|MGR 提升-节点磁盘满处理 | :heavy_check_mark: | ❌ |
|MGR 提升-自动选择 donor 节点| :heavy_check_mark: | ❌ |
|MGR 提升-大事务压缩优化| :heavy_check_mark: | ❌ |
|Clone 增量备份| :heavy_check_mark: | ❌ |
|Clone 备份压缩| :heavy_check_mark: | ❌ |
|Binlog 读取限速| :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-27 | MySQL 8.0.32 |
|国密支持| :heavy_check_mark: | ❌ |
|备份加密| :heavy_check_mark: | ❌ |
|审计| :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: | 仅企业版 |
|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-27 | 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-27 基于 Percona Server for MySQL 8.0.32 版本,它在 MySQL 8.0.32 基础上做了大量的改进和提升以及众多新特性,详情请见:[**Percona Server for MySQL feature comparison**](https://docs.percona.com/percona-server/8.0/feature-comparison.html),这其中包括线程池、审计、数据脱敏等 MySQL 企业版才有的特性,以及 performance_schema 提升、information_schema 提升、性能和可扩展性提升、用户统计增强、PROCESSLIST 增强、Slow Log 增强等大量改进和提升,这里不一一重复列出。
GreatSQL同时也是gitee码云平台上的GVP项目详见[https://gitee.com/gvp/database-related](https://gitee.com/gvp/database-related) **数据库相关**类目。
## 许可/Licensing
GreatSQL 致力于保持开源的开放性。GreatSQL 采用 GPLv2 协议。
## 温馨提示
[如果您在使用 GreatSQL请告诉我们将有机会获得精美礼品和免费技术支持](https://wj.qq.com/s2/11543483/9e09/)。
## 问题反馈
---
- [问题反馈 gitee](https://gitee.com/GreatSQL/GreatSQL-Doc/issues)
## 联系我们
---
扫码关注微信公众号
![输入图片说明](https://images.gitee.com/uploads/images/2021/0802/141935_2ea2c196_8779455.jpeg "greatsql社区-wx-qrcode-0.5m.jpg")

41
add-riscv64-support.patch Normal file
View File

@ -0,0 +1,41 @@
From: GreatSQL<greatsql@greatdb.com>
Date: Mon, 30 Sep 2024 20:32:57 +0800
Date: Thu, 06 Mar 2025 14:08:51 +0800
Subject: [PATCH] add riscv64 support
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e58d2efa2b1..c31f3c6992c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -722,6 +722,7 @@ SET(KNOWN_64BIT_ARCHITECTURES
s390x
x86_64
sw_64
+ riscv64
)
# Include the platform-specific file. To allow exceptions, this code
diff --git a/storage/ndb/include/portlib/mt-asm.h b/storage/ndb/include/portlib/mt-asm.h
index a63fae161e4..cc7ea267028 100644
--- a/storage/ndb/include/portlib/mt-asm.h
+++ b/storage/ndb/include/portlib/mt-asm.h
@@ -84,6 +84,19 @@ cpu_pause()
}
#endif
+#elif defined(__riscv)
+
+#define NDB_HAVE_MB
+#define NDB_HAVE_RMB
+#define NDB_HAVE_WMB
+
+#define RISCV_FENCE(p, s) \
+ __asm__ __volatile__ ("fence " #p "," #s : : : "memory")
+
+#define mb() RISCV_FENCE(iorw,iorw)
+#define rmb() RISCV_FENCE(ir,ir)
+#define wmb() RISCV_FENCE(ow,ow)
+
#elif defined(__sparc__)
#define NDB_HAVE_MB

BIN
boost_1_77_0.tar.bz2 Normal file

Binary file not shown.

BIN
greatsql-8.0.32-27.tar.xz Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

1164
greatsql.spec Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,433 @@
--- client/base/CMakeLists.txt 2018-08-18 03:29:34.986169793 -0400
+++ client/base/CMakeLists.txt 2018-08-18 03:29:34.991586542 -0400
@@ -51,4 +51,4 @@
${CMAKE_SOURCE_DIR}/client/multi_factor_passwordopt-vars.cc
)
-TARGET_LINK_LIBRARIES(client_base perconaserverclient)
+TARGET_LINK_LIBRARIES(client_base mysqlclient)
--- client/CMakeLists.txt 2018-08-18 03:29:59.708213642 -0400
+++ client/CMakeLists.txt 2018-08-18 03:29:59.712547041 -0400
@@ -49,13 +49,13 @@ MYSQL_ADD_EXECUTABLE(mysql
mysql_dump_encrypt.cc
multi_factor_passwordopt-vars.cc
${CMAKE_CURRENT_SOURCE_DIR}/common/user_registration.cc
- LINK_LIBRARIES perconaserverclient client_base ${MY_READLINE_LIBRARY}
+ LINK_LIBRARIES mysqlclient client_base ${MY_READLINE_LIBRARY}
)
IF(NOT WITHOUT_SERVER)
MYSQL_ADD_EXECUTABLE(mysql_upgrade
upgrade/program.cc
- LINK_LIBRARIES perconaserverclient client_base
+ LINK_LIBRARIES mysqlclient client_base
)
ENDIF()
@@ -73,7 +73,7 @@ MYSQL_ADD_EXECUTABLE(mysqltest
COMPONENT Test
DEPENDENCIES GenError GenClientError
ENABLE_EXPORTS
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
IF (WITH_COREDUMPER)
TARGET_LINK_LIBRARIES(mysqltest coredumper)
@@ -83,29 +83,29 @@ MYSQL_ADD_EXECUTABLE(mysqlcheck
check/mysqlcheck.cc
check/mysqlcheck_core.cc
multi_factor_passwordopt-vars.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
MYSQL_ADD_EXECUTABLE(mysqldump
mysqldump.cc
mysql_dump_encrypt.cc
multi_factor_passwordopt-vars.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
MYSQL_ADD_EXECUTABLE(mysqldecrypt
../sql/encrypt.cc
path.cc
mysqldecrypt.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
MYSQL_ADD_EXECUTABLE(mysqlimport
mysqlimport.cc
multi_factor_passwordopt-vars.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
MYSQL_ADD_EXECUTABLE(mysqlshow
mysqlshow.cc
multi_factor_passwordopt-vars.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
OPTION(WITH_JSON_BINLOG_LIBRARY
@@ -249,7 +249,7 @@ SET(MYSQLBINLOG_SOURCES
SET(MYSQLBINLOG_LIBRARIES
binlogevents_static
client_base
- perconaserverclient
+ mysqlclient
)
IF(WITH_JSON_BINLOG_LIBRARY)
@@ -291,20 +291,20 @@ TARGET_INCLUDE_DIRECTORIES(mysqlbinlog PRIVATE ${CMAKE_SOURCE_DIR}/sql)
MYSQL_ADD_EXECUTABLE(mysqladmin
mysqladmin.cc
multi_factor_passwordopt-vars.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
MYSQL_ADD_EXECUTABLE(mysqlslap
mysqlslap.cc
multi_factor_passwordopt-vars.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
MYSQL_ADD_EXECUTABLE(mysql_config_editor
mysql_config_editor.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
MYSQL_ADD_EXECUTABLE(mysql_secure_installation
mysql_secure_installation.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
)
MYSQL_ADD_EXECUTABLE(mysql_ssl_rsa_setup
logger.cc
--- client/migrate_keyring/CMakeLists.txt
+++ client/migrate_keyring/CMakeLists.txt
@@ -40,7 +40,7 @@ SET(MIGRATE_KEYRING_LIBRARIES
${CMAKE_DL_LIBS}
minchassis
mysys
- perconaserverclient
+ mysqlclient
client_base
${SSL_LIBRARIES}
)
--- include/mysql.h 2022-09-13 10:19:20.000000000 +0300
+++ include/mysql.h 2022-09-13 12:40:29.000000000 +0300
@@ -28,7 +28,7 @@
/**
@file include/mysql.h
This file defines the client API to MySQL and also the ABI of the
- dynamically linked libperconaserverclient.
+ dynamically linked libmysqlclient.
The ABI should never be changed in a released product of MySQL,
thus you need to take great care when changing the file. In case
@@ -410,12 +410,12 @@
/*
mysql_server_init/end need to be called when using libmysqld or
- libperconaserverclient (exactly, mysql_server_init() is called by
+ libmysqlclient (exactly, mysql_server_init() is called by
mysql_init() so you don't need to call it explicitly; but you need to call
mysql_server_end() to free memory). The names are a bit misleading
(mysql_SERVER* to be used when using libmysqlCLIENT). So we add more general
names which suit well whether you're using libmysqld or
- libperconaserverclient. We intend to promote these aliases over the
+ libmysqlclient. We intend to promote these aliases over the
mysql_server* ones.
*/
#define mysql_library_init mysql_server_init
--- libmysql/CMakeLists.txt
+++ libmysql/CMakeLists.txt
@@ -283,15 +283,15 @@
# authentication IAM client plug-in
ADD_SUBDIRECTORY(authentication_oci_client)
-# Merge several convenience libraries into one big perconaserverclient
-MERGE_CONVENIENCE_LIBRARIES(perconaserverclient ${LIBS_TO_MERGE}
+# Merge several convenience libraries into one big mysqlclient
+MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE}
COMPONENT Development
LINK_LIBRARIES ${LIBS_TO_LINK}
)
# Visual Studio users need debug static library for debug projects
IF(MSVC)
- INSTALL_DEBUG_TARGET(perconaserverclient DESTINATION ${INSTALL_LIBDIR}/debug)
+ INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug)
INSTALL_DEBUG_TARGET(auth_win_client DESTINATION ${INSTALL_LIBDIR}/debug)
INSTALL_DEBUG_TARGET(clientlib DESTINATION ${INSTALL_LIBDIR}/debug)
@@ -326,13 +326,13 @@
STRING_APPEND(OS_SHARED_LIB_VERSION
".${SHARED_LIB_MINOR_VERSION}.${SHARED_LIB_PATCH_VERSION}")
ENDIF()
- # Name of shared library is libperconaserverclient on Unix
- SET(UNIX_OUTPUT_NAME OUTPUT_NAME perconaserverclient)
+ # Name of shared library is libmysqlclient on Unix
+ SET(UNIX_OUTPUT_NAME OUTPUT_NAME mysqlclient)
SET(UNIX_VERSION VERSION "${OS_SHARED_LIB_VERSION}")
SET(UNIX_SOVERSION SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
ENDIF()
-# Merge several convenience libraries into one big perconaserverclient
+# Merge several convenience libraries into one big mysqlclient
# and link them together into shared library.
MERGE_LIBRARIES_SHARED(libmysql ${LIBS_TO_MERGE}
EXPORTS
@@ -353,7 +353,7 @@
IF(LINUX_STANDALONE AND KERBEROS_CUSTOM_LIBRARY)
ADD_DEPENDENCIES(libmysql ${kerberos_target})
- ADD_DEPENDENCIES(perconaserverclient ${kerberos_target})
+ ADD_DEPENDENCIES(mysqlclient ${kerberos_target})
ENDIF()
IF(UNIX)
@@ -368,8 +368,8 @@
ENDIF()
# clean direct output needs to be set several targets have the same name
- #(perconaserverclient in this case)
- SET_TARGET_PROPERTIES(perconaserverclient PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+ #(mysqlclient in this case)
+ SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1)
SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1)
ENDIF()
--- libmysql/libmysql.ver.in
+++ libmysql/libmysql.ver.in
@@ -21,5 +21,5 @@
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
-libperconaserverclient_@SHARED_LIB_MAJOR_VERSION@.0
+libmysqlclient_@SHARED_LIB_MAJOR_VERSION@.0
{ global: ${CLIENT_API_FUNCTIONS};${CLIENT_API_FUNCTIONS_UNDOCUMENTED}; ${CLIENT_API_NONBLOCKING_FUNCTIONS}; local: *; };
--- plugin/percona-pam-for-mysql/CMakeLists.txt
+++ plugin/percona-pam-for-mysql/CMakeLists.txt
@@ -36,7 +36,7 @@ IF(HAVE_PAM AND HAVE_GETPWNAM_R AND HAVE_GETGRGID_R AND HAVE_DLFCN_H)
MYSQL_ADD_PLUGIN(dialog
src/dialog.cc
../../sql-common/get_password.cc
- LINK_LIBRARIES perconaserverclient
+ LINK_LIBRARIES mysqlclient
MODULE_ONLY)
IF(UNIX)
--- plugin/x/tests/driver/CMakeLists.txt
+++ plugin/x/tests/driver/CMakeLists.txt
@@ -42,7 +42,7 @@ MYSQL_ADD_EXECUTABLE(mysqlxtest
LINK_LIBRARIES
mysys
strings
- perconaserverclient
+ mysqlclient
${MYSQLX_CLIENT_FULL_LIB}
${MYSQLX_PROTOCOL_FULL_LIB}
${PROTOBUF_LIBRARY}
--- router/src/router/src/CMakeLists.txt
+++ router/src/router/src/CMakeLists.txt
@@ -71,7 +71,7 @@ TARGET_LINK_LIBRARIES(router_lib
${CMAKE_DL_LIBS}
harness-library
harness_stdx
- perconaserverclient
+ mysqlclient
${SSL_LIBRARIES}
io_component
)
--- router/tests/fuzzers/CMakeLists.txt
+++ router/tests/fuzzers/CMakeLists.txt
@@ -34,7 +34,7 @@ IF(LIBFUZZER_COMPILE_FLAGS)
LINK_LIBRARIES
harness-library
- perconaserverclient
+ mysqlclient
${SSL_LIBRARIES}
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
@@ -62,7 +62,7 @@ IF(LIBFUZZER_COMPILE_FLAGS)
LINK_LIBRARIES
harness-library
- perconaserverclient
+ mysqlclient
${SSL_LIBRARIES}
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
--- scripts/CMakeLists.txt
+++ scripts/CMakeLists.txt
@@ -302,7 +302,7 @@ ELSE()
ENDIF()
# Use cmake variables to inspect dependencies for
-# perconaserverclient library (add -l stuff)
+# mysqlclient library (add -l stuff)
SET(CLIENT_LIBS "")
SET(LIBS "")
@@ -337,11 +337,11 @@ MACRO(EXTRACT_LINK_LIBRARIES target var)
STRING(REGEX REPLACE "[ ]+$" "" ${var} "${${var}}")
ENDMACRO()
-EXTRACT_LINK_LIBRARIES(perconaserverclient CLIENT_LIBS)
+EXTRACT_LINK_LIBRARIES(mysqlclient CLIENT_LIBS)
IF(MSVC)
- GET_TARGET_PROPERTY(LIBMYSQL_OS_SHLIB_VERSION perconaserverclient VERSION)
- GET_TARGET_PROPERTY(LIBMYSQL_OS_OUTPUT_NAME perconaserverclient OUTPUT_NAME)
+ GET_TARGET_PROPERTY(LIBMYSQL_OS_SHLIB_VERSION mysqlclient VERSION)
+ GET_TARGET_PROPERTY(LIBMYSQL_OS_OUTPUT_NAME mysqlclient OUTPUT_NAME)
ELSE()
GET_TARGET_PROPERTY(LIBMYSQL_OS_SHLIB_VERSION libmysql VERSION)
GET_TARGET_PROPERTY(LIBMYSQL_OS_OUTPUT_NAME libmysql OUTPUT_NAME)
--- storage/ndb/test/run-test/CMakeLists.txt
+++ storage/ndb/test/run-test/CMakeLists.txt
@@ -47,7 +47,7 @@
test_execution_resources.cpp
DESTINATION mysql-test/ndb
ENABLE_EXPORTS
- LINK_LIBRARIES ndbNDBT ndbclient_static perconaserverclient
+ LINK_LIBRARIES ndbNDBT ndbclient_static mysqlclient
)
IF(MY_COMPILER_IS_CLANG)
--- storage/ndb/tools/CMakeLists.txt
+++ storage/ndb/tools/CMakeLists.txt
@@ -230,10 +230,10 @@ IF(NOT WIN32 AND NOT SOLARIS)
COMPONENT ClusterTools
)
IF(NCURSES_HAS_STDSCR)
- TARGET_LINK_LIBRARIES(ndb_top perconaserverclient ${NCURSESW_LIB})
+ TARGET_LINK_LIBRARIES(ndb_top mysqlclient ${NCURSESW_LIB})
ELSE()
TARGET_LINK_LIBRARIES(ndb_top
- perconaserverclient
+ mysqlclient
${NCURSESW_LIB}
${NCURSES_TINFO_LIB})
ENDIF()
--- testclients/CMakeLists.txt
+++ testclients/CMakeLists.txt
@@ -23,9 +23,9 @@
ADD_WSHADOW_WARNING()
MYSQL_ADD_EXECUTABLE(mysql_client_test mysql_client_test.cc COMPONENT Test)
-TARGET_LINK_LIBRARIES(mysql_client_test perconaserverclient)
+TARGET_LINK_LIBRARIES(mysql_client_test mysqlclient)
IF(WITH_UNIT_TESTS)
MYSQL_ADD_EXECUTABLE(bug25714 bug25714.cc SKIP_INSTALL)
- TARGET_LINK_LIBRARIES(bug25714 perconaserverclient)
+ TARGET_LINK_LIBRARIES(bug25714 mysqlclient)
ENDIF()
--- unittest/gunit/group_replication/CMakeLists.txt
+++ unittest/gunit/group_replication/CMakeLists.txt
@@ -47,7 +47,7 @@
gr_unit_test_resource
gunit_large
server_unittest_library
- perconaserverclient
+ mysqlclient
mysqlgcs
)
ENDFOREACH()
--- unittest/gunit/xplugin/xcl/CMakeLists.txt
+++ unittest/gunit/xplugin/xcl/CMakeLists.txt
@@ -77,7 +77,7 @@ TARGET_LINK_LIBRARIES(${XCL_UNIT_TESTS}
${MYSQLX_PROTOCOL_FULL_LIB}
${PROTOBUF_LIBRARY}
${LZ4_LIBRARY}
- perconaserverclient
+ mysqlclient
gtest
gmock
)
--- unittest/gunit/xplugin/xpl/CMakeLists.txt
+++ unittest/gunit/xplugin/xpl/CMakeLists.txt
@@ -115,7 +115,7 @@ TARGET_LINK_LIBRARIES(${XPL_UNIT_TESTS}
${GCOV_LDFLAGS}
${MYSQLX_CLIENT_LIB}
mysqlx
- perconaserverclient
+ mysqlclient
gtest
gmock
)
#--- storage/tokudb/PerconaFT/tools/CMakeLists.txt 2018-08-29 12:23:52.000000000 -0400
#+++ storage/tokudb/PerconaFT/tools/CMakeLists.txt 2018-08-29 12:41:38.711986474 -0400
#@@ -20,7 +20,7 @@
# target_link_libraries(${tool} sql binlog rpl master slave)
# endif ()
# else ()
#- target_link_libraries(${tool} perconaserverclient)
#+ target_link_libraries(${tool} mysqlclient)
# endif ()
# endif ()
--- libmysql/authentication_kerberos/CMakeLists.txt 2021-09-28 04:49:14.000000000 +0000
+++ libmysql/authentication_kerberos/CMakeLists.txt 2021-09-28 09:24:09.917822028 +0000
@@ -65,7 +65,7 @@
LIST(APPEND UTILITY "sspi_utility.cc")
ENDIF()
-SET(MY_SQL "perconaserverclient")
+SET(MY_SQL "mysqlclient")
DISABLE_MISSING_PROFILE_WARNING()
--- unittest/gunit/changestreams/CMakeLists.txt 2022-03-31 15:09:27.559009464 +0000
+++ unittest/gunit/changestreams/CMakeLists.txt 2022-03-31 15:10:26.404854666 +0000
@@ -36,7 +36,7 @@
SET(TESTS_LINK_LIBRARIES
changestreams_standalone_static
binlogstandalone_static
- perconaserverclient
+ mysqlclient
gunit_small)
IF (WITH_CS_PROTOBUF)
--- router/src/router/tests/CMakeLists.txt 2022-07-26 08:37:14.834824576 +0000
+++ router/src/router/tests/CMakeLists.txt 2022-07-26 08:38:26.484931770 +0000
@@ -130,7 +130,7 @@
ADD_HARNESS_TEST_FILE(test_mysql_session.cc
MODULE ${TEST_MODULE}
LIB_DEPENDS
- test-helpers perconaserverclient
+ test-helpers mysqlclient
EXTRA_SOURCES
../src/common/mysql_session.cc
../src/common/log_filter.cc
@@ -146,7 +146,7 @@
ADD_HARNESS_TEST_FILE(test_metadata_check.cc
MODULE ${TEST_MODULE}
LIB_DEPENDS
- test-helpers perconaserverclient
+ test-helpers mysqlclient
EXTRA_SOURCES
../src/common/mysql_session.cc
../src/common/log_filter.cc
@@ -168,7 +168,7 @@
ADD_HARNESS_TEST_FILE(test_cluster_metadata.cc
MODULE ${TEST_MODULE}
LIB_DEPENDS
- test-helpers perconaserverclient
+ test-helpers mysqlclient
EXTRA_SOURCES
../src/common/mysql_session.cc
../src/common/log_filter.cc
@@ -190,7 +190,7 @@
ADD_HARNESS_TEST_FILE(test_windows_service.cc
MODULE ${TEST_MODULE}
LIB_DEPENDS
- test-helpers perconaserverclient
+ test-helpers mysqlclient
EXTRA_SOURCES
../src/windows/main-windows.cc
../src/windows/nt_servc.cc

36
mysql_config.sh Normal file
View File

@ -0,0 +1,36 @@
#! /bin/bash
#
# Wrapper script for mysql_config to support multilib
#
#
# This command respects setarch, works on OL6/RHEL6 and later
isa_bits=$(rpm --eval %__isa_bits)
case $bits in
32|64) bits=$isa_bits ;;
*) bits=unknown ;;
esac
# Try mapping by uname if rpm command failed
if [ "$bits" = "unknown" ] ; then
arch=$(uname -m)
case $arch in
x86_64|ppc64) bits=64 ;;
i386|i486|i586|i686|pentium3|pentium4|athlon|ppc) bits=32 ;;
*) bits=unknown ;;
esac
fi
if [ "$bits" == "unknown" ] ; then
echo "$0: error: failed to determine isa bits on your arch."
exit 1
fi
if [ -x /usr/bin/mysql_config-$bits ] ; then
/usr/bin/mysql_config-$bits "$@"
else
echo "$0: error: needed binary: /usr/bin/mysql_config-$bits is missing. Please check your MySQL installation."
exit 1
fi

36
mysqld.cnf Normal file
View File

@ -0,0 +1,36 @@
# GreatSQL template configuration
#
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
# The default mysql directories are as follow
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
# log-error=/var/log/mysqld.log
# pid-file=/var/run/mysqld/mysqld.pid
# Keep the same behavior like other MySQL based/series Databases(MariaDB, Percona, GreatSQL, MySQL5.7 and MySQL8.0)
!includedir /etc/my.cnf.d

View File

@ -0,0 +1,153 @@
# openEuler-25.03-GreatSQL测试报告
![avatar](../../images/openEuler.png)
版权所有 © 2025 openEuler社区
您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名—相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解您可以通过访问https://creativecommons.org/licenses/by-sa/4.0/ 了解CC BY-SA 4.0的概要 (但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取https://creativecommons.org/licenses/by-sa/4.0/legalcode。
修订记录
| 日期 | 修订 版本 | 修改描述 | 作者 |
| ---- | ----------- | -------- | ---- |
| 2025.03.05 | 1.0 | GreatSQL测试报告v1 |@GreatSQL|
关键词GreatSQL
摘要:按照 GreatSQL 8.0.32-27 测试用例要求,部署 openEuler 25.03 测试镜像环境,对 GreatSQL 的源码编译、src.rpm包编译安装、RPM安装、二进制包安装、主要功能进行测试。测试结果良好完全支持 GreatSQL 主要功能的正常使用。
缩略语清单:
| 缩略语 | 英文全名 | 中文解释 |
| ------ | -------- | -------- |
| MGR/GR | MySQL Group Replication | MySQL Group ReplicationMySQL 组复制的简称。MySQL 推出的一种不同于主从复制、半同步复制的全新复制机制。|
| arbitrator | MGR arbitrator member | 仲裁节点/投标节点。该节点不存储用户数据,没有 binlog也不需要回放 relay log只参与 MGR 状态投票/仲裁。 |
| zone id | MGR member zone id| 地理标签。可以对每个节点设置地理标签,主要用于解决多机房数据同步的问题。|
| fast mode | MGR fast mode | 快速单主模式。在该模式下可以降低 MGR 事务代价,提升事务性能。|
| election mode | MGR Primary member election mode | 可根据不同策略选择MGR主节点。|
| datamask | 数据脱敏 | 数据脱敏有助于防止非授权用户访问敏感数据,从而限制敏感数据的暴露。 |
| nonblocking DDL | 非阻塞式 DDL|Nonblock DDL规避了执行DDL过程中MDL锁长时间获取不成功导致的连接堆积和阻塞有效地解决了DDL导致的锁表问题。|
| numa affinity | NUMA 亲和性优化|高并发场景在系统默认的线程调度方式下,用户线程和后台处理线程频繁休眠后唤醒在不同 NUMA 节点的 CPU这种情况导致 CPU 开销增大,影响整体性能。|
| audit | GreatSQL 支持开启审计功能,并且还支持将审计日志写入数据库中,方便管理员查询。|
| VIP | GreatSQL中支持读写节点绑定动态 VIP虚拟 IP高可用切换更便捷。|
# 1 特性概述
本测试报告为 GreatSQL 8.0.32-27 在 openEuler 25.03 操作系统上的测试报告,目的在于跟踪测试阶段中发现的问题,总结 GreatSQL 在 openEuler 25.03 操作系统中运行状况&功能特性支持的测试结果,测试的范围主要包括 GreatSQL 源码编译、src.rpm包编译安装、RPM安装、二进制包安装、主要功能及性能、稳定性等方面进行测试。
# 2 特性测试信息
本节描述被测对象的版本信息和测试的时间及测试轮次,包括依赖的硬件。
| 版本名称 | 测试起始时间 | 测试结束时间 | 备注 |
| -------- | ------------ | ------------ | --- |
| openEuler-25.03 | 2025年03月04日 | 2025年03月05日 | |
描述特性测试的硬件环境信息
| 硬件型号 | 硬件配置信息 | 备注 |
| -------- | ------------ | ---- |
| Docker 容器 | 无特殊配置 | 在 aarch64/x86_64 物理机上运行 Docker 容器测试 |
# 3 测试结论概述
## 3.1 测试整体结论
在 Docker 容器中启动 openEuler 25.03 测试镜像,在此基础上进行 GreatSQL 8.0.32-27 测试,共执行 139 个测试项,主要涵盖了 GreatSQL 源码编译、RPM安装、二进制包安装、MGR增强、Binlog读取限速、Clone复制数据时自动最新节点、并行LOAD DATA、异步删除大表、非阻塞式DDL、NUMA亲和性优化、Oracle兼容、Clone备份加密、Clone增量备份、Clone压缩备份、审计、数据脱敏、最后登录信息等主要功能特性等方面主要功能均通过测试无风险整体核心功能稳定正常。
## 3.2 约束说明
无。
## 3.3 遗留问题分析
无。
# 4 测试执行
## 4.1 测试执行统计数据
*本节内容根据测试用例及实际执行情况进行特性整体测试的统计,可根据第二章的测试轮次分开进行统计说明。*
| 版本名称 | 特性名字 | 测试用例数 | 用例执行结果 | 发现问题单数 |
| -------- |---------- | ---------- | ------------ | ------------ |
| openEuler-25.03 | GreatSQL 8.0.32-27 | 146 | Pass | 0 |
## 4.2 后续测试建议
无。
## 4.3 特性测试结论
### 4.3.1 高可用特性测试结论
| 序号 | 特性名称 | 遗留问题 | 备注 |
| --- | :--- | :--- | :--- |
| 1 | [MGR 地理标签](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-zoneid.html) | 无 | 可以对每个节点设置地理标签,主要用于解决多机房数据同步的问题。可以提升多机房架构数据可靠性。|
| 2 | [MGR 读写动态 VIP](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-vip.html) | 无 | 支持对MGR节点绑定VIP使得高可用切换更便捷。|
| 3 | [MGR 切主后断开应用连接](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-kill-conn-after-switch.html) | 无 | 在MGR发生切换时主动断开旧Primary节点上的所有连接。|
| 4 | [MGR Arbitrator仲裁节点](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-arbitrator.html) | 无 | 仲裁节点投票节点不存储数据和binlog无应用事务使得可以用更低的服务器成本实现更高可用。|
| 5 | [MGR 快速单主模式](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-fast-mode.html) | 无 | 在这个模式下不再采用MGR原有的认证数据库方式而是判断当前binlog是否能够及时入盘来决定怎么样流控确保不OOM。|
| 6 | [MGR 智能选主](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-election-mode.html) | 无 | 支持多种智能选主模式,使得高可用切换选主机制更合理。 |
| 7 | [MGR 全新流控算法](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-new-fc.html) | 无 | 重新设计了流控算法除了会考虑认证数据库队列大小的因素并同时考虑了大事务处理和主从节点的同步流控粒度更细致不会出现官方社区版本的1秒小抖动问题。|
| 8 | [MGR 网络开销阈值](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-request-time.html) | 无 | 记录超过阈值的事件,便于进一步分析。|
| 9 | [主主双向复制防止回路](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-repl-server-mode.html) | 无 | 控制只应用多源复制管道内临近主节点上产生的binlog不会应用其他的非临近节点产生的binlog避免出现数据回路问题。|
| 10 | [Binlog 读取限速及相应状态变量](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-binlog-speed-limit.html) | 无 | 控制从节点上向主节点发起 Binlog 读取请求的限速。|
| 11 | [节点异常状态判断更完善和高效](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 | 可定义节点超过多少秒没发消息会被判定为可疑,提高异常检测判断效率。|
| 12 | [Clone复制数据时自动选择最新节点](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 | 自动选择从最新事务数据的成员节点复制数据,可有效提升 Clone 速度,提高 MGR 的服务可靠性。|
| 13 | [支持AFTER模式下多数派写机制](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 |
| 14 | [解决磁盘空间爆满时导致MGR集群阻塞的问题](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 |
| 15 | [解决多主模式下或切主时可能导致丢数据的问题](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 |
| 16 | [解决节点异常退出集群时导致性能抖动的问题](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 |
| 17 | [优化了加入节点时可能导致性能剧烈抖动的问题](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 |
| 18 | [优化手工选主机制,解决了长事务造成无法选主的问题](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 |
| 19 | [优化了加入节点时可能导致性能剧烈抖动的问题](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 |
| 20 | [优化了MGR大事务传输时压缩超过限制的处理机制](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-2-ha-mgr-improved.html) | 无 |
| 21 | [对greatdb_ha_port端口的防护处理](https://greatsql.cn/docs/8.0.32-27/1-docs-intro/relnotes/changes-greatsql-8-0-32-27.html) | 无 |
### 4.3.2 高性能特性测试结论
| 序号 | 特性名称 | 遗留问题 | 备注 |
| --- | :--- | :--- | :--- |
| 1 | [新版本Rapid引擎](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-1-highperf-rapid-engine.html) | 无 | 可满足企业级 OLAP 应用场景的Rapid引擎在32C64G实例下TPC-H SF100测试仅耗时不到80秒。|
| 2 | [高性能并行查询引擎Turbo](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-1-highperf-turbo-engine.html) | 无 | 可满足企业级轻量 OLAP 应用场景的Turbo引擎在32C64G实例下TPC-H SF100测试仅耗时仅约214秒。|
| 3 | [InnoDB并行查询](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-1-highperf-innodb-pq.html) | 无 | 通过多线程改造GreatSQL InnoDB PQ可以充分利用多核资源提升查询性能。GreatSQL在TPC-H测试中表现优异最高可提升30倍平均提升15倍。|
| 4 | [并行 LOAD DATA](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-1-highperf-parallel-load.html) | 无 | 自动将导入的文件切分文件成多个小块,启动多个 Worker 线程并行导入文件块数据导入性能提升最高约20倍。|
| 5 | [并行 LOAD DATA时无主键表并行导入优化](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-1-highperf-parallel-load.html) | 无 | 对无主键表并行LOAD DATA场景进行优化可提升约5倍。|
| 6 | [InnoDB异步删除大表](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-1-highperf-async-purge-big-table.html) | 无 | 利用后台线程来异步缓慢地删除数据文件,避免删除大表时产生性能波动。|
| 7 | [非阻塞式 DDL](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-1-highperf-nonblocking-ddl.html) | 无 | 进行多次申请 MDL-X 锁的尝试,而非原生的独占申请方式,这就可以在多次重试的间隙释放锁资源允许新事务进行。|
| 8 | [NUMA 亲和性优化](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-1-highperf-numa-affinity.html) | 无 | 利用 NUMA 亲和性与内存分配策略,让进程与内存的距离尽量短,提升性能。|
| 9 | [线程池Thread pool](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-1-highperf-thread-pool.html) | 无 | 可以避免在连接数瞬间激增时因资源竞争而导致系统吞吐下降的问题使得GreatSQL的性能表现更稳定。|
### 4.3.3 高兼容特性测试结论
| 序号 | 特性名称 | 遗留问题 | 备注 |
| --- | :--- | :--- | :--- |
| 1 | [数据类型兼容](https://greatsql.cn/docs/8.0.32-25/5-enhance/5-3-easyuse.html#%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E5%85%BC%E5%AE%B9) | 无 | 采用映射方式实现Oracle数据类型兼容。|
| 2 | [SQL语法兼容](https://greatsql.cn/docs/8.0.32-25/5-enhance/5-3-easyuse.html#sql%E8%AF%AD%E6%B3%95%E5%85%BC%E5%AE%B9) | 无 | 兼容大部分Oracle SQL语法。
| 3 | [函数兼容](https://greatsql.cn/docs/8.0.32-25/5-enhance/5-3-easyuse.html#%E5%87%BD%E6%95%B0%E5%85%BC%E5%AE%B9) | 无 | 兼容大部分Oracle函数。|
| 3 | [存储程序兼容](https://greatsql.cn/docs/8.0.32-25/5-enhance/5-3-easyuse.html#%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B-%E5%87%BD%E6%95%B0%E5%85%BC%E5%AE%B9) | 无 | 兼容大部分Oracle存储程序。|
### 4.3.4 高安全特性测试结论
| 序号 | 特性名称 | 遗留问题 | 备注 |
| --- | :--- | :--- | :--- |
| 1 | [mysqldump备份加密](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-4-security-mysqldump-encrypt.html) | 无 | 支持在 mysqldump 进行逻辑备份时产生加密备份文件,并且也支持对加密后的备份文件解密导入。|
| 2 | [Clone 备份加密](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-4-security-clone-encrypt.html) | 无 | 支持在执行 Clone 备份时加密备份文件,以及对加密后的备份文件解密。|
| 3 | [审计](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-4-security-audit.html) | 无 | 支持审计功能,并将审计日志写入数据表中,并且设置审计日志入表规则,以便达到不同的审计需求。|
| 4 | [国密加密](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-4-security-encrypt-with-gmssl.html) | 无 | 支持在通信加密和 InnoDB 表空间加密时采用国密算法。|
| 5 | [数据脱敏](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-4-security-data-masking.html) | 无 | 数据脱敏有助于防止非授权用户访问敏感数据,从而限制敏感数据的暴露。|
| 6 | [记录指定用户的登入信息](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-4-security-last-login.html) | 无 | 可查看上一次成功登录以及上一次成功登录后所有的失败登录信息。|
### 4.3.5 其他特性测试结论
| 序号 | 特性名称 | 遗留问题 | 备注 |
| --- | :--- | :--- | :--- |
| 1 | [Clone 压缩及增量备份](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-5-clone-compressed-and-incrment-backup.html) | 无 | 支持 Clone 在线全量热备和增量备份,以及压缩备份。|
| 2 | [InnoDB Page压缩算法支持Zstd](https://greatsql.cn/docs/8.0.32-27/5-enhance/5-5-innodb-page-compression.html) | 无 | 使得Page压缩率进一步得到提高尤其是当表中有大量重复字符类型数据时。
。|
# 5 附件
测试功能点清单
![greatsql-803227-oe2503-test-result](./greatsql-803227-oe2503-test-result-20250305.png)