From 26c93ee34bc8806bbe6d35ea0da42aac873120e3 Mon Sep 17 00:00:00 2001 From: Ye Jinrong Date: Tue, 11 Mar 2025 09:12:54 +0800 Subject: [PATCH] =?UTF-8?q?Release=20GreatSQL-8.0.32-27.1=201.=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=AB=98=E6=80=A7=E8=83=BD=E5=B9=B6=E8=A1=8C=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=BC=95=E6=93=8ETurbo=202.=20=E5=8D=87=E7=BA=A7Rapid?= =?UTF-8?q?=E5=BC=95=E6=93=8E=E5=86=85=E6=A0=B8=E7=89=88=E6=9C=AC=203.=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96MGR=E5=A4=A7=E4=BA=8B=E5=8A=A1=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9=E4=BC=A0=E8=BE=93=E6=9C=BA=E5=88=B6=204.=20=E5=AE=8C?= =?UTF-8?q?=E5=96=84greatdb=5Fha=20plugin=205.=20InnoDB=20Page=E6=94=AF?= =?UTF-8?q?=E6=8C=81zstd=E5=8E=8B=E7=BC=A9=206.=20=E5=AE=8C=E5=96=84Oracle?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E7=89=B9=E6=80=A7=207.=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=80=A7=208.=20=E4=BF=AE=E5=A4=8D=E4=BA=86?= =?UTF-8?q?=E5=87=A0=E4=B8=AA=E5=8F=AF=E8=83=BD=E5=AF=BC=E8=87=B4crash?= =?UTF-8?q?=E6=88=96=E4=B8=A2=E6=95=B0=E6=8D=AE=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 4000c0875c362a235fd28bcda540eca0de701584) --- README.md | 94 +- add-riscv64-support.patch | 848 +----------------- filter-provides.sh | 6 - filter-requires.sh | 6 - ....32-26.tar.xz => greatsql-8.0.32-27.tar.xz | 4 +- greatsql-802516-mtr-passed.md | 30 - ...sql-803227-oe2503-test-result-20250305.png | Bin 0 -> 204218 bytes greatsql.cnf | 11 - greatsql.spec | 18 +- mysql.init | 248 ----- ...13\350\257\225\346\212\245\345\221\212.md" | 153 ++++ 11 files changed, 227 insertions(+), 1191 deletions(-) delete mode 100755 filter-provides.sh delete mode 100755 filter-requires.sh rename greatsql-8.0.32-26.tar.xz => greatsql-8.0.32-27.tar.xz (32%) delete mode 100644 greatsql-802516-mtr-passed.md create mode 100644 greatsql-803227-oe2503-test-result-20250305.png delete mode 100644 greatsql.cnf delete mode 100644 mysql.init create mode 100644 "openEuler-25.03-GreatSQL\346\265\213\350\257\225\346\212\245\345\221\212.md" diff --git a/README.md b/README.md index 26f71ac..5a1330c 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ GreatSQL 数据库是一款 **开源免费** 数据库,可在普通硬件上满足金融级应用场景,具有 **高可用**、**高性能**、**高兼容**、**高安全** 等特性,可作为 MySQL 或 Percona Server for MySQL 的理想可选替换。 -最新版本:GreatSQL 8.0.32-26。 +最新版本:GreatSQL 8.0.32-27。 ## 下载GreatSQL -- [下载 GreatSQL 最新版本](https://gitee.com/GreatSQL/GreatSQL/releases/GreatSQL-8.0.32-26) +- [下载 GreatSQL 最新版本](https://gitee.com/GreatSQL/GreatSQL/releases/GreatSQL-8.0.32-27) - [下载 GreatSQL 历史版本](https://gitee.com/GreatSQL/GreatSQL/releases/) # GreatSQL核心特性 @@ -31,13 +31,16 @@ GreatSQL 数据库是一款 **开源免费** 数据库,可在普通硬件上 - 优化了 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 引擎、事务无锁化、并行 LOAD DATA、异步删除大表、线程池、非阻塞式 DDL、NUMA 亲和调度优化 等特性,在 TPC-C 测试中相对 MySQL 性能提升超过 30%,在 TPC-H 测试中的性能表现是 MySQL 的十几倍甚至上百倍。 + +相对 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 引擎运行时性能的稳定性。 @@ -68,14 +71,19 @@ GreatSQL 支持逻辑备份加密、CLONE 备份加密、审计、表空间国 ### [其他](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(非必须)。采用类似下面的方法安装 jemalloc 软件包: +运行 GreatSQL 时如果有 jemalloc 支持,则数据库进程的内存分配会更稳定、高效,因此建议安装 jemalloc(非必须)。 -``` +如果是ARM环境下,可以不必安装配置 jemalloc 依赖。 + +以 CentOS 8 x86_64 系统为例,采用类似下面的方法安装 jemalloc 软件包: + +```bash # 先安装 epel 源 $ yum install -y epel-release @@ -85,14 +93,14 @@ $ yum -y install jemalloc jemalloc-devel 也可以把自行安装的动态库so文件路径加到系统配置文件中,例如: -``` +```bash $ cat /etc/ld.so.conf /usr/local/lib64/ ``` 而后执行下面的操作加载libjemalloc库,并确认是否已存在 -``` +```bash $ ldconfig $ ldconfig -p | grep libjemalloc @@ -146,15 +154,14 @@ $ systemctl status mysqld ... ``` -## my.cnf参考 - -RPM方式安装后的GreatSQL默认配置不是太合理,建议参考下面这份my.cnf文档: +就可以正常启动 GreatSQL 服务了。 -- [my.cnf for GreatSQL 8.0.32-26](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/my.cnf-example-greatsql-8.0.32-26) +想要 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 @@ -164,19 +171,22 @@ $ 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-26 +Server version: 8.0.32-27 Copyright (c) 2021-2021 GreatDB Software Co., Ltd Copyright (c) 2009-2021 Percona LLC and/or its affiliates @@ -203,8 +213,8 @@ Query OK, 0 rows affected (0.02 sec) ## 创建新用户、测试库&表,及写入数据 修改完root密码后,应尽快创建普通用户,用于数据库的日常使用,减少超级用户root的使用频率,避免误操作意外删除重要数据。 ``` -#创建一个新用户GreatSQL,只允许从192.168.0.0/16网络连入,密码是 GreatSQL-2024 -mysql> CREATE USER GreatSQL@'192.168.0.0/16' IDENTIFIED BY 'GreatSQL-2024'; +#创建一个新用户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用户授予读写权限 @@ -217,7 +227,7 @@ Query OK, 0 rows affected (0.03 sec) 切换到普通用户GreatSQL登入,创建测试表,写入数据: ``` -$ mysql -h192.168.1.10 -uGreatSQL -p'GreatSQL-2024' +$ mysql -h192.168.1.10 -uGreatSQL -p'GreatSQL-2025' ... # 切换到GreatSQL数据库下 mysql> use GreatSQL; @@ -248,36 +258,13 @@ mysql> SELECT * FROM t1; 戳此查看 [GreatSQL 版本历史](https://greatsql.cn/docs/1-docs-intro/1-2-release-history.html)。 ## QA测试 -GreatSQL 8.0.32-25 已经在 openEuler 24.03 LTS 环境下通过 QA 测试,表明 GreatSQL 与 openEuler 开源操作系统完全兼容,功能齐全,测试完备。 - -相关测试报告详见:[openEuler-24.03-LTS-GreatSQL测试报告](https://gitee.com/openeuler/QA/blob/master/Test_Result/openEuler_24.03_LTS/openEuler-24.03-LTS-GreatSQL%E6%B5%8B%E8%AF%95%E6%8A%A5%E5%91%8A.md)。 +GreatSQL 8.0.32-27 已经在 openEuler-25.03 环境下通过回归测试,表明 GreatSQL 与 openEuler-25.03 完全兼容,功能齐全,测试完备。 -GreatSQL 8.0.25-16 已经在 openEuler 20.03 (LTS-SP2) 环境下通过 MTR 回归测试,表明 GreatSQL 与 openEuler 开源操作系统完全兼容,功能齐全,测试完备。 - -相关MTR测试报告详见:[GreatSQL 8.0.25-16通过MTR回归测试](https://gitee.com/src-openeuler/greatsql/blob/master/greatsql-802516-mtr-passed.md)。 - -## 更多使用文档 ---- -- [GreatSQL MGR FAQ](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/GreatSQL-FAQ.md) -- [在Linux下源码编译安装GreatSQL](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/build-greatsql-with-source.md) -- [在openEuler环境下快速编译GreatSQL RPM包](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/build-greatsql-rpm-under-openeuler.md) -- [利用Ansible安装GreatSQL并构建MGR集群](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/install-greatsql-with-ansible.md) -- [在Docker中部署GreatSQL并构建MGR集群](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/install-greatsql-with-docker.md) -- [利用GreatSQL部署MGR集群](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/using-greatsql-to-build-mgr-and-node-manage.md) -- [MySQL InnoDB Cluster+GreatSQL部署MGR集群](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/mysql-innodb-cluster-with-greatsql.md) -- [利用systemd管理MySQL单机多实例](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/build-multi-instance-with-systemd.md) - -## 专栏文章 -- [深入浅出MGR专栏文章](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/deep-dive-mgr),深入浅出MGR相关知识点、运维管理实操,配合「实战MGR」视频内容食用更佳。 - -## 相关资源 -- [GreatSQL用户手册](https://gitee.com/GreatSQL/GreatSQL-Manual),最新版本GreatSQL用户手册 -- [GreatSQL-Docker](https://gitee.com/GreatSQL/GreatSQL-Docker),在Docker中运行GreatSQL -- [GreatSQL-Ansible](https://gitee.com/GreatSQL/GreatSQL-Ansible),利用Ansible一键安装GreatSQL并完成MGR集群部署 +相关回归测试报告详见:[openEuler-25.03-GreatSQL测试报告](./openEuler-25.03-GreatSQL测试报告.md)。 ## GreatSQL vs MySQL -| **1.主要特性** | GreatSQL 8.0.32-26 | MySQL 8.0.32 | +| **1.主要特性** | GreatSQL 8.0.32-27 | MySQL 8.0.32 | | :--- | :---: | :---: | | 开源 | :heavy_check_mark: | :heavy_check_mark: | |ACID 完整性| :heavy_check_mark: | :heavy_check_mark: | @@ -297,8 +284,9 @@ GreatSQL 8.0.25-16 已经在 openEuler 20.03 (LTS-SP2) 环境下通过 MTR 回 |组复制(MGR)| :heavy_check_mark: | :heavy_check_mark: | |MyRocks 引擎| :heavy_check_mark: | ❌ | |支持龙芯架构| :heavy_check_mark: | ❌ | -| **2. 性能提升扩展** | GreatSQL 8.0.32-26 | MySQL 8.0.32 | -|AP 引擎| :heavy_check_mark: | 仅云上HeatWave | +| **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: | ❌ | @@ -306,6 +294,7 @@ GreatSQL 8.0.25-16 已经在 openEuler 20.03 (LTS-SP2) 环境下通过 MTR 回 |并行 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: | @@ -316,7 +305,7 @@ GreatSQL 8.0.25-16 已经在 openEuler 20.03 (LTS-SP2) 环境下通过 MTR 回 |InnoDB 快速索引创建优化| :heavy_check_mark: | ❌ | |VARCHAR/BLOB/JSON 类型存储单列压缩| :heavy_check_mark: | ❌ | |数据字典中存储单列压缩信息| :heavy_check_mark: | ❌ | -| **3. 面向开发者提升改进** | GreatSQL 8.0.32-26 | MySQL 8.0.32 | +| **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: | @@ -326,7 +315,7 @@ GreatSQL 8.0.25-16 已经在 openEuler 20.03 (LTS-SP2) 环境下通过 MTR 回 |Oracle 兼容-函数| :heavy_check_mark: | ❌ | |Oracle 兼容-SQL语法| :heavy_check_mark: | ❌ | |Oracle 兼容-存储程序| :heavy_check_mark: | ❌ | -| **4. 基础特性提升改进** | GreatSQL 8.0.32-26 | MySQL 8.0.32 | +| **4. 基础特性提升改进** | GreatSQL 8.0.32-27 | MySQL 8.0.32 | |MGR 提升-地理标签| :heavy_check_mark: | ❌ | |MGR 提升-仲裁节点| :heavy_check_mark: | ❌ | |MGR 提升-读写节点绑定VIP| :heavy_check_mark: | ❌ | @@ -337,6 +326,7 @@ GreatSQL 8.0.25-16 已经在 openEuler 20.03 (LTS-SP2) 环境下通过 MTR 回 |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: | ❌ | @@ -354,7 +344,7 @@ GreatSQL 8.0.25-16 已经在 openEuler 20.03 (LTS-SP2) 环境下通过 MTR 回 |临时表信息增强| :heavy_check_mark: | ❌ | |用户统计信息增强| :heavy_check_mark: | ❌ | |Slow log 信息增强| :heavy_check_mark: | ❌ | -| **5.安全性提升** | GreatSQL 8.0.32-26 | MySQL 8.0.32 | +| **5.安全性提升** | GreatSQL 8.0.32-27 | MySQL 8.0.32 | |国密支持| :heavy_check_mark: | ❌ | |备份加密| :heavy_check_mark: | ❌ | |审计| :heavy_check_mark: | 仅企业版 | @@ -372,7 +362,7 @@ GreatSQL 8.0.25-16 已经在 openEuler 20.03 (LTS-SP2) 环境下通过 MTR 回 |二进制日志加密| :heavy_check_mark: | ❌ | |临时文件加密| :heavy_check_mark: | ❌ | |强制加密| :heavy_check_mark: | ❌ | -| **6. 运维便利性提升** | GreatSQL 8.0.32-26 | MySQL 8.0.32 | +| **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: | @@ -385,7 +375,9 @@ GreatSQL 8.0.25-16 已经在 openEuler 20.03 (LTS-SP2) 环境下通过 MTR 回 |杀掉不活跃事务| :heavy_check_mark: | ❌ | |START TRANSACTION WITH CONSISTENT SNAPSHOT 扩展| :heavy_check_mark: | ❌ | -GreatSQL 8.0.32-26 基于 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 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 diff --git a/add-riscv64-support.patch b/add-riscv64-support.patch index aebf683..90b5f12 100644 --- a/add-riscv64-support.patch +++ b/add-riscv64-support.patch @@ -1,271 +1,25 @@ -From 4b4dda1680186c8f66fd011123fe292d42fbdbf1 Mon Sep 17 00:00:00 2001 -From: sammmmy <843683531@qq.com> +From: GreatSQL Date: Mon, 30 Sep 2024 20:32:57 +0800 -Subject: [PATCH 1/2] add riscv64 support +Date: Thu, 06 Mar 2025 14:08:51 +0800 +Subject: [PATCH] add riscv64 support ---- - ...36\345\275\222\346\265\213\350\257\225.md" | 244 +++++++++ - storage/ndb/include/portlib/mt-asm.h | 13 + - ...57\221\345\256\211\350\243\205GreatSQL.md" | 513 ++++++++++++++++++ - 3 files changed, 770 insertions(+) - create mode 100644 "GreatSQL 8.0.32-25\345\234\250openEuler riscv64\344\270\255\345\256\214\346\210\220MTR\345\233\236\345\275\222\346\265\213\350\257\225.md" - create mode 100644 "\345\234\250OpenEuler RISC-V\347\216\257\345\242\203\344\270\213\346\272\220\347\240\201\347\274\226\350\257\221\345\256\211\350\243\205GreatSQL.md" - -diff --git "a/GreatSQL 8.0.32-25\345\234\250openEuler riscv64\344\270\255\345\256\214\346\210\220MTR\345\233\236\345\275\222\346\265\213\350\257\225.md" "b/GreatSQL 8.0.32-25\345\234\250openEuler riscv64\344\270\255\345\256\214\346\210\220MTR\345\233\236\345\275\222\346\265\213\350\257\225.md" -new file mode 100644 -index 00000000000..ba68d2665b5 ---- /dev/null -+++ "b/GreatSQL 8.0.32-25\345\234\250openEuler riscv64\344\270\255\345\256\214\346\210\220MTR\345\233\236\345\275\222\346\265\213\350\257\225.md" -@@ -0,0 +1,244 @@ -+# GreatSQL 8.0.32-25在openEuler riscv64中完成MTR回归测试 -+ -+## 1. 测试目的与思路 -+ -+本测试开展于将GreatSQL 8.0.32-25通过源码编译移植到openEuler riscv64环境之后,旨在测试GreatSQL是否成功移植,基本功能是否正常,能否跑过常规的MTR测例。 -+ -+MTR测例有pass、fail、skipped、disabled四种情况,其中只有fail用例会导致测试终止。测试开展思路是在OpenEuler x86上安装GreatSQL 8.0.32-25作为对比环境,运行多个相同的测试用例集。如果两台机器都因为相同的fail用例而停止,且completed tests数量相同、restarted/reinitialized次数相同、skipped用例数量相同、fail用例的错误日志内容相同,则说明不是riscv架构的原因,删除fail用例继续执行即可。 -+ -+在实际测试过程中,我们发现在x86中的所有fail用例在riscv64也同样fail了,但是riscv64相比x86有少量额外fail和pass的用例,两环境通过用例的总数相近,分别是6904和6875。所以认为GreatSQL在openEuler riscv64环境中成功移植,能跑过常规的MTR测例。 -+ -+## 2. 测试环境与命令 -+ -+### 2.1 准备openEuler x86 24.03环境 -+ -+参考[VMware虚拟机安装openEuler系统](https://blog.csdn.net/m0_74451345/article/details/136060845)。 -+ -+### 2.2 使用RPM安装GreatSQL 8.0.32-25 -+ -+参考[手册](https://greatsql.cn/docs/8.0.32-25/4-install-guide/2-install-with-rpm.html),在[欧拉目录](https://repo.huaweicloud.com/openeuler/openEuler-24.03-LTS/everything/x86_64/Packages/)安装8个greatsql的rpm包,注意一定要安装greatsql-test包,这样才包含mysql-test组件。 -+ -+安装过程中如果出现找不到libssl.so.1.1和libcrypto.so.1.1的问题,可通过软链接解决。如果出现了系统升级相关的报错,无需理会。 -+ -+使用`systemctl status mysqld`启动时,如果因为内存带下进程被杀,把innodb的参数注释或调小即可。注意每次重启服务清空/data/GreatSQL/*。 -+ -+### 2.3 运行MTR -+ -+x86在/usr/share/mysql-test目录,riscv在/usr/local/GreatSQL-8.0.32-25/mysql-test目录,运行`./mtr --record --nowarnings --big-test`: -+ -+- --big-test:执行标记为 `big` 的用例,也就是同时覆盖非 big + big。这是因为标记为 big 的 case 较大、耗时较长,默认不会执行。 -+- --record:是否记录 results 结果,让其自动生成 `.results` 文件。 -+- --nowarnings:忽略 warnings 错误。 -+ -+因为用例数目众多容易超时,建议依次测试每个用例集,修改mtr文件的`@DEFAULT_SUITES`即可。 -+ -+### 2.4 测试信息 -+ -+本节描述被测对象的版本信息和测试的时间及测试轮次,包括依赖的硬件。 -+ -+| 被测软件版本 | 系统版本 | 硬件信息 | 硬件配置信息 | 测试起始时间 | 测试结束时间 | -+| ------------------ | --------------- | -------- | ------------- | ------------ | ------------ | -+| GreatSQL-8.0.32-25 | openEuler 24.03 | x86 | 8核心 32G内存 | 2024-09-11 | 2024-09-30 | -+| | openEuler 23.09 | riscv64 | 8核心 16G内存 | | | -+ -+## 3. 测试结果 -+ -+### 3.1 概述 -+ -+本次对`GreatSQL-8.0.32-25`版本进行回归测试,共执行测试用例9507个。其中x86中通过6904个,riscv64中通过6875个。 -+ -+### 3.2 总览 -+ -+| | x86 pass用例数 | riscv pass用例数 | x86 test文件个数 | riscv64 test文件个数 | riscv额外fail的用例数 | riscv额外fail的用例 | | | | | | | -+| ------------------------------- | -------------- | ---------------- | ---------------- | -------------------- | --------------------- | --------------------------------------------------- | --------------------------------------------------- | ------------------------------------ | --------------------------------- | ------------------------------ | --------------------------------- | ---------------------- | -+| auth_sec | 1184 | 500 | 114 | 113 | 1 | plugin_auth_caching_sha2_password_digest_rounds_max | | | | | | | -+| binlog | | | 171 | 169 | 2 | binlog_reset_master_delete_file_failure | percona_binlog_unsafe_limit | | | | | | -+| binlog_nogtid | | | 60 | 60 | | | | | | | | | -+| collations | | | 32 | 32 | | | | | | | | | -+| connection_control | | | 9 | 9 | | | | | | | | | -+| encryption | | | 10 | 10 | | | | | | | | | -+| funcs_2 | | | 3 | 3 | | | | | | | | | -+| gcol | | | 36 | 36 | | | | | | | | | -+| gis | | | 69 | 69 | | | | | | | | | -+| information_schema | | 152 | 9 | 9 | | | | | | | | | -+| innodb_fts | | | 66 | 66 | | | | | | | | | -+| innodb_gis | | | 41 | 40 | 1 | rtree_compress2 | | | | | | | -+| innodb_undo | | | 39 | 39 | | | | | | | | | -+| innodb_zip | | | 28 | 28 | | | | | | | | | -+| interactive_utilities | | | 3 | 3 | | | | | | | | | -+| json | | | 19 | 19 | | | | | | | | | -+| opt_trace | | | 28 | 28 | | | | | | | | | -+| parts | | 86 | 95 | 90 | 7 | partition_alter1_1_2_innodb | partition_alter1_2_innodb | partition_alter4_innodb | partition_alter2_2_2_innodb | part_supported_sql_func_innodb | partition_alter4_innodb | partition_basic_innodb | -+| query_rewrite_plugins | | 38 | 38 | 38 | | | | | | | | | -+| secondary_engine | | 36 | 19 | 19 | | | | | | | | | -+| service_status_var_registration | | | 5 | 5 | | | | | | | | | -+| service_sys_var_registration | | | 9 | 9 | | | | | | | | | -+| service_udf_registration | | | 9 | 9 | | | | | | | | | -+| test_service_sql_api | | 94 | 25 | 25 | | | | | | | | | -+| test_services | | | 15 | 15 | | | | | | | | | -+| component_keyring_file | | | 60 | 60 | | | | | | | | | -+| audit_log | | | 22 | 22 | | | | | | | | | -+| binlog_57_decryption | | | 2 | 2 | | | | | | | | | -+| percona-pam-for-mysql | | 16 | 2 | 0(没有该文件夹) | | | | | | | | | -+| data_masking | | | 14 | 14 | | | | | | | | | -+| procfs | | | 1 | 1 | | | | | | | | | -+| rocksdb_sys_vars | | | 170 | 170 | | | | | | | | | -+| rocksdb_stress | | | 3 | 3 | | | | | | | | | -+| rpl_encryption | | 35 | 3 | 3 | | | | | | | | | -+| tokudb_add_index | | | 29 | 29 | | | | | | | | | -+| tokudb_perfschema | | | 3 | 3 | | | | | | | | | -+| audit_null | | | 14 | 14 | | | | | | | | | -+| engines/iuds | | | 16 | 16 | | | | | | | | | -+| funcs_1 | | 108 | 121 | 121 | | | | | | | | | -+| jp | | 112 | 111 | 111 | | | | | | | | | -+| stress | | 3 | 5 | 2 | 3 | ddl_innodb | ddl_memory | ddl_myisam | | | | | -+| group_replication | 473 | 472 | 831 | 830 | 1 | gr_ssl_mode_tls_source_incompatible_certificates | | | | | | | -+| federated | 300 | 9 | 14 | 14 | | | | | | | | | -+| engines/funcs | | 289 | 291 | 288 | 3 | ta_add_column_first | ta_add_column | ta_add_column_middle | | | | | -+| clone | 88 | 88 | 79 | 79 | | | | | | | | | -+| binlog_gtid | | | 74 | 74 | | | | | | | | | -+| tokudb_parts | | | 54 | 54 | | | | | | | | | -+| tokudb_bugs | | | 125 | 125 | | | | | | | | | -+| tokudb_alter_table | | | 69 | 69 | | | | | | | | | -+| tokudb | 1 | 1 | 276 | 276 | | | | | | | | | -+| tokudb_rpl | | | 70 | 70 | | | | | | | | | -+| sysschema | 840 | 88 | 90 | 90 | | | | | | | | | -+| sys_vars | | 751 | 841 | 839 | 2 | myisam_data_pointer_size_func | persisted_sysvars_with_aliases | | | | | | -+| rpl_nogtid | 421 | 235 | 187 | 181 | 6 | rpl_mixed_mixing_engines | rpl_stm_mixing_engines | rpl_non_direct_mixed_mixing_engines | rpl_non_direct_row_mixing_engines | rpl_row_mixing_engines | rpl_non_direct_stm_mixing_engines | | -+| rpl_gtid | | 180 | 227 | 226 | 1 | mysqldump_bug33630199 | | | | | | | -+| rpl | 930 | 927 | 681 | 678 | 3 | rpl_semi_sync_alias | rpl_shutdown_with_optimize_for_static_plugin_config | rpl_deprecations | | | | | -+| rocksdb_rpl | 1 | 1 | 52 | 52 | | | | | | | | | -+| rocksdb | 1 | | 330 | 330 | | | | | | | | | -+| perfschema | 613 | 613 | 749 | 749 | | | | | | | | | -+| parallel_query | | | 42 | 42 | | | | | | | | | -+| main | 1319 | 1314 | 1649 | 1644 | 5 | percona_encryption_udf_dh_4096_ext | percona_encryption_udf_dsa_9984_ext | percona_encryption_udf_rsa_16384_ext | ds_mrr-big | greedy_optimizer | | | -+| innodb | 433 | 428 | 875 | 868 | 6 | analyze_table | bug54330 | histogram | innochecksum_1 | end_range_check | innodb_autoextend_table_ddl | | -+| x | 300 | 299 | 322 | 322 | | | | | | | | | -+| 总通过数 | 6904 | 6875 | | | | | | | | | | | -+ -+### 3.3 x86中fail的用例 -+ -+共失败51个用例。 -+ -+| 用例集 | 错误用例 | 数量 | -+| ---------------------------- | ------------------------------------------------------- | ---- | -+| binlog_gtid | bug93631 | 1 | -+| clone | remote_basic_replace | 3 | -+| | remote_dml_replace | | -+| | remote_dml_upgrade | | -+| group_replication | gr_clone_integration_error_fallback | 18 | -+| | gr_clone_integration_basics_with_ssl_mysql | | -+| | gr_clone_integration_clone_operations_on_running_member | | -+| | gr_clone_integration_different_recovery_user | | -+| | gr_clone_integration_no_privileges | | -+| | gr_clone_integration_purged_donor | | -+| | gr_clone_with_consistency_after | | -+| | gr_recovery_endpoints_iterate_list_clone | | -+| | gr_recovery_endpoints_no_fallback | | -+| | gr_clone_applier_reset | | -+| | gr_clone_integration_recovery_priv_user_preservation | | -+| | gr_recovery_endpoints_ipv6_ipv4 | | -+| | gr_start_gr_credential_options_clone | | -+| | gr_autorejoin_with_clone_while_recovery_locked | | -+| | gr_clone_integration_basics | | -+| | gr_clone_integration_clone_on_server_start | | -+| | gr_recovery_endpoints_multiple_valid | | -+| | gr_view_changes | | -+| x | notices_gr_single_primary | 3 | -+| | connection_unixsocket_invalid | | -+| | resource_groups | | -+| audit_null | audit_plugin_2 | 3 | -+| | authentication_abort | | -+| | authentication_abort_ps | | -+| binlog_nogtid | binlog_persist_only_variables | 2 | -+| | binlog_persist_variables | | -+| service_sys_var_registration | sys_var_service_errors | 1 | -+| test_services | test_host_application_signal_plugin | 1 | -+| component_keyring_file | migration | 1 | -+| rpl | rpl_flush_logs | 4 | -+| | percona_bug1008278 | | -+| | rpl_cloned_slave_relay_log_info | | -+| | rpl_slave_start_after_clone | | -+| rpl_gtid | rpl_pump | 2 | -+| | rpl_gtid_only_start_replica_after_clone | | -+| rpl_nogtid | rpl_binlog_sql_mode | 2 | -+| | rpl_assign_gtids_to_anonymous_transactions_clone | | -+| sys_vars | lc_time_names_basic | 2 | -+| | log_error_services_basic | | -+| rocksdb | show_table_status | 3 | -+| | rocksdb_icp | | -+| | rocksdb_icp_rev | | -+| main | admin_interface | 4 | -+| | percona_encryption_udf_dh_4096 | | -+| | multiaddress_bind | | -+| | parser-big-64bit | | -+| innodb | innodb_bug14704286 | 1 | -+ -+### 3.4 riscv64额外fail的用例 -+ -+共失败41个用例。 -+ -+| 用例集 | 错误用例 | 数量 | -+| ----------------- | --------------------------------------------------- | ---- | -+| binlog | binlog_reset_master_delete_file_failure | 2 | -+| | percona_binlog_unsafe_limit | | -+| auth_sec | plugin_auth_caching_sha2_password_digest_rounds_max | 1 | -+| stress | ddl_myisam | 1 | -+| innodb_gis | rtree_compress2 | 1 | -+| parts | partition_alter1_1_2_innodb | 7 | -+| | partition_alter1_2_innodb | | -+| | partition_alter4_innodb | | -+| | partition_alter2_2_2_innodb | | -+| | part_supported_sql_func_innodb | | -+| | partition_alter4_innodb | | -+| | partition_basic_innodb | | -+| stress | ddl_innodb | 2 | -+| | ddl_memory | | -+| group_replication | gr_ssl_mode_tls_source_incompatible_certificates | 1 | -+| engines.funcs | ta_add_column_first | 3 | -+| | ta_add_column | | -+| | ta_add_column_middle | | -+| sys_vars | myisam_data_pointer_size_func | 2 | -+| | persisted_sysvars_with_aliases | | -+| rpl_gtid | mysqldump_bug33630199 | 1 | -+| rpl_nogtid | rpl_mixed_mixing_engines | 6 | -+| | rpl_stm_mixing_engines | | -+| | rpl_non_direct_mixed_mixing_engines | | -+| | rpl_non_direct_row_mixing_engines | | -+| | rpl_row_mixing_engines | | -+| | rpl_non_direct_stm_mixing_engines | | -+| rpl | rpl_semi_sync_alias | 3 | -+| | rpl_shutdown_with_optimize_for_static_plugin_config | | -+| | rpl_deprecations | | -+| innodb | analyze_table | 6 | -+| | bug54330 | | -+| | histogram | | -+| | innochecksum_1 | | -+| | end_range_check | | -+| | innodb_autoextend_table_ddl | | -+| main | percona_encryption_udf_dh_4096_ext | 5 | -+| | percona_encryption_udf_dsa_9984_ext | | -+| | percona_encryption_udf_rsa_16384_ext | | -+| | ds_mrr-big | | -+| | greedy_optimizer | | -+ -+### 3.5 分析 -+ -+观察实验结果,我们发现一个test文件一般对应一个测试用例,但也可能一个test文件包含多个测试用例,比如rpl中通过用例数大于文件数;此外x86和riscv64通过用例的差值并不等于riscv64中额外fail的用例,这说明对于相同的用例,可能在一个环境中skip/disabled但没有fail,在另一个环境中pass了。 -+ -+fail用例的出错原因大多因为配置不完整,本测试基于单机器,没有配置好master/slave主从节点,但部分测试与主从复制有关,有对应的master/slave.opt文件;此外还包含本身预期失败的用例,目的是验证测试框架对异常测例的识别能力。对于riscv64额外报错的用例,我们尚在排查,报错如Cannot connect to mysql group replication instance、Can't connect to local MySQL server through socket,大概率和配置文件有关。 -+ -+### 3.6 测试结论 -+ -+本次MTR测试共执行用例9507个。其中x86中通过6904个,riscv64中通过了6875个,是x86的99.5%。虽然暂时有额外的出错用例未排查出出错原因,但比例很小,不影响大部分基本功能的使用,所以认为通过。 -+ -+## 4. 参考 -+ -+[GreatSQL 8.0.25-16通过MTR回归测试](https://gitee.com/src-openeuler/greatsql/blob/master/greatsql-802516-mtr-passed.md) -+ -+[MySQL Test Run 测试框架介绍](https://mp.weixin.qq.com/s/JA5hfaZuRMPFa7LmLUvfbQ) -+ -+[Introduction to the MySQL Test Framework](https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_INTRODUCTION.html) -+ -+ -+ +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 418b8d9c711..f64ea6fab3a 100644 +index a63fae161e4..cc7ea267028 100644 --- a/storage/ndb/include/portlib/mt-asm.h +++ b/storage/ndb/include/portlib/mt-asm.h -@@ -83,6 +83,19 @@ cpu_pause() +@@ -84,6 +84,19 @@ cpu_pause() } #endif @@ -280,574 +34,8 @@ index 418b8d9c711..f64ea6fab3a 100644 + +#define mb() RISCV_FENCE(iorw,iorw) +#define rmb() RISCV_FENCE(ir,ir) -+#define wmb() RISCV_FENCE(ow,ow) ++#define wmb() RISCV_FENCE(ow,ow) + #elif defined(__sparc__) #define NDB_HAVE_MB -diff --git "a/\345\234\250OpenEuler RISC-V\347\216\257\345\242\203\344\270\213\346\272\220\347\240\201\347\274\226\350\257\221\345\256\211\350\243\205GreatSQL.md" "b/\345\234\250OpenEuler RISC-V\347\216\257\345\242\203\344\270\213\346\272\220\347\240\201\347\274\226\350\257\221\345\256\211\350\243\205GreatSQL.md" -new file mode 100644 -index 00000000000..3d4ce63d0c9 ---- /dev/null -+++ "b/\345\234\250OpenEuler RISC-V\347\216\257\345\242\203\344\270\213\346\272\220\347\240\201\347\274\226\350\257\221\345\256\211\350\243\205GreatSQL.md" -@@ -0,0 +1,513 @@ -+# 在OpenEuler RISC-V环境下源码编译安装GreatSQL -+ -+本文介绍如何在OpenEuler RISC-V环境下源码编译安装GreatSQL,并通过常规的MTR测试用例。 -+ -+## 1. **准备**openEuler RISC-V 23.09 环境 -+ -+根据[安装指导](https://docs.openeuler.org/zh/docs/23.09/docs/Installation/riscv_qemu.html),使用Qemu安装openEuler RISC-V 23.09(含全量软件源)。运行环境如下: -+ -+```shell -+$ lscpu -+Architecture: riscv64 -+ Byte Order: Little Endian -+CPU(s): 8 -+ On-line CPU(s) list:0-7 -+NUMA: -+ NUMA node(s): 1 -+ NUMA node0 CPU(s):0-7 -+$ cat /etc/os-release -+NAME="openEuler" -+VERSION="23.09" -+ID="openEuler" -+VERSION_ID="23.09" -+PRETTY_NAME="openEuler 23.09" -+ANSI_COLOR="0;31" -+``` -+ -+## 2. 编译前准备工作 -+ -+提前安装必要的一些基础包 -+ -+```shell -+$ dnf makecache -+$ dnf install -y automake bison bison-devel boost-devel bzip2 bzip2-devel clang cmake cmake3 diffutils expat-devel file flex gcc gcc-c++ git jemalloc jemalloc-devel graphviz libaio-devel libarchive libcurl-devel libevent-devel libffi-devel libicu-devel libssh libtirpc libtirpc-devel libtool libxml2-devel libzstd libzstd-devel lz4-devel lz4-static make ncurses-devel ncurses-libs net-tools numactl numactl-devel numactl-libs openldap-clients openldap-devel openssl openssl-devel pam pam-devel perl perl-Env perl-JSON perl-Memoize perl-Time-HiRes pkg-config psmisc re2-devel readline-devel snappy-devel tar time unzip vim wget zlib-devel -+``` -+ -+然后进入/opt文件夹,使用curl下载boost/patchelf//rpcsvc-proto三个依赖包和greatesql-8.0.32-25源码包,并解压到当前文件夹: -+ -+```shell -+$ curl -o boost_1_77_0.tar.gz -L https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.gz -+$ tar zxvf boost_1_77_0.tar.gz -+$ curl -o patchelf-0.14.5.tar.gz -L https://github.com/NixOS/patchelf/releases/download/0.14.5/patchelf-0.14.5.tar.gz -+$ tar zxvf patchelf-0.14.5.tar.gz && cd patchelf-0.14.5 && ./bootstrap.sh && ./configure && make && make install -+$ curl -o rpcsvc-proto-1.4.tar.gz -L https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz -+$ tar zxvf rpcsvc-proto-1.4.tar.gz && cd rpcsvc-proto-1.4/ && ./configure && make && make install -+$ curl -o greatsql-8.0.32-25.tar.xz -L https://product.greatdb.com/GreatSQL-8.0.32-25/greatsql-8.0.32-25.tar.xz -+$ tar Jcvf greatsql-8.0.32-25.tar.xz -+``` -+ -+确定glibc和gcc版本: -+ -+```shell -+$ gcc --version -+gcc (GCC) 12.3.1 (openEuler 12.3.1-16.oe2309) -+Copyright (C) 2022 Free Software Foundation, Inc. -+This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -+$ ldd --version -+ldd (GNU libc) 2.38 -+Copyright (C) 2022 Free Software Foundation, Inc. -+This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -+``` -+ -+## 3. 编译GreatSQL -+ -+在开始编译前,需要修改一处GreatSQL源码,使用FENCE指令添加[RISCV的内存屏障](https://blog.csdn.net/u011011827/article/details/124563277#RISCVCPU_135): -+ -+```c -+$ vim /opt/greatsql-8.0.32-25/storage/ndb/include/portlib/mt-asm.h -+#if defined(HAVE_PAUSE_INSTRUCTION) // 第68行 -+... -+#else // 第76行 -+... -+#endif // 第84行 -+// 添加以下代码 -+#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__) // 第99行 -+``` -+ -+随后源码编译二进制文件包: -+ -+```shell -+$ cd /opt/greatsql-8.0.32-25 && \ -+rm -fr bld && \ -+mkdir bld && \ -+cd bld && \ -+cmake .. -DBOOST_INCLUDE_DIR=/opt/boost_1_77_0 \ -+-DLOCAL_BOOST_DIR=/opt/boost_1_77_0 \ -+-DCMAKE_INSTALL_PREFIX=/usr/local/GreatSQL-8.0.32-25 \ -+-DWITH_ZLIB=bundled \ -+-DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_CONFIG=mysql_release \ -+-DWITH_TOKUDB=OFF \ -+-DWITH_ROCKSDB=OFF \ -+-DCOMPILATION_COMMENT="GreatSQL (GPL)" \ -+-DMAJOR_VERSION=8 \ -+-DMINOR_VERSION=0 \ -+-DPATCH_VERSION=32 \ -+-DWITH_UNIT_TESTS=OFF \ -+-DWITH_NDBCLUSTER=OFF \ -+-DWITH_SSL=system \ -+-DWITH_SYSTEMD=ON \ -+-DWITH_AUTHENTICATION_LDAP=OFF \ -+&& make -j16 VERBOSE=1 && make install -+``` -+ -+参数 *-j16* 设定为并行编译的逻辑CPU数量,可以指定为比逻辑CPU总数少一点,不要把所有CPU都跑满。如果并行产生难以解决的报错,那就使用`make`串行编译。 -+ -+编译完成后,就会将二进制文件安装到 */usr/local/GreatSQL-8.0.32-25* 目录下。 -+ -+因为openEuler RISC-V安装时空间默认大小为20G,在`make install`时会有内存不足的问题,注意需要进行虚拟机扩容。 -+ -+## 4. 安装GreatSQL -+ -+### 4.1 配置GreatSQL systemd服务 -+ -+```ini -+$ vim /lib/systemd/system/greatsql.service -+ -+[Unit] -+Description=GreatSQL Server -+Documentation=man:mysqld(8) -+Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html -+After=network.target -+After=syslog.target -+[Install] -+WantedBy=multi-user.target -+[Service] -+ -+# some limits -+# file size -+LimitFSIZE=infinity -+# cpu time -+LimitCPU=infinity -+# virtual memory size -+LimitAS=infinity -+# open files -+LimitNOFILE=65535 -+# processes/threads -+LimitNPROC=65535 -+# locked memory -+LimitMEMLOCK=infinity -+# total threads (user+kernel) -+TasksMax=infinity -+TasksAccounting=false -+ -+User=mysql -+Group=mysql -+#如果是GreatSQL 5.7版本,此处需要改成simple模式,否则可能服务启用异常 -+#如果是GreatSQL 8.0版本则可以使用notify模式 -+#Type=simple -+Type=notify -+TimeoutSec=0 -+PermissionsStartOnly=true -+ExecStartPre=/usr/local/GreatSQL-8.0.32/bin/mysqld_pre_systemd -+ExecStart=/usr/local/GreatSQL-8.0.32-25/bin/mysqld $MYSQLD_OPTS -+EnvironmentFile=-/etc/sysconfig/mysql -+LimitNOFILE = 10000 -+Restart=on-failure -+RestartPreventExitStatus=1 -+Environment=MYSQLD_PARENT_PID=1 -+PrivateTmp=false -+``` -+ -+务必确认文件中目录及文件名是否正确。 -+ -+执行命令`systemctl daemon-reload`重载systemd,加入 `greatsql` 服务,如果没问题就不会报错。 -+ -+### 4.2 编辑GreatSQL全局配置文件 `/etc/my.cnf` -+ -+参考my.cnf模板[my.cnf for GreatSQL 8.0.32-25](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/my.cnf-example-greatsql-8.0.32-25),并根据实际情况做些适当调整。本次使用的服务器内存有限,所以修改了*basedir/datadir/innodb_buffer_pool_size* 等几个选项,不然启动GreatSQL会因闪退等问题而失败。 -+ -+```ini -+[client] -+socket = /data/GreatSQL/mysql.sock -+[mysql] -+loose-skip-binary-as-hex -+prompt = "(\\D)[\\u@GreatSQL][\\d]>" -+no-auto-rehash -+[mysqld] -+user = mysql -+port = 3306 -+server_id = 3306 -+basedir = /usr/local/GreatSQL-8.0.32-25 -+datadir = /data/GreatSQL -+socket = /data/GreatSQL/mysql.sock -+pid-file = mysql.pid -+character-set-server = UTF8MB4 -+skip_name_resolve = 1 -+#若你的MySQL数据库主要运行在境外,请务必根据实际情况调整本参数 -+default_time_zone = "+8:00" -+bind_address = "0.0.0.0" -+ -+#performance setttings -+lock_wait_timeout = 3600 -+open_files_limit = 65535 -+back_log = 1024 -+max_connections = 1024 -+max_connect_errors = 1000000 -+table_open_cache = 2048 -+table_definition_cache = 2048 -+sort_buffer_size = 4M -+join_buffer_size = 4M -+read_buffer_size = 8M -+read_rnd_buffer_size = 4M -+bulk_insert_buffer_size = 64M -+thread_cache_size = 768 -+interactive_timeout = 600 -+wait_timeout = 600 -+tmp_table_size = 96M -+max_heap_table_size = 96M -+max_allowed_packet = 64M -+net_buffer_shrink_interval = 180 -+#GIPK -+loose-sql_generate_invisible_primary_key = ON -+ -+#log settings -+log_timestamps = SYSTEM -+log_error = /data/GreatSQL/error.log -+log_error_verbosity = 3 -+slow_query_log = 1 -+log_slow_extra = 1 -+slow_query_log_file = /data/GreatSQL/slow.log -+#设置slow log文件大小1G及总文件数10 -+max_slowlog_size = 1073741824 -+max_slowlog_files = 10 -+long_query_time = 0.01 -+log_queries_not_using_indexes = 1 -+log_throttle_queries_not_using_indexes = 60 -+min_examined_row_limit = 100 -+log_slow_admin_statements = 1 -+log_slow_slave_statements = 1 -+log_slow_verbosity = FULL -+log_bin = /data/GreatSQL/binlog -+binlog_format = ROW -+sync_binlog = 1 -+binlog_cache_size = 4M -+max_binlog_cache_size = 6G -+max_binlog_size = 1G -+#控制binlog总大小,避免磁盘空间被撑爆 -+binlog_space_limit = 100G #这里改小了 -+binlog_rows_query_log_events = 1 -+binlog_expire_logs_seconds = 604800 -+binlog_checksum = CRC32 -+gtid_mode = ON -+enforce_gtid_consistency = TRUE -+ -+#myisam settings -+key_buffer_size = 16K #这里改小了 -+myisam_sort_buffer_size = 128M -+ -+#replication settings -+relay_log_recovery = 1 -+slave_parallel_type = LOGICAL_CLOCK -+#并行复制线程数可以设置为逻辑CPU数量的2倍 -+slave_parallel_workers = 64 -+binlog_transaction_dependency_tracking = WRITESET -+slave_preserve_commit_order = 1 -+slave_checkpoint_period = 2 -+ -+#启用InnoDB并行查询优化功能 -+loose-force_parallel_execute = OFF -+#设置每个SQL语句的并行查询最大并发度 -+loose-parallel_default_dop = 8 -+#设置系统中总的并行查询线程数,可以和最大逻辑CPU数量一样 -+loose-parallel_max_threads = 64 -+#并行执行时leader线程和worker线程使用的总内存大小上限,可以设置物理内存的5-10%左右 -+loose-parallel_memory_limit = 2G #这里改小了 -+ -+#parallel load data -+loose-gdb_parallel_load_chunk_size = 4M -+ -+#rapid engine -+loose-rapid_memory_limit = 12G -+loose-rapid_worker_threads = 32 -+loose-rapid_hash_table_memory_limit = 30 -+loose-secondary_engine_parallel_load_workers = 16 -+ -+#mgr settings -+loose-plugin_load_add = 'mysql_clone.so' -+loose-plugin_load_add = 'group_replication.so' -+loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1" -+#MGR本地节点IP:PORT,请自行替换 -+loose-group_replication_local_address = "172.16.16.10:33061" -+#MGR集群所有节点IP:PORT,请自行替换 -+loose-group_replication_group_seeds = '172.16.16.10:33061,72.16.16.12:33061,72.16.16.12:33061' -+loose-group_replication_start_on_boot = ON -+loose-group_replication_bootstrap_group = OFF -+loose-group_replication_exit_state_action = READ_ONLY -+loose-group_replication_flow_control_mode = "DISABLED" -+loose-group_replication_single_primary_mode = ON -+loose-group_replication_enforce_update_everywhere_checks=0 -+loose-group_replication_majority_after_mode = ON -+loose-group_replication_communication_max_message_size = 10M -+loose-group_replication_arbitrator = 0 -+loose-group_replication_single_primary_fast_mode = 1 -+loose-group_replication_request_time_threshold = 100 -+loose-group_replication_primary_election_mode = GTID_FIRST -+loose-group_replication_unreachable_majority_timeout = 0 -+loose-group_replication_member_expel_timeout = 5 -+loose-group_replication_autorejoin_tries = 288 -+loose-group_replication_recovery_get_public_key = ON -+ -+#mgr vip -+loose-plugin_load_add = 'greatdb_ha.so' -+loose-greatdb_ha_enable_mgr_vip = 0 -+loose-greatdb_ha_mgr_vip_nic = 'eth0' -+loose-greatdb_ha_mgr_vip_ip = '172.16.0.252' -+loose-greatdb_ha_mgr_vip_mask = '255.255.255.0' -+loose-greatdb_ha_port = 33062 -+loose-greatdb_ha_mgr_read_vip_ips = "172.16.0.251" -+#loose-greatdb_ha_mgr_read_vip_ips = "172.16.0.251,172.16.0.252" -+loose-greatdb_ha_mgr_read_vip_floating_type = "TO_ANOTHER_SECONDARY" -+loose-greatdb_ha_send_arp_packge_times = 5 -+report_host = 172.16.0.10 -+report_port = 3306 -+ -+#MGR切主后是否断开旧Priamry节点上的所有应用连接 -+loose-greatdb_ha_mgr_exit_primary_kill_connection_mode = 0 -+ -+#innodb settings -+innodb_buffer_pool_size = 56M #这里改小了 -+innodb_buffer_pool_instances = 8 -+innodb_data_file_path = ibdata1:12M:autoextend -+innodb_flush_log_at_trx_commit = 1 -+#innodb_log_buffer_size = 32M -+#innodb_log_file_size = 2G -+innodb_log_files_in_group = 3 -+#innodb_redo_log_capacity = 6G -+innodb_doublewrite_files = 2 -+#innodb_max_undo_log_size = 4G -+# 根据您的服务器IOPS能力适当调整 -+# 一般配普通SSD盘的话,可以调整到 10000 - 20000 -+# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000 -+innodb_io_capacity = 4000 -+innodb_io_capacity_max = 8000 -+innodb_open_files = 65534 -+#提醒:当需要用CLONE加密特性时,不要选用O_DIRECT模式,否则会比较慢 -+innodb_flush_method = O_DIRECT -+innodb_lru_scan_depth = 4000 -+innodb_lock_wait_timeout = 10 -+innodb_rollback_on_timeout = 1 -+innodb_print_all_deadlocks = 1 -+#innodb_online_alter_log_max_size = 4G -+innodb_print_ddl_logs = 1 -+innodb_status_file = 1 -+innodb_status_output = 0 -+innodb_status_output_locks = 1 -+innodb_sort_buffer_size = 64M -+innodb_adaptive_hash_index = 0 -+#开启NUMA支持 -+innodb_numa_interleave = ON -+innodb_spin_wait_delay = 20 -+innodb_print_lock_wait_timeout_info = 1 -+#自动杀掉超过5分钟不活跃事务,避免行锁被长时间持有 -+kill_idle_transaction = 300 -+#异步清理大表 -+innodb_data_file_async_purge = ON -+ -+#innodb monitor settings -+#innodb_monitor_enable = "module_innodb,module_server,module_dml,module_ddl,module_trx,module_os,module_purge,module_log,module_lock,module_buffer,module_index,module_ibuf_system,module_buffer_page,module_adaptive_hash" -+ -+#pfs settings -+performance_schema = 1 -+#performance_schema_instrument = '%memory%=on' -+performance_schema_instrument = '%lock%=on' -+``` -+ -+### 4.3 新建mysql用户 -+ -+```shell -+$ /sbin/groupadd mysql -+$ /sbin/useradd -g mysql mysql -d /dev/null -s /sbin/nologin -+``` -+ -+### 4.4 新建datadir -+ -+新建数据库主目录,并修改权限模式及属主: -+ -+```shell -+$ mkdir -p /data/GreatSQL -+$ chown -R mysql:mysql /data/GreatSQL -+$ chmod -R 700 /data/GreatSQL -+``` -+ -+## 5. 启动GreatSQL -+ -+执行启动命令:`systemctl start greatsql` -+ -+如果有报错,可用systemctl status greatsql 或journalctl 查看服务有关信息进行排错;如果有文件找不到的情况,可以手动加符号链接解决;修改后使用`systemctl restart greatsql`命令重启服务,注意datadir(如/data/GreatSQL)要清空。 -+ -+检查服务是否已启动,以及进程状态,正常启动的输出如下: -+ -+```shell -+$ systemctl status greatsql -+● greatsql.service - GreatSQL Server -+ Loaded: loaded (/usr/lib/systemd/system/greatsql.service; disabled; vendor preset: disabled) -+ Active: active (running) since Wed 2024-08-13 07:58:14 CST; 9s ago -+ Docs: man:mysqld(8) -+ http://dev.mysql.com/doc/refman/en/using-systemd.html -+ Process: 21411 ExecStartPre=/usr/local/GreatSQL-8.0.32-25/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) -+ Main PID: 21519 (mysqld) -+ Memory: 616.6M -+ CGroup: /system.slice/greatsql.service -+ └─21519 /usr/local/GreatSQL-8.0.32-25/bin/mysqld -+ -+Aug 13 07:56:56 openeuler-riscv64 systemd[1]: Starting GreatSQL Server... -+Aug 13 07:58:14 openeuler-riscv64 systemd[1]: Started GreatSQL Server. -+``` -+ -+## 6. 登入GreatSQL与基本使用 -+ -+首次登入GreatSQL前,需要先找到初始化时随机生成的root密码: -+ -+```shell -+$ grep root /data/GreatSQL/error.log -+[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: hl3XhIux8I>; -+``` -+ -+其中的 **hl3XhIux8I>;** 就是初始化时随机生成的密码,在登入GreatSQL时输入该密码: -+ -+```shell -+$ mysql -uroot -p'hl3XhIux8I>;' -+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 12 -+Server version: 8.0.32-25 -+ -+Copyright (c) 2021-2023 GreatDB Software Co., Ltd -+Copyright (c) 2009-2023 Percona LLC and/or its affiliates -+Copyright (c) 2000, 2023, 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. -+ -+[root@GreatSQL][(none)]>\s -+ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. -+mysql> -+``` -+ -+首次登入立刻提醒该密码已过期,需要修改,执行类似下面的命令修改即可: -+ -+```shell -+[root@GreatSQL][(none)]>ALTER USER USER() IDENTIFIED BY 'GreatSQL-8032~%'; -+Query OK, 0 rows affected (0.21 sec) -+``` -+ -+之后就可以用这个新密码再次登入GreatSQL了。 -+ -+修改完root密码后,应尽快创建普通用户,用于数据库的日常使用,减少超级用户root的使用频率,避免误操作意外删除重要数据。 -+ -+```shell -+#创建一个新用户GreatSQL,只允许从192.168.0.0/16网络连入,密码是 GreatSQL-2022 -+[root@GreatSQL][(none)]>CREATE USER GreatSQL@'192.168.0.0/16' IDENTIFIED BY 'GreatSQL-2022'; -+Query OK, 0 rows affected (0.39 sec) -+ -+#创建一个新的用户库,并对GreatSQL用户授予读写权限 -+[root@GreatSQL][(none)]>CREATE DATABASE GreatSQL; -+Query OK, 1 row affected (0.15 sec) -+ -+[root@GreatSQL][(none)]>GRANT ALL ON GreatSQL.* TO GreatSQL@'192.168.0.0/16'; -+Query OK, 0 rows affected (0.07 sec) -+``` -+ -+切换到普通用户GreatSQL登入,创建测试表,写入数据: -+ -+```shell -+$ mysql -h192.168.1.10 -uGreatSQL -p'GreatSQL-2022' -+... -+# 切换到GreatSQL数据库下 -+[root@GreatSQL][(none)]>use GreatSQL; -+Database changed -+ -+# 创建新表 -+[root@GreatSQL][(GreatSQL)]>CREATE TABLE t1(id INT PRIMARY KEY); -+Query OK, 0 rows affected (0.68 sec) -+ -+# 写入测试数据 -+[root@GreatSQL][(GreatSQL)]>INSERT INTO t1 SELECT RAND()*1024; -+Query OK, 1 row affected (0.19 sec) -+Records: 1 Duplicates: 0 Warnings: 0 -+ -+# 查询数据 -+[root@GreatSQL][(GreatSQL)]>SELECT * FROM t1; -++-----+ -+| id | -++-----+ -+| 203 | -++-----+ -+1 row in set (0.01 sec) -+``` -+ -+成功。 -+ -+## 7. 参考文件 -+ -+1. [欧拉openEuler系统中使用二进制包安装GreatSQL](https://greatsql.cn/docs/8.0.32-25/4-install-guide/3-3-openeuler-install.html) -+2. [二进制包安装](https://greatsql.cn/docs/8.0.32-25/3-quick-start/3-2-quick-start-with-tarball.html) -+3. [在麒麟OS+龙芯环境下源码编译安装GreatSQL](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/build-greatsql-with-source-under-kylin-and-loongson.md#1) -+ -+4. [openEuler、龙蜥Anolis、统信UOS系统下编译GreatSQL二进制包](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/build-greatsql-under-openeuler-anolis-uos.md) -\ No newline at end of file --- -Gitee - - -From 0b357fee5332e690b2084a99ea307e3f16c5dcbb Mon Sep 17 00:00:00 2001 -From: Sammmmy <843683531@qq.com> -Date: Mon, 30 Sep 2024 12:52:35 +0000 -Subject: [PATCH 2/2] =?UTF-8?q?update=20storage/ndb/include/portlib/mt-asm?= - =?UTF-8?q?.h.=20=E4=BF=AE=E6=94=B9=E7=BC=A9=E8=BF=9B?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Sammmmy <843683531@qq.com> ---- - storage/ndb/include/portlib/mt-asm.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/storage/ndb/include/portlib/mt-asm.h b/storage/ndb/include/portlib/mt-asm.h -index f64ea6fab3a..6697188eaf5 100644 ---- a/storage/ndb/include/portlib/mt-asm.h -+++ b/storage/ndb/include/portlib/mt-asm.h -@@ -94,7 +94,7 @@ cpu_pause() - - #define mb() RISCV_FENCE(iorw,iorw) - #define rmb() RISCV_FENCE(ir,ir) --#define wmb() RISCV_FENCE(ow,ow) -+#define wmb() RISCV_FENCE(ow,ow) - - #elif defined(__sparc__) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0e758944..33c161bd 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -734,6 +734,7 @@ SET(KNOWN_64BIT_ARCHITECTURES - s390x - x86_64 - sw_64 -+ riscv64 - ) - - # Include the platform-specific file. To allow exceptions, this code --- -Gitee - diff --git a/filter-provides.sh b/filter-provides.sh deleted file mode 100755 index bc166bd..0000000 --- a/filter-provides.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /bin/bash -# - -/usr/lib/rpm/perl.prov $* | -sed -e '/perl(hostnames)/d' -e '/perl(lib::mtr.*/d' -e '/perl(lib::v1.*/d' -e '/perl(mtr_.*/d' -e '/perl(My::.*/d' - diff --git a/filter-requires.sh b/filter-requires.sh deleted file mode 100755 index 3fdf438..0000000 --- a/filter-requires.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /bin/bash -# - -/usr/lib/rpm/perl.req $* | -sed -e '/perl(GD)/d' -e '/perl(hostnames)/d' -e '/perl(lib::mtr.*/d' -e '/perl(lib::v1.*/d' -e '/perl(mtr_.*/d' -e '/perl(My::.*/d' - diff --git a/greatsql-8.0.32-26.tar.xz b/greatsql-8.0.32-27.tar.xz similarity index 32% rename from greatsql-8.0.32-26.tar.xz rename to greatsql-8.0.32-27.tar.xz index 0bb0d76..fc6bc6a 100644 --- a/greatsql-8.0.32-26.tar.xz +++ b/greatsql-8.0.32-27.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f7d67b7f46b379b172e1db105772d370d8270dca3dcff051e692f4ca502de1d -size 404610060 +oid sha256:ce6f9e5ffa32c21e12dfef5b8f6b34a176d92064759701e6e559a89b8adbfeb9 +size 404722388 diff --git a/greatsql-802516-mtr-passed.md b/greatsql-802516-mtr-passed.md deleted file mode 100644 index 921d7bc..0000000 --- a/greatsql-802516-mtr-passed.md +++ /dev/null @@ -1,30 +0,0 @@ -# GreatSQL 8.0.25-16通过MTR回归测试 - -## 测试信息 -本节描述被测对象的版本信息和测试的时间及测试轮次,包括依赖的硬件。 - -| 被测软件版本 | 系统版本 | 测试起始时间 | 测试结束时间 | -|--------|--------|--------|--------| -| GreatSQL-8.0.25-16 | openEuler 20.03 (LTS-SP2) | 2022-06-26 | 2022-06-29 | - -描述特性测试的硬件环境信息 - -| 硬件信息 | 硬件配置信息 | 备注 | -|--------|--------|--------| -| x86服务器 | 26核心 256GB内存 | | - -## 测试结果概述 -本次对`GreatSQL-8.0.25-16`版本进行回归测试,共执行测试用例6193个。其中成功6190个;失败的3个测例中,预期内失败的有2个,目的是验证测试框架对异常测例的识别能力,另有1个测例(`special.innodb_dedicated_server`)的执行结果和预期不匹配,但不匹配的点与数据库无关,该问题正在排查中,不影响数据库测试结论。 - -## 测试结论 -**通过** - -## 关于MTR -MySQL Test Run 简称MTR,是MySQL官方提供的自动化测试框架,执行脚本在发布路径的mysql-test目录下。 - -主要测试步骤,是通过执行一个case(*.test)中的语句(包括sql语句和其他管理语句),将case的输出记录保存在结果文件(*.result)中,或者是将语句执行结果与标准的输出结果作diff,如果出现偏差就会报错。 - -MySQL自动化框架包括一组测试用例和用于运行它们的程序:perl 脚本(mysql-test-run.pl)和 c++ 二进制(mysqltest)。 - -- perl 脚本:负责控制流程,包括启停、识别执行哪些用例、创建文件夹、收集结果等操作。 -- mysqltest:负责执行测试用例,包括读文件,解析特定语法,执行用例。 diff --git a/greatsql-803227-oe2503-test-result-20250305.png b/greatsql-803227-oe2503-test-result-20250305.png new file mode 100644 index 0000000000000000000000000000000000000000..f90ae9b46b3db67419b3a6d6da90f8e6419a0888 GIT binary patch literal 204218 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

Y) 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 DR8AkV literal 0 HcmV?d00001 diff --git a/greatsql.cnf b/greatsql.cnf deleted file mode 100644 index 4ae3cfe..0000000 --- a/greatsql.cnf +++ /dev/null @@ -1,11 +0,0 @@ -# -# The GreatSQLconfiguration file. -# -# -# * IMPORTANT: Additional settings that can override those from this file! -# The files must end with '.cnf', otherwise they'll be ignored. -# Please make any edits and changes to the appropriate sectional files -# included below. -# -!includedir /etc/my.cnf.d/ -!includedir /etc/greatsql.conf.d/ diff --git a/greatsql.spec b/greatsql.spec index 42ecc52..2ecff21 100644 --- a/greatsql.spec +++ b/greatsql.spec @@ -29,10 +29,10 @@ %global mysqldatadir /var/lib/mysql %global mysql_version 8.0.32 -%global greatsql_version 26 -%global revision a68b3034c3d +%global greatsql_version 27 +%global revision aa66a385910 %global tokudb_backup_version %{mysql_version}-%{greatsql_version} -%global rpm_release 6 +%global rpm_release 1 %global release %{greatsql_version}.%{rpm_release}%{?dist} @@ -108,8 +108,6 @@ SOURCE0: https://product.greatdb.com/GreatSQL-%{mysql_version}-%{greatsql URL: https://greatsql.cn SOURCE5: mysql_config.sh SOURCE10: https://archives.boost.io/release/1.77.0/source/boost_1_77_0.tar.bz2 -SOURCE90: filter-provides.sh -SOURCE91: filter-requires.sh SOURCE11: mysqld.cnf Patch0: mysql-5.7-sharedlib-rename.patch Patch1: add-riscv64-support.patch @@ -387,8 +385,8 @@ For a description of GreatSQL see https://greatsql.cn %prep %setup -q -T -a 0 -a 10 -c -n %{src_dir} pushd %{src_dir} -%patch 0 -p0 -%patch 1 -p1 +%patch -P0 -p0 +%patch -P1 -p1 cp %{SOURCE11} scripts %build @@ -483,6 +481,7 @@ mkdir release -DWITH_AUTHENTICATION_LDAP=OFF \ -DWITH_PAM=1 \ -DWITH_TOKUDB=0 \ + -DWITH_TOKUDB_BACKUP=OFF \ -DWITH_UNIT_TESTS=OFF \ -DWITH_ROCKSDB=OFF \ -DROCKSDB_DISABLE_AVX2=1 \ @@ -854,6 +853,7 @@ fi %attr(755, root, root) %{_libdir}/mysql/plugin/component_keyring_kms.so %attr(755, root, root) %{_libdir}/mysql/plugin/component_log_filter_dragnet.so %attr(755, root, root) %{_libdir}/mysql/plugin/component_log_sink_json.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_log_sink_rotate.so %attr(755, root, root) %{_libdir}/mysql/plugin/component_log_sink_syseventlog.so %attr(755, root, root) %{_libdir}/mysql/plugin/component_mysqlbackup.so %attr(755, root, root) %{_libdir}/mysql/plugin/component_query_attributes.so @@ -912,6 +912,7 @@ fi %attr(755, root, root) %{_libdir}/mysql/plugin/debug/component_keyring_kms.so %attr(755, root, root) %{_libdir}/mysql/plugin/debug/component_log_filter_dragnet.so %attr(755, root, root) %{_libdir}/mysql/plugin/debug/component_log_sink_json.so +%attr(755, root, root) %{_libdir}/mysql/plugin/debug/component_log_sink_rotate.so %attr(755, root, root) %{_libdir}/mysql/plugin/debug/component_log_sink_syseventlog.so %attr(755, root, root) %{_libdir}/mysql/plugin/debug/component_mysqlbackup.so %attr(755, root, root) %{_libdir}/mysql/plugin/debug/component_query_attributes.so @@ -1347,6 +1348,9 @@ fi %{_libdir}/mysql/private/icudt69l/brkitr %changelog +* Mon Mar 10 2025 GreatSQL - 8.0.32-27.1 +- Release GreatSQL-8.0.32-27.1 + * Sun Dec 08 2024 Funda Wang - 8.0.32-26.6 - convert to git lfs diff --git a/mysql.init b/mysql.init deleted file mode 100644 index f0bab78..0000000 --- a/mysql.init +++ /dev/null @@ -1,248 +0,0 @@ -#!/bin/sh -# -# mysqld This shell script takes care of starting and stopping -# the MySQL subsystem (mysqld). -# -# chkconfig: 345 64 36 -# description: MySQL database server. -# processname: mysqld -# config: /etc/my.cnf -# pidfile: /var/run/mysqld/mysqld.pid - -# Source function library. -. /etc/rc.d/init.d/functions - -# Source networking configuration. -. /etc/sysconfig/network - - -exec="/usr/bin/mysqld_safe" -prog="mysqld" - -# Set timeouts here so they can be overridden from /etc/sysconfig/mysqld -STARTTIMEOUT=120 -STOPTIMEOUT=600 - -# Set in /etc/sysconfig/mysqld, will be passed to mysqld_safe -MYSQLD_OPTS= - -[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog - -lockfile=/var/lock/subsys/$prog - -# Support for extra options passed to mysqld -command=$1 && shift -extra_opts="$@" - -# Extract value of a MySQL option from config files -# Usage: get_mysql_option OPTION DEFAULT SECTION1 SECTION2 SECTIONN -# Result is returned in $result -# We use my_print_defaults which prints all options from multiple files, -# with the more specific ones later; hence take the last match. -get_mysql_option () { - option=$1 - default=$2 - shift 2 - result=$(/usr/bin/my_print_defaults "$@" | sed -n "s/^--${option}=//p" | tail -n 1) - if [ -z "$result" ]; then - # not found, use default - result="${default}" - fi -} - -get_mysql_option datadir "/var/lib/mysql" mysqld -datadir="$result" -get_mysql_option socket "$datadir/mysql.sock" mysqld -socketfile="$result" -get_mysql_option log-error "/var/log/mysqld.log" mysqld mysqld_safe -errlogfile="$result" -get_mysql_option pid-file "/var/run/mysqld/mysqld.pid" mysqld mysqld_safe -mypidfile="$result" - -case $socketfile in - /*) adminsocket="$socketfile" ;; - *) adminsocket="$datadir/$socketfile" ;; -esac - -install_validate_password_sql_file () { - local initfile - initfile="$(mktemp /var/lib/mysql-files/install-validate-password-plugin.XXXXXX.sql)" - chmod a+r "$initfile" - echo "SET @@SESSION.SQL_LOG_BIN=0;" > "$initfile" - echo "INSERT INTO mysql.component (component_id, component_group_id, component_urn) VALUES (1, 1, 'file://component_validate_password');" >> "$initfile" - echo "$initfile" -} - -start(){ - [ -x $exec ] || exit 5 - # check to see if it's already running - RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1) - if [ $? = 0 ]; then - # already running, do nothing - action $"Starting $prog: " /bin/true - ret=0 - elif echo "$RESPONSE" | grep -q "Access denied for user" - then - # already running, do nothing - action $"Starting $prog: " /bin/true - ret=0 - else - # prepare for start - if [ ! -e "$errlogfile" -a ! -h "$errlogfile" -a "x$(dirname "$errlogfile")" = "x/var/log" ]; then - install /dev/null -m0640 -omysql -gmysql "$errlogfile" - fi - [ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile" - if [ ! -d "$datadir/mysql" ] ; then - # First, make sure $datadir is there with correct permissions - if [ ! -d "$datadir" -a ! -h "$datadir" -a "x$(dirname "$datadir")" = "x/var/lib" ]; then - install -d -m0751 -omysql -gmysql "$datadir" || exit 1 - fi - if [ ! -h "$datadir" -a "x$(dirname "$datadir")" = "x/var/lib" ]; then - chown mysql:mysql "$datadir" - chmod 0751 "$datadir" - fi - if [ -x /sbin/restorecon ]; then - /sbin/restorecon "$datadir" - for dir in /var/lib/mysql-files /var/lib/mysql-keyring ; do - if [ -x /usr/sbin/semanage -a -d /var/lib/mysql -a -d $dir ] ; then - /usr/sbin/semanage fcontext -a -e /var/lib/mysql $dir >/dev/null 2>&1 - /sbin/restorecon -r $dir - fi - done - fi - # Now create the database - initfile="$(install_validate_password_sql_file)" - action $"Initializing MySQL database: " /usr/sbin/mysqld --initialize --datadir="$datadir" --user=mysql --init-file="$initfile" - ret=$? - rm -f "$initfile" - [ $ret -ne 0 ] && return $ret - if [ ! -h "$datadir" -a "x$(dirname "$datadir")" = "x/var/lib" ]; then - chown -R mysql:mysql "$datadir" - fi - # Generate certs if needed - if [ -x /usr/bin/mysql_ssl_rsa_setup -a ! -e "${datadir}/server-key.pem" ] ; then - /usr/bin/mysql_ssl_rsa_setup --datadir="$datadir" --uid=mysql >/dev/null 2>&1 - fi - fi - if [ ! -h "$datadir" -a "x$(dirname "$datadir")" = "x/var/lib" ]; then - chown mysql:mysql "$datadir" - chmod 0751 "$datadir" - fi - # Pass all the options determined above, to ensure consistent behavior. - # In many cases mysqld_safe would arrive at the same conclusions anyway - # but we need to be sure. (An exception is that we don't force the - # log-error setting, since this script doesn't really depend on that, - # and some users might prefer to configure logging to syslog.) - # Note: set --basedir to prevent probes that might trigger SELinux - # alarms, per bug #547485 - $exec $MYSQLD_OPTS --datadir="$datadir" --socket="$socketfile" \ - --pid-file="$mypidfile" \ - --basedir=/usr --user=mysql $extra_opts >/dev/null & - safe_pid=$! - # Spin for a maximum of N seconds waiting for the server to come up; - # exit the loop immediately if mysqld_safe process disappears. - # Rather than assuming we know a valid username, accept an "access - # denied" response as meaning the server is functioning. - ret=0 - TIMEOUT="$STARTTIMEOUT" - while [ $TIMEOUT -gt 0 ]; do - RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1) && break - echo "$RESPONSE" | grep -q "Access denied for user" && break - if ! /bin/kill -0 $safe_pid 2>/dev/null; then - echo "GreatSQL MySQL Daemon failed to start." - ret=1 - break - fi - sleep 1 - let TIMEOUT=${TIMEOUT}-1 - done - if [ $TIMEOUT -eq 0 ]; then - echo "Timeout error occurred trying to start GreatSQL MySQL Daemon." - ret=1 - fi - if [ $ret -eq 0 ]; then - action $"Starting $prog: " /bin/true - touch $lockfile - else - action $"Starting $prog: " /bin/false - fi - fi - return $ret -} - -stop(){ - if [ ! -f "$mypidfile" ]; then - # not running; per LSB standards this is "ok" - action $"Stopping $prog: " /bin/true - return 0 - fi - MYSQLPID=$(cat "$mypidfile") - if [ -n "$MYSQLPID" ]; then - /bin/kill "$MYSQLPID" >/dev/null 2>&1 - ret=$? - if [ $ret -eq 0 ]; then - TIMEOUT="$STOPTIMEOUT" - while [ $TIMEOUT -gt 0 ]; do - /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break - sleep 1 - let TIMEOUT=${TIMEOUT}-1 - done - if [ $TIMEOUT -eq 0 ]; then - echo "Timeout error occurred trying to stop GreatSQL MySQL Daemon." - ret=1 - action $"Stopping $prog: " /bin/false - else - rm -f $lockfile - rm -f "$socketfile" - action $"Stopping $prog: " /bin/true - fi - else - action $"Stopping $prog: " /bin/false - fi - else - # failed to read pidfile, probably insufficient permissions - action $"Stopping $prog: " /bin/false - ret=4 - fi - return $ret -} - -restart(){ - stop - start -} - -condrestart(){ - [ -e $lockfile ] && restart || : -} - - -# See how we were called. -case "$command" in - start) - start - ;; - stop) - stop - ;; - status) - status -p "$mypidfile" $prog - ;; - restart) - restart - ;; - condrestart|try-restart) - condrestart - ;; - reload) - exit 3 - ;; - force-reload) - restart - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" - exit 2 -esac - -exit $? diff --git "a/openEuler-25.03-GreatSQL\346\265\213\350\257\225\346\212\245\345\221\212.md" "b/openEuler-25.03-GreatSQL\346\265\213\350\257\225\346\212\245\345\221\212.md" new file mode 100644 index 0000000..832f3e5 --- /dev/null +++ "b/openEuler-25.03-GreatSQL\346\265\213\350\257\225\346\212\245\345\221\212.md" @@ -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 Replication,MySQL 组复制的简称。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) -- Gitee