diff --git a/README.md b/README.md index bae61589922a9d3a9d63b999fda4e73adcbde5d0..9766be0e94c46d88a3f2fb1fa0b3eb97b8ac42ea 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,206 @@ -# greatsql +# 关于 GreatSQL +--- -#### 介绍 -GreatSQL - GreatSQL focuses on improving the reliability and performance of MGR, supports InnoDB parallel query and other features, and is a domestic MySQL version suitable for financial applications. It can be used as an optional replacement of MySQL or Percona Server. It is completely free and compatible with MySQL or Percona server. +GreatSQL开源数据库专注于提升MGR可靠性及性能,支持InnoDB并行查询等特性,是适用于金融级应用的国内自主MySQL版本;可以作为MySQL或Percona Server的可选替换,用于线上生产环境;且完全免费并兼容MySQL或Percona Server。 -#### 软件架构 -软件架构说明 +## 版本特性 +--- +GreatSQL除了提升MGR性能及可靠性,还引入InnoDB事务锁优化及并行查询优化等特性,以及众多BUG修复。 +选用GreatSQl主要有以下几点优势: +- 提升MGR模式下的大事务并发性能及稳定性 +- 改进MGR的GC及流控算法,以及减少每次发送数据量,避免性能抖动 +- 在MGR集群AFTER模式下,解决了节点加入集群时容易出错的问题 +- 在MGR集群AFTER模式下,强一致性采用多数派原则,以适应网络分区的场景 +- 当MGR节点崩溃时,能更快发现节点异常状态,有效减少切主和异常节点的等待时间 +- 优化InnoDB事务锁机制,在高并发场景中有效提升事务并发性能至少10%以上 +- 实现InnoDB并行查询机制,极大提升聚合查询效率,TPC-H测试中,最高可提升40多倍,平均提升15倍。特别适用于周期性数据汇总报表之类的SAP、财务统计等业务 +- 修复了MGR模式下可能导致数据丢失、性能抖动、节点加入恢复极慢等多个缺陷或BUG -#### 安装教程 +## 注意事项 +--- +运行GreatSQL可能需要依赖jemalloc库(推荐5.2.1+版本),因此请先安装上 +``` +yum -y install jemalloc jemalloc-devel +``` +也可以把自行安装的lib库so文件路径加到系统配置文件中,例如: +``` +[root@greatdb]# cat /etc/ld.so.conf +/usr/local/lib64/ +``` +而后执行下面的操作加载libjemalloc库,并确认是否已存在 +``` +[root@greatdb]# ldconfig -1. xxxx -2. xxxx -3. xxxx +[root@greatdb]# ldconfig -p | grep libjemalloc + libjemalloc.so.2 (libc6,x86-64) => /usr/lib64/libjemalloc.so.2 + libjemalloc.so (libc6,x86-64) => /usr/lib64/libjemalloc.so +``` -#### 使用说明 +## 安装GreatSQL +执行下面的命令安装GreatSQL +``` +#首先,查找GreatSQL +$ yum search GreatSQL +... +greatsql-client.x86_64 : GreatSQL - Client +greatsql-devel.x86_64 : GreatSQL - Development header files and libraries +greatsql-server.x86_64 : GreatSQL: Open source database that can be used to replace MySQL or Percona Server. +greatsql-shared.x86_64 : GreatSQL - Shared libraries -1. xxxx -2. xxxx -3. xxxx +#然后安装 +$ yum install -y greatsql-client greatsql-devel 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 +... +``` -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request +## my.cnf参考 +RPM方式安装后的GreatSQL默认配置不是太合理,建议参考下面这份my.cnf文档: -#### 特技 +- [my.cnf for GreatSQL 8.0.25-16](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/my.cnf-example-greatsql-8.0.25-16) -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/) +调整文档中关于`datadir`目录配置等相关选项,默认 `datadir=/var/lib/mysql` 通常都会改掉,例如替换成 `datadir=/data/GreatSQL`,修改完后保存退出, +替换原来的 `/etc/my.cnf`,然后重启GreatSQL,会重新进行初始化。 +``` +# 新建 /data/GreatSQL 空目录,并修改目录所有者 +$ mkdir -p /data/GreatSQL +$ chown -R mysql:mysql /data/GreatSQL + +# 重启mysqld服务,即自行完成重新初始化 +$ systemctl restart mysqld +``` + +## 登入GreatSQL +首次登入GreatSQL前,需要先找到初始化时随机生成的root密码: +``` +$ grep root /data/GreatSQL/error.log +[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: dt_)MtExl594 +``` + +其中的 **dt_)MtExl594** 就是初始化时随机生成的密码,在登入GreatSQL时输入该密码: +``` +$ mysql -uroot -p'dt_)MtExl594' +mysql: [Warning] Using a password on the command line interface can be insecure. +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 8 +Server version: 8.0.25-16 + +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-8025~%'; +Query OK, 0 rows affected (0.02 sec) +``` +之后就可以用这个新密码再次登入GreatSQL了。 + +## 创建新用户、测试库&表,及写入数据 +修改完root密码后,应尽快创建普通用户,用于数据库的日常使用,减少超级用户root的使用频率,避免误操作意外删除重要数据。 +``` +#创建一个新用户GreatSQL,只允许从192.168.0.0/16网络连入,密码是 GreatSQL-2022 +mysql> CREATE USER GreatSQL@'192.168.0.0/16' IDENTIFIED BY 'GreatSQL-2022'; +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-2022' +... +# 切换到GreatSQL数据库下 +mysql> use GreatSQL; +Database changed + +# 创建新表 +mysql> CREATE TABLE t1(id INT PRIMARY KEY); +Query OK, 0 rows affected (0.07 sec) + +# 写入测试数据 +mysql> INSERT INTO t1 SELECT RAND()*1024; +Query OK, 1 row affected (0.05 sec) +Records: 1 Duplicates: 0 Warnings: 0 + +# 查询数据 +mysql> SELECT * FROM t1; ++-----+ +| id | ++-----+ +| 203 | ++-----+ +1 row in set (0.00 sec) +``` +成功。 + +## 版本历史 +--- +### GreatSQL 8.0 +- [GreatSQL 更新说明 8.0.25-16(2021-5-16)](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/relnotes/changes-greatsql-8-0-25-16-20220516.md) +- [GreatSQL 更新说明 8.0.25-15(2021-8-26)](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/relnotes/changes-greatsql-8-0-25-20210820.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) +- [利用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) +- [MGR优化配置参考](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/mgr-best-options-ref.md) +- [InnoDB并行查询优化参考](https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/innodb-parallel-execute.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-Docker](https://gitee.com/GreatSQL/GreatSQL-Docker),在Docker中运行GreatSQL。 +- [GreatSQL-Ansible](https://gitee.com/GreatSQL/GreatSQL-Ansible),利用ansible一键安装GreatSQL并完成MGR集群部署。 + +## 问题反馈 +--- +- [问题反馈 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/greatsql-8.0.25-15.tar.gz.aa b/greatsql-8.0.25-15.tar.gz.aa deleted file mode 100644 index e005fed33a40c6f0d17de37398a32b7ee73b60dc..0000000000000000000000000000000000000000 Binary files a/greatsql-8.0.25-15.tar.gz.aa and /dev/null differ diff --git a/greatsql-8.0.25-15.tar.gz.ak b/greatsql-8.0.25-15.tar.gz.ak deleted file mode 100644 index 36676d81215a9e8c60d46ab87a414244cc4fa66e..0000000000000000000000000000000000000000 Binary files a/greatsql-8.0.25-15.tar.gz.ak and /dev/null differ diff --git a/greatsql-8.0.25-15.tar.gz b/greatsql-8.0.25-16.tar.gz similarity index 100% rename from greatsql-8.0.25-15.tar.gz rename to greatsql-8.0.25-16.tar.gz diff --git a/greatsql-8.0.25-15.tar.gz.ab b/greatsql-8.0.25-16.tar.gz.aa similarity index 79% rename from greatsql-8.0.25-15.tar.gz.ab rename to greatsql-8.0.25-16.tar.gz.aa index 688e0f269e76f0deb2a3b00a9530692df956caf2..ea192696187fcf9b0b1537df63f667c2afd840d8 100644 Binary files a/greatsql-8.0.25-15.tar.gz.ab and b/greatsql-8.0.25-16.tar.gz.aa differ diff --git a/greatsql-8.0.25-15.tar.gz.ah b/greatsql-8.0.25-16.tar.gz.ab similarity index 82% rename from greatsql-8.0.25-15.tar.gz.ah rename to greatsql-8.0.25-16.tar.gz.ab index 908dce0160b1c8d50937ad6cf2e85ef337031417..fed7df9951162886fce2351d5b53d7a9695f29f9 100644 Binary files a/greatsql-8.0.25-15.tar.gz.ah and b/greatsql-8.0.25-16.tar.gz.ab differ diff --git a/greatsql-8.0.25-15.tar.gz.ac b/greatsql-8.0.25-16.tar.gz.ac similarity index 83% rename from greatsql-8.0.25-15.tar.gz.ac rename to greatsql-8.0.25-16.tar.gz.ac index 3049a24821f87f5afbe68d7e5013cad41ff8090c..9ce22af42744061295106cd1e062b5144255cf4d 100644 Binary files a/greatsql-8.0.25-15.tar.gz.ac and b/greatsql-8.0.25-16.tar.gz.ac differ diff --git a/greatsql-8.0.25-15.tar.gz.ad b/greatsql-8.0.25-16.tar.gz.ad similarity index 80% rename from greatsql-8.0.25-15.tar.gz.ad rename to greatsql-8.0.25-16.tar.gz.ad index d444c5b2687cc07e0aa0bb6b850e2a411580a1e5..b86fbebc2db695c2274d8779e31a10b621c176b3 100644 Binary files a/greatsql-8.0.25-15.tar.gz.ad and b/greatsql-8.0.25-16.tar.gz.ad differ diff --git a/greatsql-8.0.25-15.tar.gz.ae b/greatsql-8.0.25-16.tar.gz.ae similarity index 80% rename from greatsql-8.0.25-15.tar.gz.ae rename to greatsql-8.0.25-16.tar.gz.ae index 8d041453bdd89b257cc05743bd31b952c46f39ce..0ede49f687319f9ce863f2b77b7d4864015eb1f2 100644 Binary files a/greatsql-8.0.25-15.tar.gz.ae and b/greatsql-8.0.25-16.tar.gz.ae differ diff --git a/greatsql-8.0.25-15.tar.gz.ai b/greatsql-8.0.25-16.tar.gz.af similarity index 82% rename from greatsql-8.0.25-15.tar.gz.ai rename to greatsql-8.0.25-16.tar.gz.af index 37b386ffe12b311ff1be9cefe04bc5a3ba389fdf..7ab51152dd9cfba6ed32714c5e47540e2f1ad1df 100644 Binary files a/greatsql-8.0.25-15.tar.gz.ai and b/greatsql-8.0.25-16.tar.gz.af differ diff --git a/greatsql-8.0.25-15.tar.gz.ag b/greatsql-8.0.25-16.tar.gz.ag similarity index 83% rename from greatsql-8.0.25-15.tar.gz.ag rename to greatsql-8.0.25-16.tar.gz.ag index c326a19d470528d4a7a776066c820ca46a29dc1e..4325fc8ab12479d047cec69aad46eccd48eab1f0 100644 Binary files a/greatsql-8.0.25-15.tar.gz.ag and b/greatsql-8.0.25-16.tar.gz.ag differ diff --git a/greatsql-8.0.25-15.tar.gz.aj b/greatsql-8.0.25-16.tar.gz.ah similarity index 86% rename from greatsql-8.0.25-15.tar.gz.aj rename to greatsql-8.0.25-16.tar.gz.ah index 3ee59851839ba0f628c9062bf8c7143cb6039d57..269a341de715b437521c17749d878c8bb55722da 100644 Binary files a/greatsql-8.0.25-15.tar.gz.aj and b/greatsql-8.0.25-16.tar.gz.ah differ diff --git a/greatsql-8.0.25-16.tar.gz.ai b/greatsql-8.0.25-16.tar.gz.ai new file mode 100644 index 0000000000000000000000000000000000000000..5e919afd5f226c2a15e242500fba4808a66dfa82 Binary files /dev/null and b/greatsql-8.0.25-16.tar.gz.ai differ diff --git a/greatsql-8.0.25-15.tar.gz.af b/greatsql-8.0.25-16.tar.gz.aj similarity index 81% rename from greatsql-8.0.25-15.tar.gz.af rename to greatsql-8.0.25-16.tar.gz.aj index 3f7bd510a715975d6523f2e68b2bde3c38eb64ac..da98e7a722d9dc11e230a8406e756517ddb30b45 100644 Binary files a/greatsql-8.0.25-15.tar.gz.af and b/greatsql-8.0.25-16.tar.gz.aj differ diff --git a/greatsql-8.0.25-16.tar.gz.ak b/greatsql-8.0.25-16.tar.gz.ak new file mode 100644 index 0000000000000000000000000000000000000000..935e6c52f3ce56e5cf5084b6cf875682f1c7d7f8 Binary files /dev/null and b/greatsql-8.0.25-16.tar.gz.ak differ diff --git a/greatsql.spec b/greatsql.spec index e4b43c7b602e311676bea8930119cc6588c1ce0f..c1234c2c0e0d499cb78c33e2b7379a17b7ceefb8 100644 --- a/greatsql.spec +++ b/greatsql.spec @@ -4,12 +4,12 @@ %global mysqldatadir /var/lib/mysql %global mysql_version 8.0.25 -%global greatsql_version 15 -%global revision c7feae175e0 +%global greatsql_version 16 +%global revision 8bb0e5af297 %global tokudb_backup_version %{mysql_version}-%{greatsql_version} %global rpm_release 1 -%global release %{greatsql_version}.%{rpm_release}%{?dist} +%global release %{rpm_release}%{?dist} # By default, a build will be done using the system SSL library %{?with_ssl: %global ssl_option -DWITH_SSL=%{with_ssl}} @@ -80,18 +80,18 @@ Group: Applications/Databases Version: %{mysql_version} Release: %{release} License: Copyright (c) 2000, 2018, %{mysql_vendor}. All rights reserved. Under %{?license_type} license as shown in the Description field.. -SOURCE0: greatsql-8.0.25-15.tar.gz -SOURCE101: greatsql-8.0.25-15.tar.gz.aa -SOURCE102: greatsql-8.0.25-15.tar.gz.ab -SOURCE103: greatsql-8.0.25-15.tar.gz.ac -SOURCE104: greatsql-8.0.25-15.tar.gz.ad -SOURCE105: greatsql-8.0.25-15.tar.gz.ae -SOURCE106: greatsql-8.0.25-15.tar.gz.af -SOURCE107: greatsql-8.0.25-15.tar.gz.ag -SOURCE108: greatsql-8.0.25-15.tar.gz.ah -SOURCE109: greatsql-8.0.25-15.tar.gz.ai -SOURCE110: greatsql-8.0.25-15.tar.gz.aj -SOURCE111: greatsql-8.0.25-15.tar.gz.ak +SOURCE0: greatsql-8.0.25-16.tar.gz +SOURCE101: greatsql-8.0.25-16.tar.gz.aa +SOURCE102: greatsql-8.0.25-16.tar.gz.ab +SOURCE103: greatsql-8.0.25-16.tar.gz.ac +SOURCE104: greatsql-8.0.25-16.tar.gz.ad +SOURCE105: greatsql-8.0.25-16.tar.gz.ae +SOURCE106: greatsql-8.0.25-16.tar.gz.af +SOURCE107: greatsql-8.0.25-16.tar.gz.ag +SOURCE108: greatsql-8.0.25-16.tar.gz.ah +SOURCE109: greatsql-8.0.25-16.tar.gz.ai +SOURCE110: greatsql-8.0.25-16.tar.gz.aj +SOURCE111: greatsql-8.0.25-16.tar.gz.ak URL: https://gitee.com/GreatSQL/GreatSQL SOURCE5: mysql_config.sh SOURCE10: boost_1_73_0.tar.gz @@ -1207,5 +1207,8 @@ fi %dir %attr(755, mysqlrouter, mysqlrouter) /var/run/mysqlrouter %changelog +* Wed Jun 1 2022 GreatSQL - 8.0.25-16 +- Release GreatSQL-8.0.25-16 for openEuler + * Mon Apr 25 2022 GreatSQL - 8.0.25-15 - Release GreatSQL-8.0.25-15 for openEuler