From 15ef44be5a460d8e9e7b52dc97220a2419fc2c2e Mon Sep 17 00:00:00 2001 From: GreatSQL Date: Fri, 28 Mar 2025 19:28:29 +0800 Subject: [PATCH] Release GreatSQL-8.0.32-27.1 --- README.en.md | 36 - README.md | 409 ++++++++++- add-riscv64-support.patch | 41 ++ download | 2 + greatsql.spec | 1097 ++++++++++++++++++++++++++++++ mysql-5.7-sharedlib-rename.patch | 433 ++++++++++++ mysql_config.sh | 36 + mysqld.cnf | 36 + 8 files changed, 2027 insertions(+), 63 deletions(-) delete mode 100644 README.en.md create mode 100644 add-riscv64-support.patch create mode 100644 download create mode 100644 greatsql.spec create mode 100644 mysql-5.7-sharedlib-rename.patch create mode 100644 mysql_config.sh create mode 100644 mysqld.cnf diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 07e6c64..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# greatsql - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### 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/) diff --git a/README.md b/README.md index 502f184..8dc3a02 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,394 @@ -# greatsql +# 关于 GreatSQL -#### 介绍 -{**以下是 Gitee 平台说明,您可以替换此简介** -Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} +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/) -1. xxxx -2. xxxx -3. xxxx +# GreatSQL核心特性 -#### 使用说明 +### [高可用](https://greatsql.cn/docs/5-enhance/5-2-ha.html) -1. xxxx -2. xxxx -3. xxxx +针对 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大事务传输时压缩超过限制的处理机制。 -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request +更多信息详见文档:[高可用](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)。 -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +- 支持 [大规模并行、基于内存查询、高压缩比的高性能 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)。 + +## 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") diff --git a/add-riscv64-support.patch b/add-riscv64-support.patch new file mode 100644 index 0000000..90b5f12 --- /dev/null +++ b/add-riscv64-support.patch @@ -0,0 +1,41 @@ +From: GreatSQL +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 diff --git a/download b/download new file mode 100644 index 0000000..69f4249 --- /dev/null +++ b/download @@ -0,0 +1,2 @@ +09dc857466718f27237144c6f2432d86 boost_1_77_0.tar.bz2 +0c371a39c8bb5aebf8b6195435755ab1 greatsql-8.0.32-27.tar.xz diff --git a/greatsql.spec b/greatsql.spec new file mode 100644 index 0000000..8d26596 --- /dev/null +++ b/greatsql.spec @@ -0,0 +1,1097 @@ +# Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2023, GreatDB Software Co., Ltd. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston +# MA 02110-1301 USA. + +# Rebuild on OL5/RHEL5 needs following rpmbuild options: +# rpmbuild --define 'dist .el5' --define 'rhel 5' --define 'el5 1' mysql.spec + +# Install cmake28 from EPEL when building on OL5/RHEL5 and OL6/RHEL6. + +# NOTE: "vendor" is used in upgrade/downgrade check, so you can't +# change these, has to be exactly as is. + +%undefine _missing_build_ids_terminate_build +%global mysql_vendor Oracle and/or its affiliates +%global greatsql_vendor GreatDB Software Co., Ltd. +%global mysqldatadir /var/lib/mysql + +%global mysql_version 8.0.32 +%global greatsql_version 27 +%global revision aa66a385910 +%global tokudb_backup_version %{mysql_version}-%{greatsql_version} +%global rpm_release 1 + +%global release %{greatsql_version}.%{rpm_release}%{?dist} + +# By default, a build will be done using the system SSL library +%{?with_ssl: %global ssl_option -DWITH_SSL=%{with_ssl}} +%{!?with_ssl: %global ssl_option -DWITH_SSL=system} + +# By default a build will be done including the TokuDB +%{!?with_tokudb: %global tokudb 0} + +# By default a build will be done including the RocksDB +%{!?with_rocksdb: %global rocksdb 0} + +# Pass path to mecab lib +%{?with_mecab: %global mecab_option -DWITH_MECAB=%{with_mecab}} +%{?with_mecab: %global mecab 1} + +# Regression tests may take a long time, override the default to skip them +%{!?runselftest:%global runselftest 0} + +%{!?with_systemd: %global systemd 0} +%global systemd 1 +%{!?with_debuginfo: %global nodebuginfo 1} +%{!?product_suffix: %global product_suffix -80} +%{!?feature_set: %global feature_set community} +%{!?compilation_comment_release: %global compilation_comment_release GreatSQL (GPL), Release %{greatsql_version}, Revision %{revision}} +%{!?compilation_comment_debug: %global compilation_comment_debug GreatSQL - Debug (GPL), Release %{greatsql_version}, Revision %{revision}} +%{!?src_base: %global src_base greatsql} + +# Setup cmake flags for TokuDB +%if 0%{?tokudb} + %global TOKUDB_FLAGS -DWITH_VALGRIND=OFF -DUSE_VALGRIND=OFF -DDEBUG_EXTNAME=OFF -DBUILD_TESTING=OFF -DUSE_GTAGS=OFF -DUSE_CTAGS=OFF -DUSE_ETAGS=OFF -DUSE_CSCOPE=OFF -DTOKUDB_BACKUP_PLUGIN_VERSION=%{tokudb_backup_version} + %global TOKUDB_DEBUG_ON -DTOKU_DEBUG_PARANOID=ON + %global TOKUDB_DEBUG_OFF -DTOKU_DEBUG_PARANOID=OFF +%else + %global TOKUDB_FLAGS -DWITHOUT_TOKUDB=1 + %global TOKUDB_DEBUG_ON %{nil} + %global TOKUDB_DEBUG_OFF %{nil} +%endif + +# Setup cmake flags for RocksDB +%if 0%{?rocksdb} + %global ROCKSDB_FLAGS -DWITH_ROCKSDB=0 +%else + %global ROCKSDB_FLAGS -DWITH_ROCKSDB=0 +%endif + +%global shared_lib_pri_name mysqlclient +%global shared_lib_sec_name perconaserverclient + +# multiarch +%global multiarchs ppc %{power64} %{ix86} x86_64 %{sparc} %{arm} aarch64 loongarch64 + +%global src_dir %{src_base}-%{mysql_version}-%{greatsql_version} + +# We build debuginfo package so this is not used +%if 0%{?nodebuginfo} +%global _enable_debug_package 0 +%global debug_package %{nil} +%global __os_install_post /usr/lib/rpm/brp-compress %{nil} +%endif + +%global license_files_server %{src_dir}/README.md +%global license_type GPLv2 + +Name: greatsql +Summary: GreatSQL: a high performance, highly reliable, easy to use, and high security database +Group: Applications/Databases +Version: %{mysql_version} +Release: %{release} +License: GPL-2.0-or-later AND LGPL-2.1-only AND BSL-1.0 AND GPL-1.0-or-later OR Artistic-1.0-Perl AND BSD-2-Clause +URL: https://greatsql.cn +SOURCE0: https://product.greatdb.com/GreatSQL-%{mysql_version}-%{greatsql_version}/%{name}-%{mysql_version}-%{greatsql_version}.tar.xz +SOURCE10: https://archives.boost.io/release/1.77.0/source/boost_1_77_0.tar.bz2 +SOURCE11: mysqld.cnf +SOURCE12: mysql_config.sh +Patch0: mysql-5.7-sharedlib-rename.patch +Patch1: add-riscv64-support.patch +BuildRequires: cmake >= 2.8.2 +BuildRequires: make +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: perl +BuildRequires: perl(Carp) +BuildRequires: perl(Config) +BuildRequires: perl(Cwd) +BuildRequires: perl(Data::Dumper) +BuildRequires: perl(English) +BuildRequires: perl(Errno) +BuildRequires: perl(Exporter) +BuildRequires: perl(Fcntl) +BuildRequires: perl(File::Basename) +BuildRequires: perl(File::Copy) +BuildRequires: perl(File::Find) +BuildRequires: perl(File::Path) +BuildRequires: perl(File::Spec) +BuildRequires: perl(File::Spec::Functions) +BuildRequires: perl(File::Temp) +BuildRequires: perl(Getopt::Long) +BuildRequires: perl(IO::File) +BuildRequires: perl(IO::Handle) +BuildRequires: perl(IO::Pipe) +BuildRequires: perl(IO::Select) +BuildRequires: perl(IO::Socket) +BuildRequires: perl(IO::Socket::INET) +BuildRequires: perl(JSON) +BuildRequires: perl(Memoize) +BuildRequires: perl(POSIX) +BuildRequires: perl(Sys::Hostname) +BuildRequires: perl(Time::HiRes) +BuildRequires: perl(Time::localtime) +BuildRequires: time +BuildRequires: libaio-devel +BuildRequires: ncurses-devel +BuildRequires: pam-devel +BuildRequires: readline-devel +%ifnarch aarch64 +BuildRequires: numactl-devel +%endif +BuildRequires: openssl +BuildRequires: openssl-devel +BuildRequires: zlib-devel +BuildRequires: bison +BuildRequires: openldap-devel +BuildRequires: libcurl-devel +BuildRequires: libedit-devel +BuildRequires: libevent-devel +BuildRequires: libicu-devel +BuildRequires: lz4 +BuildRequires: lz4-devel +BuildRequires: libzstd-devel +%if 0%{?systemd} +BuildRequires: systemd +BuildRequires: pkgconfig(systemd) +%endif +BuildRequires: cyrus-sasl-devel +BuildRequires: openldap-devel + +BuildRequires: cmake >= 3.6.1 +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: libtirpc-devel +BuildRequires: rpcgen +BuildRequires: m4 +BuildRequires: krb5-devel +BuildRequires: libudev-devel + +#some more requires, 2025.3.21 +BuildRequires: mecab-devel +BuildRequires: gzip +BuildRequires: perl(base) +BuildRequires: perl(Digest::file) +BuildRequires: perl(Digest::MD5) +BuildRequires: perl(Env) +BuildRequires: perl(FindBin) +BuildRequires: perl(if) +BuildRequires: perl-interpreter +BuildRequires: perl-generators +BuildRequires: perl(IPC::Open3) +BuildRequires: perl(lib) +BuildRequires: perl(LWP::Simple) +BuildRequires: perl(Net::Ping) +BuildRequires: perl(Socket) +BuildRequires: perl(strict) +BuildRequires: perl(Test::More) +BuildRequires: perl(warnings) +BuildRequires: procps +BuildRequires: protobuf-lite-devel +BuildRequires: zlib +#end for some more requires + +BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) + +# For rpm => 4.9 only: https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering +%global __requires_exclude ^perl\\(GD|hostnames|lib::mtr|lib::v1|mtr_|My::|Lmo|Lmo::Meta|Lmo::Object|Lmo::Types|Lmo::Utils|Percona::Toolkit|Quoter|Transformers) +%global __provides_exclude_from ^(%{_datadir}/(mysql|mysql-test)/.*|%{_libdir}/mysql/plugin/.*\\.so|%{_bindir}/mysql.*|%{_sbindir}/mysqld.*)$ + +%global _privatelibs lib(protobuf|mysqlclient|mysqlharness|mysqlrouter|mysqlclient|daemon|fnv|memcached|murmur|test)*\\.so* +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}%{_privatelibs} +%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}%{_privatelibs} + +%description +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. + +For a description of GreatSQL see https://greatsql.cn + +%package -n greatsql-server +Summary: GreatSQL: a high performance, highly reliable, easy to use, and high security database that can be used to replace MySQL or Percona Server. +Group: Applications/Databases +Requires: coreutils +Requires: bash /bin/sh +Requires: grep +Requires: procps +Requires: shadow-utils +Requires: net-tools +Requires(pre): greatsql-shared +Requires: greatsql-client +Requires: greatsql-icu-data-files +Requires: openssl +Conflicts: Percona-SQL-server-50 Percona-Server-server-51 Percona-Server-server-55 Percona-Server-server-56 Percona-Server-server-57 + +%if 0%{?systemd} +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +%else +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +Requires(preun): /sbin/service +%endif + +Conflicts: mariadb-connector-c-config + +%description -n greatsql-server +GreatSQL: a high performance, highly reliable, easy to use, and high security database that can be used to replace MySQL or Percona Server. + +For a description of GreatSQL see https://greatsql.cn + +%package -n greatsql-client +Summary: GreatSQL - Client +Group: Applications/Databases +Requires: greatsql-shared +Conflicts: Percona-SQL-client-50 Percona-Server-client-51 Percona-Server-client-55 Percona-Server-client-56 Percona-Server-client-57 + +%description -n greatsql-client +This package contains the standard GreatSQL client and administration tools. + +For a description of GreatSQL see https://greatsql.cn + +%package -n greatsql-test +Summary: Test suite for the GreatSQL +Group: Applications/Databases +Requires: perl(Carp) +Requires: perl(Config) +Requires: perl(Cwd) +Requires: perl(Data::Dumper) +Requires: perl(English) +Requires: perl(Errno) +Requires: perl(Exporter) +Requires: perl(Fcntl) +Requires: perl(File::Basename) +Requires: perl(File::Copy) +Requires: perl(File::Find) +Requires: perl(File::Path) +Requires: perl(File::Spec) +Requires: perl(File::Spec::Functions) +Requires: perl(File::Temp) +Requires: perl(Getopt::Long) +Requires: perl(IO::File) +Requires: perl(IO::Handle) +Requires: perl(IO::Pipe) +Requires: perl(IO::Select) +Requires: perl(IO::Socket) +Requires: perl(IO::Socket::INET) +Requires: perl(JSON) +Requires: perl(Memoize) +Requires: perl(POSIX) +Requires: perl(Sys::Hostname) +Requires: perl(Time::HiRes) +Requires: perl(Time::localtime) +Requires(pre): greatsql-shared greatsql-client greatsql-server +Conflicts: MySQL-test +Conflicts: mysql-test +Conflicts: mariadb-test +Conflicts: Percona-SQL-test-50 Percona-Server-test-51 Percona-Server-test-55 Percona-Server-test-56 Percona-Server-test-57 + +%description -n greatsql-test +This package contains the GreatSQL regression test suite. + +For a description of GreatSQL see https://greatsql.cn + +%package -n greatsql-devel +Summary: GreatSQL - Development header files and libraries +Group: Applications/Databases +Conflicts: Percona-SQL-devel-50 Percona-Server-devel-51 Percona-Server-devel-55 Percona-Server-devel-56 Percona-Server-devel-57 +Conflicts: mariadb-connector-c-devel +Conflicts: mariadb-devel + +%description -n greatsql-devel +This package contains the development header files and libraries necessary +to develop GreatSQL client applications. + +For a description of GreatSQL see https://greatsql.cn + +%package -n greatsql-shared +Summary: GreatSQL - Shared libraries +Group: Applications/Databases +Conflicts: mysql-libs < %{version}-%{release} + +%description -n greatsql-shared +This package contains the shared libraries (*.so*) which certain languages +and applications need to dynamically load and use GreatSQL. + +For a description of GreatSQL see https://greatsql.cn + +%if 0%{?compatlib} +%package -n greatsql-shared-compat +Summary: Shared compat libraries for GreatSQL %{compatver}-%{percona_compatver} database client applications +Group: Applications/Databases + +Conflicts: mysql-libs + +Conflicts: Percona-Server-shared-51 +Conflicts: Percona-Server-shared-55 +Conflicts: Percona-Server-shared-55 +Conflicts: Percona-Server-shared-56 +Conflicts: Percona-Server-shared-57 + +%description -n greatsql-shared-compat +This package contains the shared compat libraries for GreatSQL %{compatver}-%{percona_compatver} client +applications. +%endif + +%if 0%{?tokudb} +%package -n greatsql-tokudb +Summary: GreatSQL - TokuDB package +Group: Applications/Databases +Requires: greatsql-server = %{version}-%{release} +Requires: greatsql-shared = %{version}-%{release} +Requires: greatsql-client = %{version}-%{release} +Requires: jemalloc >= 3.3.0 + +%description -n greatsql-tokudb +This package contains the TokuDB plugin for GreatSQL %{version}-%{release} +%endif + +%if 0%{?rocksdb} +%package -n greatsql-rocksdb +Summary: GreatSQL - RocksDB package +Group: Applications/Databases +Requires: greatsql-server = %{version}-%{release} +Requires: greatsql-shared = %{version}-%{release} +Requires: greatsql-client = %{version}-%{release} + +%description -n greatsql-rocksdb +This package contains the RocksDB plugin for GreatSQL %{version}-%{release} + +For a description of GreatSQL see https://greatsql.cn +%endif + +%package -n greatsql-mysql-router +Summary: GreatSQL MySQL Router +Group: Applications/Databases +Provides: greatsql-mysql-router = %{version}-%{release} +Obsoletes: greatsql-mysql-router < %{version}-%{release} + +%description -n greatsql-mysql-router +The GreatSQL MySQL Router software delivers a fast, multi-threaded way of +routing connections from GreatSQL Clients to GreatSQL Servers. + +For a description of GreatSQL see https://greatsql.cn + +%package -n greatsql-mysql-router-devel +Summary: Development header files and libraries for GreatSQL MySQL Router +Group: Applications/Databases +Provides: greatsql-mysql-router-devel = %{version}-%{release} +Conflicts: mysql-router-devel + +%description -n greatsql-mysql-router-devel +This package contains the development header files and libraries +necessary to develop GreatSQL MySQL Router applications. + +For a description of GreatSQL see https://greatsql.cn + +%package -n greatsql-mysql-config +Summary: GreatSQL config +Provides: greatsql-mysql-config = %{version}-%{release} +Conflicts: mysql-config + +%description -n greatsql-mysql-config +This package contains my.cnf for GreatSQL. + +For a description of GreatSQL see https://greatsql.cn + +%package -n greatsql-icu-data-files +Summary: GreatSQL packaging of ICU data files + +%description -n greatsql-icu-data-files +This package contains ICU data files needer by GreatSQL regular expressions. + +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 -P0 -p0 +%patch -P1 -p1 +cp %{SOURCE11} scripts + +%build +# Fail quickly and obviously if user tries to build as root +%if 0%{?runselftest} +if [ "x$(id -u)" = "x0" ] ; then + echo "The MySQL regression tests may fail if run as root." + echo "If you really need to build the RPM as root, use" + echo "--define='runselftest 0' to skip the regression tests." + exit 1 +fi +%endif + +# Build full release +mkdir release +( + cd release + cmake ../%{src_dir} \ + -DBUILD_CONFIG=mysql_release \ + -DINSTALL_LAYOUT=RPM \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DWITH_BOOST=.. \ + -DCMAKE_C_FLAGS="%{optflags}%{?with_debug: -fno-strict-overflow -Wno-unused-result -Wno-unused-function -Wno-unused-but-set-variable}" \ + -DCMAKE_CXX_FLAGS="%{optflags}%{?with_debug: -fno-strict-overflow -Wno-unused-result -Wno-unused-function -Wno-unused-but-set-variable}" \ + -DCMAKE_EXE_LINKER_FLAGS="-pie %{build_ldflags}" \ + -DWITH_MYSQLD_LDFLAGS="%{build_ldflags}" \ + -DCMAKE_C_LINK_FLAGS="%{build_ldflags}" \ + -DCMAKE_CXX_LINK_FLAGS="%{build_ldflags}" \ + -DCMAKE_SKIP_INSTALL_RPATH=YES \ +%if 0%{?systemd} + -DWITH_SYSTEMD=1 \ +%endif + -DWITH_INNODB_MEMCACHED=1 \ + -DINSTALL_LIBDIR="%{_lib}/mysql" \ + -DINSTALL_PLUGINDIR="%{_lib}/mysql/plugin" \ + -DMYSQL_UNIX_ADDR="%{mysqldatadir}/mysql.sock" \ + -DINSTALL_MYSQLSHAREDIR=share/greatsql \ + -DINSTALL_SUPPORTFILESDIR=share/greatsql \ + -DFEATURE_SET="%{feature_set}" \ + -DWITH_AUTHENTICATION_LDAP=OFF \ + -DWITH_PAM=1 \ + -DWITH_TOKUDB=OFF \ + -DWITH_TOKUDB_BACKUP=OFF \ + -DWITH_NDB=OFF \ + -DWITH_NDBCLUSTER=OFF \ + -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF \ + -DWITH_AUTHENTICATION_KERBEROS=ON \ + -DWITH_UNIT_TESTS=OFF \ + -DWITH_ROCKSDB=OFF \ + -DROCKSDB_DISABLE_AVX2=1 \ + -DROCKSDB_DISABLE_MARCH_NATIVE=1 \ + -DGROUP_REPLICATION_WITH_ROCKSDB=OFF \ + -DALLOW_NO_SSE42=ON \ + -DMYSQL_MAINTAINER_MODE=OFF \ + -DFORCE_INSOURCE_BUILD=1 \ +%ifnarch aarch64 + -DWITH_NUMA=ON \ +%endif + -DWITH_LDAP=system \ + -DWITH_SYSTEM_LIBS=ON \ + -DWITH_LZ4=bundled \ + -DWITH_ZLIB=bundled \ + -DWITH_PROTOBUF=bundled \ + -DWITH_RAPIDJSON=bundled \ + -DWITH_ICU=bundled \ + -DWITH_READLINE=system \ + -DWITH_LIBEVENT=bundled \ + -DWITH_ZSTD=bundled \ + -DWITH_KEYRING_VAULT=ON \ + -DWITH_FIDO=bundled \ + -DWITHOUT_RAPID_SECONDARY_STORAGE_ENGINE=1 \ + -DWITH_SSL=system \ + -DWITH_MECAB=system \ + -DREPRODUCIBLE_BUILD=OFF \ + -DWITH_ROUTER=ON \ + -DENABLED_LOCAL_INFILE=ON \ + -DCOMPILATION_COMMENT="%{compilation_comment_release}" %{TOKUDB_FLAGS} %{TOKUDB_DEBUG_OFF} %{ROCKSDB_FLAGS} + echo BEGIN_NORMAL_CONFIG ; egrep '^#define' include/config.h ; echo END_NORMAL_CONFIG + make %{?_smp_mflags} +) + +%install +%define _unpackaged_files_terminate_build 0 +MBD=$RPM_BUILD_DIR/%{src_dir} + +# Ensure that needed directories exists +install -d -m 0751 %{buildroot}/var/lib/mysql +install -d -m 0755 %{buildroot}/var/run/mysqld +install -d -m 0750 %{buildroot}/var/lib/mysql-files +install -d -m 0750 %{buildroot}/var/lib/mysql-keyring + +# Router directories +install -d -m 0755 %{buildroot}/var/log/mysqlrouter +install -d -m 0755 %{buildroot}/var/run/mysqlrouter + +# Install all binaries +cd $MBD/release +make DESTDIR=%{buildroot} install + +# Install logrotate and autostart +#install -D -m 0644 packaging/rpm-common/mysql.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/mysql +#investigate this logrotate +install -D -m 0644 $MBD/release/support-files/mysql-log-rotate %{buildroot}%{_sysconfdir}/logrotate.d/mysql +install -D -m 0644 $MBD/%{src_dir}/build-gs/rpm/mysqld.cnf %{buildroot}%{_sysconfdir}/my.cnf +install -D -p -m 0644 %{_builddir}/greatsql-%{version}-%{greatsql_version}/greatsql-%{version}-%{greatsql_version}/scripts/mysqld.cnf %{buildroot}%{_sysconfdir}/my.cnf +install -d %{buildroot}%{_sysconfdir}/my.cnf.d + +#%if 0%{?systemd} +#%else +#%if 0%{?rhel} < 7 +# install -D -m 0755 $MBD/%{src_dir}/build-gs/rpm/mysql.init %{buildroot}%{_sysconfdir}/init.d/mysql +#%endif + + +# Add libdir to linker +install -d -m 0755 %{buildroot}%{_sysconfdir}/ld.so.conf.d +echo "%{_libdir}/mysql" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/mysql-%{_arch}.conf + +# multiarch support +%ifarch %{multiarchs} + mv %{buildroot}/%{_bindir}/mysql_config %{buildroot}/%{_bindir}/mysql_config-%{__isa_bits} + install -p -m 0755 %{SOURCE12} %{buildroot}/%{_bindir}/mysql_config +%endif + +%if 0%{?systemd} +install -D -p -m 0644 scripts/mysqlrouter.service %{buildroot}%{_unitdir}/mysqlrouter.service +#install -D -p -m 0644 packaging/rpm-common/mysqlrouter.conf %{buildroot}%{_tmpfilesdir}/mysqlrouter.conf +#install -D -p -m 0644 packaging/rpm-common/mysqlrouter.tmpfiles.d %{buildroot}%{_tmpfilesdir}/mysqlrouter.conf +%else +install -D -p -m 0755 packaging/rpm-common/mysqlrouter.init %{buildroot}%{_sysconfdir}/init.d/mysqlrouter +%endif +install -D -p -m 0644 packaging/rpm-common/mysqlrouter.conf %{buildroot}%{_sysconfdir}/mysqlrouter/mysqlrouter.conf + +# Remove files pages we explicitly do not want to package +rm -rf %{buildroot}%{_infodir}/mysql.info* +rm -rf %{buildroot}%{_datadir}/greatsql/mysql.server +rm -rf %{buildroot}%{_datadir}/greatsql/mysqld_multi.server +rm -f %{buildroot}%{_datadir}/greatsql/win_install_firewall.sql +rm -f %{buildroot}%{_datadir}/greatsql/audit_log_filter_win_install.sql +rm -rf %{buildroot}%{_bindir}/mysql_embedded +rm -rf %{buildroot}/usr/cmake/coredumper-relwithdebinfo.cmake +rm -rf %{buildroot}/usr/cmake/coredumper.cmake +rm -rf %{buildroot}/usr/include/kmip.h +rm -rf %{buildroot}/usr/include/kmippp.h + +%check +%if 0%{?runselftest} + pushd release + make test VERBOSE=1 + export MTR_BUILD_THREAD=auto + pushd mysql-test + ./mtr \ + --mem --parallel=auto --force --retry=0 \ + --mysqld=--binlog-format=mixed \ + --suite-timeout=720 --testcase-timeout=30 \ + --clean-vardir + rm -r $(readlink var) var +%endif + +%pretrans -n greatsql-server +if [ -d %{_datadir}/mysql ] && [ ! -L %{_datadir}/mysql ]; then + MYCNF_PACKAGE=$(rpm -qf /usr/share/mysql --queryformat "%{NAME}") +fi + +if [ "$MYCNF_PACKAGE" == "mariadb-libs" -o "$MYCNF_PACKAGE" == "mysql-libs" ]; then + MODIFIED=$(rpm -Va "$MYCNF_PACKAGE" | grep '/usr/share/mysql' | awk '{print $1}' | grep -c 5) + if [ "$MODIFIED" == 1 ]; then + cp -r %{_datadir}/mysql %{_datadir}/mysql.old + fi +fi + +%pre -n greatsql-server +/usr/sbin/groupadd -g 27 -o -r mysql >/dev/null 2>&1 || : +/usr/sbin/useradd -M %{!?el5:-N} -g mysql -o -r -d /var/lib/mysql -s /bin/false \ + -c "GreatSQL" -u 27 mysql >/dev/null 2>&1 || : +if [ "$1" = 1 ]; then + if [ -f %{_sysconfdir}/my.cnf ]; then + timestamp=$(date '+%Y%m%d-%H%M') + cp %{_sysconfdir}/my.cnf \ + %{_sysconfdir}/my.cnf.rpmsave-${timestamp} + fi +fi + +%post -n greatsql-server +datadir=$(/usr/bin/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p' | tail -n 1) +/bin/chmod 0751 "$datadir" >/dev/null 2>&1 || : +if [ ! -e /var/log/mysqld.log ]; then + /usr/bin/install -m0640 -omysql -gmysql /dev/null /var/log/mysqld.log +fi + +%if 0%{?systemd} + %systemd_post mysqld.service + if [ $1 == 1 ]; then + /usr/bin/systemctl enable mysqld >/dev/null 2>&1 || : + fi +%else + if [ $1 == 1 ]; then + /sbin/chkconfig --add mysql + fi +%endif + +if [ -d /etc/greatsql.conf.d ]; then + CONF_EXISTS=$(grep "greatsql.conf.d" /etc/my.cnf | wc -l) + if [ ${CONF_EXISTS} = 0 ]; then + echo "!includedir /etc/greatsql.conf.d/" >> /etc/my.cnf + fi +fi +echo "user = mysql" >> /etc/my.cnf +echo "datadir = /var/lib/mysql" >> /etc/my.cnf +echo "socket = /var/lib/mysql/mysql.sock" >> /etc/my.cnf +echo "log-error = /var/log/mysqld.log" >> /etc/my.cnf +echo "pid-file = /var/run/mysqld/mysqld.pid" >> /etc/my.cnf +echo "slow_query_log = ON" >> /etc/my.cnf +echo "long_query_time = 0.01" >> /etc/my.cnf +echo "log_slow_verbosity = FULL" >> /etc/my.cnf +echo "log_error_verbosity = 3" >> /etc/my.cnf +echo "innodb_buffer_pool_size = 1G" >> /etc/my.cnf +echo "innodb_redo_log_capacity = 256M" >> /etc/my.cnf +echo "innodb_io_capacity = 10000" >> /etc/my.cnf +echo "innodb_io_capacity_max = 20000" >> /etc/my.cnf +echo "innodb_flush_sync = OFF" >> /etc/my.cnf + +%preun -n greatsql-server +%if 0%{?systemd} + %systemd_preun mysqld.service +%else + if [ "$1" = 0 ]; then + /sbin/service mysql stop >/dev/null 2>&1 || : + /sbin/chkconfig --del mysql + fi +%endif +if [ "$1" = 0 ]; then + if [ -L %{_datadir}/mysql ]; then + rm %{_datadir}/mysql + fi + if [ -f %{_sysconfdir}/my.cnf ]; then + cp %{_sysconfdir}/my.cnf \ + %{_sysconfdir}/my.cnf.rpmsave + fi +fi + +%postun -n greatsql-server +%if 0%{?systemd} + %systemd_postun_with_restart mysqld.service +%else + if [ $1 -ge 1 ]; then + /sbin/service mysql condrestart >/dev/null 2>&1 || : + fi +%endif + +%posttrans -n greatsql-server +if [ -d %{_datadir}/mysql ] && [ ! -L %{_datadir}/mysql ]; then + MYCNF_PACKAGE=$(rpm -qf /usr/share/mysql --queryformat "%{NAME}") + if [ "$MYCNF_PACKAGE" == "file %{_datadir}/mysql is not owned by any package" ]; then + mv %{_datadir}/mysql %{_datadir}/mysql.old + fi +fi + +if [ ! -d %{_datadir}/mysql ] && [ ! -L %{_datadir}/mysql ]; then + ln -s %{_datadir}/greatsql %{_datadir}/mysql +fi + +%post -n greatsql-shared + +%postun -n greatsql-shared + +%if 0%{?rocksdb} +%post -n greatsql-rocksdb +if [ $1 -eq 1 ] ; then + echo -e "\n\n * This release of GreatSQL is distributed with RocksDB storage engine." + echo -e " * Run the following script to enable the RocksDB storage engine in GreatSQL:\n" + echo -e "\tps-admin --enable-rocksdb -u -p[mysql_admin_pass] [-S ] [-h -P ]\n" +fi +%endif + +%pre -n greatsql-mysql-router +/usr/sbin/groupadd -r mysqlrouter >/dev/null 2>&1 || : +/usr/sbin/useradd -M -N -g mysqlrouter -r -d /var/lib/mysqlrouter -s /bin/false \ + -c "GreatSQL MySQL Router" mysqlrouter >/dev/null 2>&1 || : + +%post -n greatsql-mysql-router +/sbin/ldconfig +%if 0%{?systemd} +%systemd_post mysqlrouter.service +%else +/sbin/chkconfig --add mysqlrouter +%endif + +%preun -n greatsql-mysql-router +%if 0%{?systemd} +%systemd_preun mysqlrouter.service +%else +if [ "$1" = 0 ]; then + /sbin/service mysqlrouter stop >/dev/null 2>&1 || : + /sbin/chkconfig --del mysqlrouter +fi +%endif + +%postun -n greatsql-mysql-router +/sbin/ldconfig +%if 0%{?systemd} +%systemd_postun_with_restart mysqlrouter.service +%else +if [ $1 -ge 1 ]; then + /sbin/service mysqlrouter condrestart >/dev/null 2>&1 || : +fi +%endif + + +%files -n greatsql-server +%defattr(-, root, root, -) +%doc %{?license_files_server} +%doc %{src_dir}/Docs/INFO_SRC* +%doc release/Docs/INFO_BIN* +%attr(644, root, root) %{_mandir}/man1/innochecksum.1* +%attr(644, root, root) %{_mandir}/man1/ibd2sdi.1* +%attr(644, root, root) %{_mandir}/man1/my_print_defaults.1* +%attr(644, root, root) %{_mandir}/man1/myisam_ftdump.1* +%attr(644, root, root) %{_mandir}/man1/myisamchk.1* +%attr(644, root, root) %{_mandir}/man1/myisamlog.1* +%attr(644, root, root) %{_mandir}/man1/myisampack.1* +%attr(644, root, root) %{_mandir}/man8/mysqld.8* +%attr(644, root, root) %{_mandir}/man1/mysqldumpslow.1* +%attr(644, root, root) %{_mandir}/man1/mysql_secure_installation.1* +%attr(644, root, root) %{_mandir}/man1/mysql_upgrade.1* +%attr(644, root, root) %{_mandir}/man1/mysqlman.1* +%attr(644, root, root) %{_mandir}/man1/mysql_tzinfo_to_sql.1* +%attr(644, root, root) %{_mandir}/man1/perror.1* +%attr(644, root, root) %{_mandir}/man1/mysql_ssl_rsa_setup.1* +%attr(644, root, root) %{_mandir}/man1/lz4_decompress.1* +%attr(644, root, root) %{_mandir}/man1/zlib_decompress.1* + +%config(noreplace) %{_sysconfdir}/my.cnf +%dir %{_sysconfdir}/my.cnf.d + +%attr(755, root, root) %{_bindir}/comp_err +%attr(755, root, root) %{_bindir}/innochecksum +%attr(755, root, root) %{_bindir}/ibd2sdi +%attr(755, root, root) %{_bindir}/my_print_defaults +%attr(755, root, root) %{_bindir}/myisam_ftdump +%attr(755, root, root) %{_bindir}/myisamchk +%attr(755, root, root) %{_bindir}/myisamlog +%attr(755, root, root) %{_bindir}/myisampack +%attr(755, root, root) %{_bindir}/mysql_secure_installation +%attr(755, root, root) %{_bindir}/mysql_tzinfo_to_sql +%attr(755, root, root) %{_bindir}/mysql_upgrade +%attr(755, root, root) %{_bindir}/mysqldumpslow +%attr(755, root, root) %{_bindir}/ps_mysqld_helper +%attr(755, root, root) %{_bindir}/perror +%attr(755, root, root) %{_bindir}/mysql_ssl_rsa_setup +%attr(755, root, root) %{_bindir}/lz4_decompress +%attr(755, root, root) %{_bindir}/zlib_decompress +%attr(755, root, root) %{_bindir}/ps-admin +%attr(755, root, root) %{_bindir}/zstd_decompress +%attr(755, root, root) %{_bindir}/mysqldecompress +%if 0%{?systemd} +%attr(755, root, root) %{_bindir}/mysqld_pre_systemd +%attr(755, root, root) %{_bindir}/mysqld_safe +%else +%attr(755, root, root) %{_bindir}/mysqld_multi +%attr(755, root, root) %{_bindir}/mysqld_safe +%endif +%attr(755, root, root) %{_sbindir}/mysqld +%dir %{_libdir}/mysql/private +%attr(755, root, root) %{_libdir}/mysql/private/libprotobuf-lite.so.* +%attr(755, root, root) %{_libdir}/mysql/private/libprotobuf.so.* + +%dir %{_libdir}/mysql/plugin +%attr(755, root, root) %{_libdir}/mysql/plugin/procfs.so +%attr(755, root, root) %{_libdir}/mysql/plugin/binlog_utils_udf.so +%attr(755, root, root) %{_libdir}/mysql/plugin/adt_null.so +%attr(755, root, root) %{_libdir}/mysql/plugin/auth_socket.so +%attr(755, root, root) %{_libdir}/mysql/plugin/authentication_kerberos_client.so +%attr(755, root, root) %{_libdir}/mysql/plugin/authentication_ldap_sasl.so +%attr(755, root, root) %{_libdir}/mysql/plugin/authentication_ldap_sasl_client.so +%attr(755, root, root) %{_libdir}/mysql/plugin/authentication_ldap_simple.so +%attr(755, root, root) %{_libdir}/mysql/plugin/authentication_oci_client.so +%attr(755, root, root) %{_libdir}/mysql/plugin/greatdb_ha.so +%attr(755, root, root) %{_libdir}/mysql/plugin/group_replication.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_audit_api_message_emit.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_encryption_udf.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_keyring_file.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_keyring_kmip.so +%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 +%attr(755, root, root) %{_libdir}/mysql/plugin/component_reference_cache.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_audit_api_message.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_component_deinit.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_host_application_signal.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_mysql_command_services.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_mysql_system_variable_set.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_sensitive_system_variables.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_status_var_reader.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_table_access.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_udf_services.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_validate_password.so +%attr(755, root, root) %{_libdir}/mysql/plugin/conflicting_variables.so +%attr(755, root, root) %{_libdir}/mysql/plugin/connection_control.so +%attr(755, root, root) %{_libdir}/mysql/plugin/ddl_rewriter.so +%attr(755, root, root) %{_libdir}/mysql/plugin/ha_example.so +%attr(755, root, root) %{_libdir}/mysql/plugin/ha_mock.so +%attr(755, root, root) %{_libdir}/mysql/plugin/keyring_file.so +%attr(755, root, root) %{_libdir}/mysql/plugin/keyring_udf.so +%attr(755, root, root) %{_libdir}/mysql/plugin/innodb_engine.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libmemcached.so +%attr(755, root, root) %{_libdir}/mysql/plugin/locking_service.so +%attr(755, root, root) %{_libdir}/mysql/plugin/mypluglib.so +%attr(755, root, root) %{_libdir}/mysql/plugin/mysql_clone.so +%attr(755, root, root) %{_libdir}/mysql/plugin/mysql_no_login.so +%attr(755, root, root) %{_libdir}/mysql/plugin/rewrite_example.so +%attr(755, root, root) %{_libdir}/mysql/plugin/rewriter.so +%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_master.so +%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_slave.so +%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_replica.so +%attr(755, root, root) %{_libdir}/mysql/plugin/semisync_source.so +%attr(755, root, root) %{_libdir}/mysql/plugin/validate_password.so +%attr(755, root, root) %{_libdir}/mysql/plugin/version_token.so +%attr(755, root, root) %{_libdir}/mysql/plugin/test_services_command_services.so +%attr(755, root, root) %{_libdir}/mysql/plugin/test_services_host_application_signal.so +%attr(755, root, root) %{_libdir}/mysql/plugin/test_udf_wrappers.so +%attr(755, root, root) %{_libdir}/mysql/plugin/data_masking* +%if 0%{?mecab} +%{_libdir}/mysql/mecab +%attr(755, root, root) %{_libdir}/mysql/plugin/libpluginmecab.so +%endif +#coredumper +%attr(755, root, root) %{_includedir}/coredumper/coredumper.h +# Percona plugins +%attr(755, root, root) %{_libdir}/mysql/plugin/audit_log.so +%attr(755, root, root) %{_libdir}/mysql/plugin/audit_login_messages.so +%attr(755, root, root) %{_libdir}/mysql/plugin/auth_pam.so +%attr(755, root, root) %{_libdir}/mysql/plugin/auth_pam_compat.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libfnv1a_udf.* +%attr(755, root, root) %{_libdir}/mysql/plugin/libfnv_udf.* +%attr(755, root, root) %{_libdir}/mysql/plugin/libmurmur_udf.* +%attr(755, root, root) %{_libdir}/mysql/plugin/dialog.so +%attr(755, root, root) %{_libdir}/mysql/plugin/keyring_vault.so +%attr(644, root, root) %{_datadir}/greatsql/mysql-log-rotate +%attr(644, root, root) %{_datadir}/greatsql/dictionary.txt +%attr(644, root, root) %{_datadir}/greatsql/innodb_memcached_config.sql +%attr(644, root, root) %{_datadir}/greatsql/install_rewriter.sql +%attr(644, root, root) %{_datadir}/greatsql/uninstall_rewriter.sql +%attr(644, root, root) %{_datadir}/greatsql/install_audit_log.sql +%attr(644, root, root) %{_datadir}/greatsql/sys_masking.sql +%attr(644, root, root) %{_datadir}/greatsql/uninstall_audit_log.sql +%if 0%{?systemd} +%attr(644, root, root) %{_unitdir}/mysqld.service +%attr(644, root, root) %{_unitdir}/mysqld@.service +%else +%attr(755, root, root) %{_sysconfdir}/init.d/mysql +%endif +%attr(644, root, root) %config(noreplace,missingok) %{_sysconfdir}/logrotate.d/mysql +%dir %attr(751, mysql, mysql) /var/lib/mysql +%dir %attr(755, mysql, mysql) /var/run/mysqld +%dir %attr(750, mysql, mysql) /var/lib/mysql-files +%dir %attr(750, mysql, mysql) /var/lib/mysql-keyring + +%attr(755, root, root) %{_datadir}/greatsql/messages_to_clients.txt +%attr(755, root, root) %{_datadir}/greatsql/messages_to_error_log.txt +%attr(755, root, root) %{_datadir}/greatsql/charsets/ +%attr(755, root, root) %{_datadir}/greatsql/bulgarian/ +%attr(755, root, root) %{_datadir}/greatsql/chinese/ +%attr(755, root, root) %{_datadir}/greatsql/czech/ +%attr(755, root, root) %{_datadir}/greatsql/danish/ +%attr(755, root, root) %{_datadir}/greatsql/dutch/ +%attr(755, root, root) %{_datadir}/greatsql/english/ +%attr(755, root, root) %{_datadir}/greatsql/estonian/ +%attr(755, root, root) %{_datadir}/greatsql/french/ +%attr(755, root, root) %{_datadir}/greatsql/german/ +%attr(755, root, root) %{_datadir}/greatsql/greek/ +%attr(755, root, root) %{_datadir}/greatsql/hungarian/ +%attr(755, root, root) %{_datadir}/greatsql/italian/ +%attr(755, root, root) %{_datadir}/greatsql/japanese/ +%attr(755, root, root) %{_datadir}/greatsql/korean/ +%attr(755, root, root) %{_datadir}/greatsql/norwegian-ny/ +%attr(755, root, root) %{_datadir}/greatsql/norwegian/ +%attr(755, root, root) %{_datadir}/greatsql/polish/ +%attr(755, root, root) %{_datadir}/greatsql/portuguese/ +%attr(755, root, root) %{_datadir}/greatsql/romanian/ +%attr(755, root, root) %{_datadir}/greatsql/russian/ +%attr(755, root, root) %{_datadir}/greatsql/serbian/ +%attr(755, root, root) %{_datadir}/greatsql/slovak/ +%attr(755, root, root) %{_datadir}/greatsql/spanish/ +%attr(755, root, root) %{_datadir}/greatsql/swedish/ +%attr(755, root, root) %{_datadir}/greatsql/ukrainian/ + +%files -n greatsql-client +%defattr(-, root, root, -) +%doc %{?license_files_server} +%attr(755, root, root) %{_bindir}/mysql +%attr(755, root, root) %{_bindir}/mysqladmin +%attr(755, root, root) %{_bindir}/mysqlbinlog +%attr(755, root, root) %{_bindir}/mysqlcheck +%attr(755, root, root) %{_bindir}/mysqldecrypt +%attr(755, root, root) %{_bindir}/mysqldump +%attr(755, root, root) %{_bindir}/mysqlimport +%attr(755, root, root) %{_bindir}/mysqlpump +%attr(755, root, root) %{_bindir}/mysqlshow +%attr(755, root, root) %{_bindir}/mysqlslap +%attr(755, root, root) %{_bindir}/mysql_config_editor +%attr(755, root, root) %{_bindir}/mysql_migrate_keyring +%attr(755, root, root) %{_bindir}/mysql_keyring_encryption_test + +%attr(644, root, root) %{_mandir}/man1/mysql.1* +%attr(644, root, root) %{_mandir}/man1/mysqladmin.1* +%attr(644, root, root) %{_mandir}/man1/mysqlbinlog.1* +%attr(644, root, root) %{_mandir}/man1/mysqlcheck.1* +%attr(644, root, root) %{_mandir}/man1/mysqldump.1* +%attr(644, root, root) %{_mandir}/man1/mysqlpump.1* +%attr(644, root, root) %{_mandir}/man1/mysqlimport.1* +%attr(644, root, root) %{_mandir}/man1/mysqlshow.1* +%attr(644, root, root) %{_mandir}/man1/mysqlslap.1* +%attr(644, root, root) %{_mandir}/man1/mysql_config_editor.1* + +%files -n greatsql-devel +%defattr(-, root, root, -) +%doc %{?license_files_server} +%attr(644, root, root) %{_mandir}/man1/comp_err.1* +%attr(644, root, root) %{_mandir}/man1/mysql_config.1* +%attr(755, root, root) %{_bindir}/mysql_config +%ifarch %{multiarchs} +%attr(755, root, root) %{_bindir}/mysql_config-%{__isa_bits} +%endif +%{_includedir}/mysql +%{_datadir}/aclocal/mysql.m4 +%{_libdir}/mysql/lib%{shared_lib_pri_name}.a +%{_libdir}/mysql/libmysqlservices.a +%{_libdir}/mysql/lib%{shared_lib_pri_name}.so +%{_libdir}/pkgconfig/%{shared_lib_pri_name}.pc + +%files -n greatsql-shared +%defattr(-, root, root, -) +%doc %{?license_files_server} +%dir %attr(755, root, root) %{_libdir}/mysql +%attr(644, root, root) %{_sysconfdir}/ld.so.conf.d/mysql-%{_arch}.conf +%{_libdir}/mysql/lib%{shared_lib_pri_name}.so.21* + +%files -n greatsql-test +%defattr(-, root, root, -) +%doc %{?license_files_server} +%attr(-, root, root) %{_datadir}/mysql-test +%attr(755, root, root) %{_bindir}/mysql_client_test +%attr(755, root, root) %{_bindir}/mysqltest +%attr(755, root, root) %{_bindir}/mysqltest_safe_process +%attr(755, root, root) %{_bindir}/mysqlxtest + +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_sleep_is_connected.so +%attr(755, root, root) %{_libdir}/mysql/plugin/auth.so +%attr(755, root, root) %{_libdir}/mysql/plugin/auth_test_plugin.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_example_component1.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_example_component2.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_example_component3.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_log_sink_test.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_backup_lock_service.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_string_service_charset.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_string_service_long.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_string_service.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_pfs_example.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_pfs_example_component_population.so +%attr(755, root, root) %{_libdir}/mysql/plugin/pfs_example_plugin_employee.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_pfs_notification.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_pfs_resource_group.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_udf_registration.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_mysql_current_thread_reader.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_udf_reg_3_func.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_udf_reg_avg_func.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_udf_reg_int_func.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_udf_reg_int_same_func.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_udf_reg_only_3_func.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_udf_reg_real_func.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_udf_unreg_3_func.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_udf_unreg_int_func.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_udf_unreg_real_func.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_sys_var_service_int.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_sys_var_service.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_sys_var_service_same.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_sys_var_service_str.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_status_var_service.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_status_var_service_int.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_status_var_service_reg_only.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_status_var_service_str.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_status_var_service_unreg_only.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_system_variable_source.so +%attr(644, root, root) %{_libdir}/mysql/plugin/daemon_example.ini +%attr(755, root, root) %{_libdir}/mysql/plugin/libdaemon_example.so +%attr(755, root, root) %{_libdir}/mysql/plugin/replication_observers_example_plugin.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_framework.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_services.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_services_threaded.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_session_detach.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_session_attach.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_session_in_thd.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_session_info.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_2_sessions.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_all_col_types.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_cmds_1.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_commit.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_complex.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_errors.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_lock.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_processlist.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_replication.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_shutdown.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_stmt.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_sqlmode.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_stored_procedures_functions.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_views_triggers.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_x_sessions_deinit.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_x_sessions_init.so +%attr(755, root, root) %{_libdir}/mysql/plugin/qa_auth_client.so +%attr(755, root, root) %{_libdir}/mysql/plugin/qa_auth_interface.so +%attr(755, root, root) %{_libdir}/mysql/plugin/qa_auth_server.so +%attr(755, root, root) %{_libdir}/mysql/plugin/test_security_context.so +%attr(755, root, root) %{_libdir}/mysql/plugin/test_services_plugin_registry.so +%attr(755, root, root) %{_libdir}/mysql/plugin/test_udf_services.so +%attr(755, root, root) %{_libdir}/mysql/plugin/udf_example.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_mysqlx_global_reset.so +%attr(755, root, root) %{_libdir}/mysql/plugin/component_test_mysql_runtime_error.so +%attr(755, root, root) %{_libdir}/mysql/plugin/libtest_sql_reset_connection.so + +%if 0%{?rocksdb} +%files -n greatsql-rocksdb +%attr(-, root, root) +%{_libdir}/mysql/plugin/ha_rocksdb.so +%attr(755, root, root) %{_bindir}/ldb +%attr(755, root, root) %{_bindir}/mysql_ldb +%attr(755, root, root) %{_bindir}/sst_dump +%endif + +%files -n greatsql-mysql-router +%defattr(-, root, root, -) +%doc %{src_dir}/router/README.router %{src_dir}/router/LICENSE.router +%dir %{_sysconfdir}/mysqlrouter +%config(noreplace) %{_sysconfdir}/mysqlrouter/mysqlrouter.conf +%attr(644, root, root) %config(noreplace,missingok) %{_sysconfdir}/logrotate.d/mysqlrouter +%{_bindir}/mysqlrouter +%{_bindir}/mysqlrouter_keyring +%{_bindir}/mysqlrouter_passwd +%{_bindir}/mysqlrouter_plugin_info +%attr(644, root, root) %{_mandir}/man1/mysqlrouter.1* +%attr(644, root, root) %{_mandir}/man1/mysqlrouter_passwd.1* +%attr(644, root, root) %{_mandir}/man1/mysqlrouter_plugin_info.1* +%if 0%{?systemd} +%{_unitdir}/mysqlrouter.service +%{_tmpfilesdir}/mysqlrouter.conf +%else +%{_sysconfdir}/init.d/mysqlrouter +%endif +%{_libdir}/mysqlrouter/private/libmysqlharness*.so.* +%{_libdir}/mysqlrouter/private/libmysqlrouter*.so.* +%{_libdir}/mysqlrouter/private/libmysqlrouter_http.so.* +%{_libdir}/mysqlrouter/private/libmysqlrouter_http_auth_backend.so.* +%{_libdir}/mysqlrouter/private/libmysqlrouter_http_auth_realm.so.* +%{_libdir}/mysqlrouter/private/libprotobuf-lite.so.* +%dir %{_libdir}/mysqlrouter +%dir %{_libdir}/mysqlrouter/private +%{_libdir}/mysqlrouter/*.so +%dir %attr(755, mysqlrouter, mysqlrouter) /var/log/mysqlrouter +%dir %attr(755, mysqlrouter, mysqlrouter) /var/run/mysqlrouter + +%files -n greatsql-icu-data-files +%defattr(-, root, root, -) +%doc %{?license_files_server} +%dir %attr(755, root, root) %{_libdir}/mysql/private/icudt69l +%{_libdir}/mysql/private/icudt69l/unames.icu +%{_libdir}/mysql/private/icudt69l/brkitr + +%changelog +* Mon Mar 10 2025 GreatSQL - 8.0.32-27.1 +- Release GreatSQL-8.0.32-27.1 diff --git a/mysql-5.7-sharedlib-rename.patch b/mysql-5.7-sharedlib-rename.patch new file mode 100644 index 0000000..a6c2978 --- /dev/null +++ b/mysql-5.7-sharedlib-rename.patch @@ -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 + diff --git a/mysql_config.sh b/mysql_config.sh new file mode 100644 index 0000000..05007f7 --- /dev/null +++ b/mysql_config.sh @@ -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 + diff --git a/mysqld.cnf b/mysqld.cnf new file mode 100644 index 0000000..8b54db6 --- /dev/null +++ b/mysqld.cnf @@ -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 -- Gitee