diff --git a/GreatSQL-Build/CHANGELOG.md b/GreatSQL-Build/CHANGELOG.md index f77cc0f..85c977d 100644 --- a/GreatSQL-Build/CHANGELOG.md +++ b/GreatSQL-Build/CHANGELOG.md @@ -1,6 +1,8 @@ -# 8.0.32-27 更新日志 +# 8.4.4-4 更新日志 -## 2025.3.31 -* 更新到GreatSQL 8.0.32-27 +## 2025.10.16 +* 更新到GreatSQL 8.4.4-4 +* 修改boost下载源 +* 安装依赖增加libatomic,libicu,perl,protobuf-lite等 -[8.0.32-27]: https://gitee.com/GreatSQL/GreatSQL-Docker/tree/greatsql-8.0.32-27/GreatSQL-Build +[8.4.4-4]: https://gitee.com/GreatSQL/GreatSQL-Docker/tree/greatsql-8.4.4-4/GreatSQL-Build diff --git a/GreatSQL-Build/Dockerfile b/GreatSQL-Build/Dockerfile index 4b582ab..580b4cf 100644 --- a/GreatSQL-Build/Dockerfile +++ b/GreatSQL-Build/Dockerfile @@ -7,11 +7,11 @@ email="greatsql@greatdb.com" \ forum="https://greatsql.cn/forum.php" \ gitee="https://gitee.com/GreatSQL/GreatSQL-Docker" -ARG TARGETARCH \ -OPT_DIR=/opt \ +ARG TARGETARCH +ENV OPT_DIR=/opt \ MYSQL_UID=3306 \ MYSQL_USER=mysql \ -GREATSQL_BUILD_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-8.0.32-27/GreatSQL-Build" \ +GREATSQL_BUILD_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-8.4.4-4/GreatSQL-Build" \ GREATSQL_ENV="greatsql-setenv.sh" \ GREATSQL_BUILD_INIT="greatsql_build_init.sh" @@ -22,7 +22,7 @@ chmod +x /*sh ${OPT_DIR}/*sh && \ /usr/sbin/groupadd -g ${MYSQL_UID} ${MYSQL_USER} && \ /usr/sbin/useradd -u ${MYSQL_UID} -g ${MYSQL_UID} -s /sbin/nologin ${MYSQL_USER} && \ echo '[main]' > /etc/dnf/dnf.conf && \ -microdnf install -y util-linux && \ +microdnf install -y util-linux oracle-epel-release-el8 && \ microdnf clean all ENTRYPOINT ["sh"] diff --git a/GreatSQL-Build/README.md b/GreatSQL-Build/README.md index fe7faf6..b33ebbc 100644 --- a/GreatSQL-Build/README.md +++ b/GreatSQL-Build/README.md @@ -7,18 +7,20 @@ 适用于 OracleLinux/CentOS x86_64/aarch64 环境,更多环境适配请自行修改Dockerfile及相关脚本中的参数。 +**提示**:本项目将不再更新,如果有需要编译 GreatSQL 源码,请参考文档 [编译源码安装](https://greatsql.cn/docs/4-install-guide/6-install-with-source-code.html)。 + ## 基本信息 - 维护者: GreatSQL(greatsql@greatdb.com) - 联系我们:greatsql@greatdb.com -- 最新版本:GreatSQL 8.0.32-27 -- 最后更新时间:2025-03-11 +- 最新版本:GreatSQL 8.4.4-4 +- 最后更新时间:2025-10-16 ## 支持哪些tag -- [latest](https://hub.docker.com/layers/greatsql/greatsql_build/latest/images/sha256-16c3b1f7336578e9ad96593d8e3b02de032ede456a5f4681f11cff538673bdd8) -- [8.0.32-27](https://hub.docker.com/layers/greatsql/greatsql_build/8.0.32-27/images/sha256-16c3b1f7336578e9ad96593d8e3b02de032ede456a5f4681f11cff538673bdd8) -- [8.0.32-26](https://hub.docker.com/layers/greatsql/greatsql_build/8.0.32-26/images/sha256-a8bea01ea86b77866f8e4739859537b6f4b5060178ae06552e6fad4607c4e0cf) -- [8.0.32-25](https://hub.docker.com/layers/greatsql/greatsql/8.0.32-25/images/sha256-6a01d0b1b9107b286601249202803da5b08e9f729b8727f691ce423928994eef) +- [latest](https://hub.docker.com/repository/docker/greatsql/greatsql_build/tags/latest/sha256:8b2a40a07efaafca05ed966f38745f612393ad6febeb81e8f4df4e3f6346589e) +- [8.4.4-4](https://hub.docker.com/repository/docker/greatsql/greatsql_build/tags/8.4.4-4/sha256:8b2a40a07efaafca05ed966f38745f612393ad6febeb81e8f4df4e3f6346589e) +- [8.0.32-27](https://hub.docker.com/repository/docker/greatsql/greatsql_build/tags/8.0.32-27/sha256:16c3b1f7336578e9ad96593d8e3b02de032ede456a5f4681f11cff538673bdd8) +- [8.0.32-26](https://hub.docker.com/repository/docker/greatsql/greatsql_build/tags/8.0.32-26/sha256:2402086558d5913b2f8774c2fe39690237bb90175a22efb022471f0f62c9ac9c) 拉取GreatSQL-Build镜像 @@ -29,7 +31,7 @@ docker pull greatsql/greatsql_build 还可以指定具体版本号 ```shell -docker pull greatsql/greatsql_build:8.0.32-27 +docker pull greatsql/greatsql_build:8.4.4-4 ``` 如果无法从hub.docker.com拉取,可以尝试从阿里云ACR或腾讯云TCR拉取,例如: @@ -112,8 +114,8 @@ sh-4.4# sh ./greatsql_build_init.sh 3.3 make dynamic link for GreatSQL 4. greatsql build completed! -drwxrwxr-x 13 mysql mysql 293 Mar 26 13:27 GreatSQL-8.0.32-27-ol-glibc2.28-x86_64 -/opt/GreatSQL-8.0.32-27-ol-glibc2.28-x86_64/bin/mysqld Ver 8.0.32-27 for Linux on x86_64 (GreatSQL, Release 27, Revision aa66a385910) +drwxrwxr-x 13 mysql mysql 293 Oct 11 11:54 GreatSQL-8.4.4-4-ol-glibc2.28-x86_64 +/opt/GreatSQL-8.4.4-4-ol-glibc2.28-x86_64/bin/mysqld Ver 8.4.4-4 for Linux on x86_64 (GreatSQL, Release 4, Revision d73de75905d) 5. remove files and clean up ``` @@ -121,7 +123,7 @@ drwxrwxr-x 13 mysql mysql 293 Mar 26 13:27 GreatSQL-8.0.32-27-ol-glibc2.28 可以看到已经完成编译,可以将容器中编译好的二进制包文件拷贝到宿主机上,例如: ```shell -docker cp greatsql_build:/opt/GreatSQL-8.0.32-27-ol-glibc2.28-x86_64 /usr/local/ +docker cp greatsql_build:/opt/GreatSQL-8.4.4-4-ol-glibc2.28-x86_64 /usr/local/ ``` 如果宿主机环境也是 OracleLinux/CentOS x86_64 的话,这就可以在宿主机环境下直接使用该二进制文件包了。 diff --git a/GreatSQL-Build/greatsql-setenv.sh b/GreatSQL-Build/greatsql-setenv.sh index 499a42d..113d2bf 100755 --- a/GreatSQL-Build/greatsql-setenv.sh +++ b/GreatSQL-Build/greatsql-setenv.sh @@ -12,10 +12,10 @@ else fi MAJOR_VERSION=8 -MINOR_VERSION=0 -PATCH_VERSION=32 -RELEASE=27 -REVISION=aa66a385910 +MINOR_VERSION=4 +PATCH_VERSION=4 +RELEASE=4 +REVISION=d73de75905d OPT_DIR=/opt GLIBC=`ldd --version | head -n 1 | awk '{print $NF}'` ARCH=`uname -p` @@ -28,7 +28,8 @@ GREATSQL_SRC=greatsql-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${RELEA GREATSQL_BUILD_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${RELEASE}/deppkgs" GREATSQL_MAKESH_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${RELEASE}/GreatSQL-Build" GREATSQL_SRC_DOWNLOAD_URL="https://product.greatdb.com/GreatSQL-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${RELEASE}" -BOOST_SRC_DOWNLOAD_URL="https://archives.boost.io/release/1.77.0/source/" +#BOOST_SRC_DOWNLOAD_URL="https://archives.boost.io/release/1.77.0/source/" +BOOST_SRC_DOWNLOAD_URL="https://sourceforge.net/projects/boost/files/boost/1.77.0/" BOOST="boost_1_77_0" PATCHELF="patchelf-0.14.5" GREATSQL_ENV="greatsql-setenv.sh" @@ -44,7 +45,8 @@ if [ ${ARCH} = "x86_64" ] ; then CMAKE_EXE_LINKER_FLAGS=" -ljemalloc " fi -DEPS="autoconf automake binutils bison bzip2 cmake cyrus-sasl-devel cyrus-sasl-scram gcc-c++ \ -gcc-toolset-11 gcc-toolset-11-annobin-plugin-gcc jemalloc jemalloc-devel krb5-devel libaio-devel \ -libcurl-devel libtirpc-devel libudev-devel m4 make ncurses-devel numactl-devel openldap-devel \ -openssl openssl-devel pam-devel readline-devel zlib-devel findutils procps-ng xz" +DEPS="autoconf automake binutils bison bzip2 cmake cyrus-sasl-devel cyrus-sasl-scram \ +gcc-c++ gcc-toolset-11 gcc-toolset-11-annobin-plugin-gcc gcc-toolset-11-libatomic-devel \ +jemalloc jemalloc-devel krb5-devel libaio-devel libatomic libcurl-devel libicu libicu-devel libtirpc-devel \ +libudev-devel m4 make ncurses-devel numactl-devel openldap-devel openssl openssl-devel \ +pam-devel patchelf perl protobuf-lite readline-devel zlib-devel findutils procps-ng xz" diff --git a/GreatSQL-Shell-Build/CHANGELOG.md b/GreatSQL-Shell-Build/CHANGELOG.md index 5e67914..174798f 100644 --- a/GreatSQL-Shell-Build/CHANGELOG.md +++ b/GreatSQL-Shell-Build/CHANGELOG.md @@ -1,21 +1,8 @@ -# 8.0.32-25 更新日志 +# 8.4.4-4 更新日志 -## 2024.4.2 -* 将更多依赖动态库文件CP到发行包中,方便在其他平台直接运行。 -* 发行包中去掉OS标识。 +## 2025.10.21 +* 更新到8.4.4-4版本 +* 支持仲裁节点 +* 修改gcc依赖 -## 2024.3.12 -* 增加V8(JS语法)支持。 -* 优化Dockerfile,只进行基础镜像构建,依赖包安装、yum update等工作放在外部脚本中完成。 - -## 2024.2.20 -* 优化GreatSQL-Shell-Build,改用从服务器上下载,无需准备本地二进制文件包。 - -## 2024.1.22 - -* 版本更新到GreatSQL 8.0.32-25。 -* 支持从hub.docker.com中拉取镜像并自动完成编译工作。 -* 也支持调用本地脚本完成自动创建GreatSQL Shell编译环境Docker镜像,并自动创建GreatSQL Shell自动编译Docker容器,一条命令即可完成全部编译工作。 -* 编译后的二进制包用xz压缩,压缩比更高,在xz压缩时采用并行方式,降低压缩耗时。 - -[8.0.32-25]: https://gitee.com/GreatSQL/GreatSQL-Docker/tree/greatsql-8.0.32-25/GreatSQL-Shell-Build +[8.4.4-4]: https://gitee.com/GreatSQL/GreatSQL-Docker/tree/greatsql-8.4.4-4/GreatSQL-Shell-Build diff --git a/GreatSQL-Shell-Build/Dockerfile b/GreatSQL-Shell-Build/Dockerfile index 89346e9..a49f926 100644 --- a/GreatSQL-Shell-Build/Dockerfile +++ b/GreatSQL-Shell-Build/Dockerfile @@ -1,3 +1,8 @@ +# Dockerfile for GreatSQL Shell 8.4.4-4 +# +# docker version 26.1.3 (not podman) +# docker buildx build --platform linux/arm64,linux/amd64 -t greatsql/greatsql_shell_build:8.4.4-4 . --push +# FROM centos:8 LABEL maintainer="greatsql.cn" \ @@ -5,11 +10,11 @@ email="greatsql@greatdb.com" \ forum="https://greatsql.cn/forum.php" \ gitee="https://gitee.com/GreatSQL/GreatSQL-Shell-Docker" -ENV LANG en_US.utf8 -ARG OPT_DIR=/opt \ +ARG TARGETARCH +ENV OPT_DIR=/opt \ MYSQL_UID=3306 \ MYSQL_USER=mysql \ -GREATSQLSH_BUILD_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-8.0.32-25/GreatSQL-Shell-Build" \ +GREATSQLSH_BUILD_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-8.4.4-4/GreatSQL-Shell-Build" \ GREATSQLSH_ENV="greatsqlsh-setenv.sh" \ ENTRYPOINT="docker-entrypoint.sh" @@ -22,7 +27,7 @@ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ rm -f /lib/systemd/system/basic.target.wants/*;\ rm -f /lib/systemd/system/anaconda.target.wants/*; \ -rm -f /etc/yum.repos.d/CentOS-Linux-* ; \ +rm -f /etc/yum.repos.d/* ; \ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo > /dev/null 2>&1 && \ sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo > /dev/null 2>&1 && \ dnf -y update > /dev/null 2>&1 ; \ diff --git a/GreatSQL-Shell-Build/README.md b/GreatSQL-Shell-Build/README.md index a84e836..4d12a7f 100644 --- a/GreatSQL-Shell-Build/README.md +++ b/GreatSQL-Shell-Build/README.md @@ -6,22 +6,25 @@ 适用于CentOS 8 x86_64/aarch64 环境,更多环境适配请自行修改Dockerfile及相关脚本中的参数。 +**提示**:本项目将不再更新,如果有需要编译 GreatSQL Shell 源码,请参考本项目中的几个编译脚本。 + ## 基本信息 - 维护者: GreatSQL(greatsql@greatdb.com) - 联系我们: greatsql@greatdb.com -- 最新版本:GreatSQL 8.0.32-25 -- 最后更新时间:2024-03-12 +- 最新版本:GreatSQL 8.4.4-4 - 支持CPU架构:x86_64、aarch64 ## 支持哪些tag -- [latest](https://hub.docker.com/layers/greatsql/greatsql_shell_build/latest/images/sha256-8728758467097c48da15c177bb8692b4e008c3626638a2385b2a6fe4eef44687?context=explore), [8.0.32-25](https://hub.docker.com/layers/greatsql/greatsql_shell_build/8.0.32-25/images/sha256-8728758467097c48da15c177bb8692b4e008c3626638a2385b2a6fe4eef44687?context=explore) -- [latest-arch64](https://hub.docker.com/layers/greatsql/greatsql_shell_build/latest-aarch64/images/sha256-810f6a57cc065aae88c29ffd02fdccdaf383c806414ac3848e43dbedfa5f727c?context=explore), [8.0.32-25-aarch64](https://hub.docker.com/layers/greatsql/greatsql_shell_build/8.0.32-25-aarch64/images/sha256-810f6a57cc065aae88c29ffd02fdccdaf383c806414ac3848e43dbedfa5f727c?context=explore) +- [latest](https://hub.docker.com/repository/docker/greatsql/greatsql_shell_build/tags/latest/sha256:cfa03ed884e3cf9007ed80dc078834f73c892d2c2ed6fb939099b773c37514a8) +- [8.4.4-4](https://hub.docker.com/repository/docker/greatsql/greatsql_shell_build/tags/8.4.4-4/sha256:cfa03ed884e3cf9007ed80dc078834f73c892d2c2ed6fb939099b773c37514a8) +- [8.0.32-25](https://hub.docker.com/repository/docker/greatsql/greatsql_shell_build/tags/8.0.32-25/sha256:8728758467097c48da15c177bb8692b4e008c3626638a2385b2a6fe4eef44687) +- [8.0.32-25-aarch64](https://hub.docker.com/repository/docker/greatsql/greatsql_shell_build/tags/8.0.32-25-aarch64/sha256:810f6a57cc065aae88c29ffd02fdccdaf383c806414ac3848e43dbedfa5f727c) ## 如何使用GreatSQL-Shell-Build 例如: ```shell -$ docker run -itd --hostname greatsqlsh --name greatsqlsh greatsql/greatsql_shell_build:8.0.32-25 bash +$ docker run -itd --hostname greatsqlsh --name greatsqlsh greatsql/greatsql_shell_build:8.4.4-4 bash ``` 执行上述命令后,会创建一个GreatSQL-Shell编译环境容器,并在容器中自动完成GreatSQL-Shell编译工作。 @@ -53,31 +56,32 @@ $ docker logs greatsqlsh | tail 5.1 compiling mysqlclient and mysqlxclient 5.2 compiling MySQL Shell for GreatSQL -6. MySQL Shell for GreatSQL 8.0.32-25 build completed! - 6.1 MySQL Shell for GreatSQL 8.0.32-25 version: -/opt/greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64/bin/mysqlsh Ver 8.0.32 for Linux on x86_64 - for MySQL 8.0.32 (Source distribution) +6. MySQL Shell for GreatSQL 8.4.4-4 build completed! + 6.1 MySQL Shell for GreatSQL 8.4.4-4 version: +/opt/greatsql-shell-8.4.4-4-centos-glibc2.28-x86_64/bin/mysqlsh Ver 8.4.4 for Linux on x86_64 - for MySQL 8.4.4 (Source distribution) 6.2 TARBALL file: --rw-r--r-- 1 root root 20378992 Mar 12 10:33 /opt/greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64.tar.xz +-rw-r--r-- 1 root root 40284300 Oct 21 09:38 /opt/greatsql-shell-8.4.4-4-glibc2.28-x86_64.tar.xz ``` +**提示**:如果服务器在墙内或内网,可能由于下载部分资源失败而无法完成构建,请手动处理文件下载需求。 接下来回退到宿主机,将容器中的二进制包拷贝出来 ```shell -$ docker cp greatsqlsh:/opt/greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64.tar.xz /usr/local/ +$ docker cp greatsqlsh:/opt/greatsql-shell-8.4.4-4-glibc2.28-x86_64.tar.xz /usr/local/ ``` 然后解压缩,就可以在宿主机环境下使用了,例如: ```shell # 先安装几个必要的依赖包 $ dnf install -y libssh python38 python38-libs python38-pyyaml -$ pip3.8 install --user certifi pyclamd +$ pip3.8 install -i https://pypi.tuna.tsinghua.edu.cn/simple --user certifi pyclamd numpy # 测试使用 -$ /usr/local/greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64/bin/mysqlsh -MySQL Shell 8.0.32 +$ /usr/local/greatsql-shell-8.4.4-4-glibc2.28-x86_64/bin/mysqlsh ... -Type '\help' or '\?' for help; '\quit' to exit. - MySQL JS > \q + MySQL 127.0.0.1:3306 ssl SQL > \py +Switching to Python mode... + MySQL 127.0.0.1:3306 ssl Py > \q Bye! ``` @@ -87,7 +91,8 @@ Bye! - Dockerfile,用于构建Docker编译环境 - greatsqlsh-automake.sh,用于实现在Docker容器中自动化编译的脚本 - greatsqlsh-setenv.sh,通用环境变量设置脚本 -- mysqlsh-for-greatsql-8.0.32.patch,需要对MySQL Shell打补丁,才能支持GreatSQL中特有的仲裁节点特性 +- mysqlsh-for-greatsql-8.4.4.patch,需要对MySQL Shell打补丁,才能支持GreatSQL中特有的仲裁节点特性 +- mysql-8.4.4.patch,需要对MySQL源码包打补丁,修改gcc依赖版本 ## 其他分支 - 如果您想尝试支持Python 3.10版本的GreatSQL Shell,可参考 [earl86](https://gitee.com/earl86) 维护的[GreatSQL-Shell-Build分支](https://gitee.com/earl86/GreatSQL-Docker/tree/master/GreatSQL-Shell-Build)。 diff --git a/GreatSQL-Shell-Build/docker-entrypoint.sh b/GreatSQL-Shell-Build/docker-entrypoint.sh index 510bbf0..2985877 100755 --- a/GreatSQL-Shell-Build/docker-entrypoint.sh +++ b/GreatSQL-Shell-Build/docker-entrypoint.sh @@ -7,23 +7,22 @@ touch ${MAKELOG} && \ chown ${MYSQL_USER}:${MYSQL_USER} ${MAKELOG} && \ chmod 0777 ${MAKELOG} && \ echo "0.2 install all DEPS(autoconf, gcc ...)" && \ +rm -f /etc/yum.repos.d/CentOS*Linux-* && \ +rm -f /etc/yum.repos.d/CentOS*Stream-* && \ +dnf clean all && dnf makecache && \ dnf install -y ${DEPS} > /dev/null 2>&1 && \ echo 'source /opt/rh/gcc-toolset-11/enable' >> /root/.bash_profile && \ -rm -f /etc/yum.repos.d/CentOS-Linux-* && \ -echo "0.3 download ${YUM_REPOS}.tar.xz and ${V8_LIBS_PKG}.tar.xz" && \ +echo "0.3 download ${YUM_REPOS}.tar.xz" && \ mkdir -p ${OPT_DIR}/${V8_DEPS} && \ wget -c -O ${OPT_DIR}/${V8_DEPS}/${YUM_REPOS}.tar.xz ${GREATSQL_BUILD_DOWNLOAD_URL}/${V8_DEPS}/${YUM_REPOS}.tar.xz >> ${MAKELOG} 2>&1 && \ -wget -c -O ${OPT_DIR}/${V8_DEPS}/${V8_LIBS_PKG}.tar.xz ${GREATSQL_BUILD_DOWNLOAD_URL}/${V8_DEPS}/${V8_LIBS_PKG}.tar.xz >> ${MAKELOG} 2>&1 && \ -echo "0.4 install ${YUM_REPOS} and ${V8_LIBS_PKG}" && \ +echo "0.4 install ${YUM_REPOS}" && \ cd ${OPT_DIR}/${V8_DEPS} && \ tar xf ${YUM_REPOS}*z -C ${OPT_DIR}/${V8_DEPS} && \ -tar xf ${V8_LIBS_PKG}*z -C ${OPT_DIR}/${V8_DEPS} && \ rpm -ivhU --nodeps ${YUM_REPOS}/centos*noarch.rpm >> ${MAKELOG} 2>&1 && \ dnf install -y epel-release >> ${MAKELOG} 2>&1 && \ dnf install -y 'dnf-command(config-manager)' >> ${MAKELOG} 2>&1 && \ dnf config-manager --enable epel-testing epel-modular epel-testing-modular >> ${MAKELOG} 2>&1 && \ rpm -Uvh ${YUM_REPOS}/epel-release*noarch.rpm >> ${MAKELOG} 2>&1 && \ -dnf install -y ${V8_LIBS_PKG}/*rpm >> ${MAKELOG} 2>&1 && \ echo && \ echo "1. downloading sourcecode tarballs and extract" cd ${OPT_DIR} && \ @@ -31,6 +30,7 @@ echo " 1.1 downloading sourcecode tarballs ..." && \ wget -c -O ${GREATSQLSH_ENV} ${GREATSQLSH_BUILD_DOWNLOAD_URL}/${GREATSQLSH_ENV} >> ${MAKELOG} 2>&1 && \ wget -c -O ${GREATSQLSH_MAKESH} ${GREATSQLSH_BUILD_DOWNLOAD_URL}/${GREATSQLSH_MAKESH} >> ${MAKELOG} 2>&1 && \ wget -c -O ${GREATSQLSH_PATCH} ${GREATSQLSH_BUILD_DOWNLOAD_URL}/${GREATSQLSH_PATCH} >> ${MAKELOG} 2>&1 && \ +wget -c -O ${MYSQL_PATCH} ${GREATSQLSH_BUILD_DOWNLOAD_URL}/${MYSQL_PATCH} >> ${MAKELOG} 2>&1 && \ wget -c -O ${RPCGEN} ${GREATSQL_BUILD_DOWNLOAD_URL}/${RPCGEN} >> ${MAKELOG} 2>&1 && \ wget -c -O ${PATCHELF}.tar.gz ${GREATSQL_BUILD_DOWNLOAD_URL}/${PATCHELF}.tar.gz >> ${MAKELOG} 2>&1 && \ wget -c -O ${PROTOBUF}.tar.xz ${GREATSQL_BUILD_DOWNLOAD_URL}/${PROTOBUF}.tar.xz >> ${MAKELOG} 2>&1 && \ @@ -38,6 +38,8 @@ wget -c -O ${ANTLR}.tar.xz ${GREATSQL_BUILD_DOWNLOAD_URL}/${ANTLR}.tar.xz >> ${M wget -c -O ${BOOST}.tar.gz ${BOOST_SRC_DOWNLOAD_URL}/${BOOST}.tar.gz >> ${MAKELOG} 2>&1 && \ wget -c -O ${MYSQLSH}.tar.gz ${MYSQLSH_SRC_DOWNLOAD_URL}/${MYSQLSH}.tar.gz >> ${MAKELOG} 2>&1 && \ wget -c -O ${MYSQL}.tar.gz ${MYSQL_SRC_DOWNLOAD_URL}/${MYSQL}.tar.gz >> ${MAKELOG} 2>&1 && \ +wget -c -O ${JDK}.tar.gz ${JDK_DOWNLOAD_URL} >> ${MAKELOG} 2>&1 && \ +wget -c -O ${GRAALVM}.tar.gz ${GRAALVM_DOWNLOAD_URL} >> ${MAKELOG} 2>&1 && \ echo " 1.2 extract tarballs ..." && \ tar xf ${OPT_DIR}/${PATCHELF}*z && \ tar xf ${OPT_DIR}/${PROTOBUF}*z && \ @@ -45,6 +47,8 @@ tar xf ${OPT_DIR}/${ANTLR}*z && \ tar xf ${OPT_DIR}/${BOOST}*z && \ tar xf ${OPT_DIR}/${MYSQL}*z && \ tar xf ${OPT_DIR}/${MYSQLSH}*z && \ +tar xf ${OPT_DIR}/${JDK}*z && \ +tar xf ${OPT_DIR}/${GRAALVM}*z && \ chown -R ${MYSQL_USER}:${MYSQL_USER} ${OPT_DIR} && \ dnf install -y ${RPCGEN} >> ${MAKELOG} 2>&1 && \ chmod +x ${OPT_DIR}/*sh && \ @@ -70,9 +74,9 @@ echo && \ echo "5. compiling MySQL Shell for GreatSQL" su - ${MYSQL_USER} -s /bin/bash -c "cd ${OPT_DIR}; /bin/sh ${OPT_DIR}/${GREATSQLSH_MAKESH}" && \ echo && \ -echo "6. MySQL Shell for GreatSQL 8.0.32-25 build completed!" -pip3.8 install --user certifi pyclamd >> ${MAKELOG} 2>&1 && \ -echo " 6.1 MySQL Shell for GreatSQL 8.0.32-25 version:" && \ +echo "6. MySQL Shell for GreatSQL ${MYSQL_VERSION}-${RELEASE} build completed!" +pip3.8 install -i https://pypi.tuna.tsinghua.edu.cn/simple --user certifi pyclamd numpy >> ${MAKELOG} 2>&1 && \ +echo " 6.1 MySQL Shell for GreatSQL ${MYSQL_VERSION}-${RELEASE} version:" && \ ${BASE_DIR}/bin/mysqlsh --version && \ cd ${OPT_DIR} && \ tar cf ${GREATSQLSH}.tar ${GREATSQLSH} >> ${MAKELOG} 2>&1 && \ diff --git a/GreatSQL-Shell-Build/greatsqlsh-automake.sh b/GreatSQL-Shell-Build/greatsqlsh-automake.sh index a9ddeea..5e9b798 100755 --- a/GreatSQL-Shell-Build/greatsqlsh-automake.sh +++ b/GreatSQL-Shell-Build/greatsqlsh-automake.sh @@ -3,15 +3,27 @@ echo " 5.1 compiling mysqlclient and mysqlxclient" && \ cd ${OPT_DIR}/${MYSQL} && \ +patch -p1 -f < ${OPT_DIR}/${MYSQL_PATCH} >> ${MAKELOG} 2>&1 && \ rm -fr bld && \ mkdir bld && \ cd bld && \ cmake .. -DBOOST_INCLUDE_DIR=${OPT_DIR}/${BOOST} \ -DLOCAL_BOOST_DIR=${OPT_DIR}/${BOOST} \ --DWITH_SSL=system -DWITH_MYSQLX_USE_PROTOBUF_FULL=OFF >> ${MAKELOG} 2>&1 && \ -cmake --build . --target mysqlclient -- -j${MAKE_JOBS} >> ${MAKELOG} 2>&1 ; \ +-DWITH_AUTHENTICATION_KERBEROS=ON \ +-DWITH_PROTOBUF=system \ +-DWITH_SSL=system \ +-DWITH_ZSTD=system \ +>> ${MAKELOG} 2>&1 && \ +cmake --build . --target mysqlclient -- -j${MAKE_JOBS} >> ${MAKELOG} 2>&1 && \ cmake --build . --target mysqlxclient -- -j${MAKE_JOBS} >> ${MAKELOG} 2>&1 && \ -echo " 5.2 compiling MySQL Shell for GreatSQL" && \ +echo " 5.2 prepare jdk" && \ +export GRAALJDK_ROOT=${OPT_DIR}/${JDK} && \ +export JAVA_HOME=${OPT_DIR}/${GRAALVM} && \ +export PATH=$PATH:${OPT_DIR}/${GRAALVM} && \ +cd ${OPT_DIR}/${MYSQLSH}/ext/polyglot && \ +echo " 5.3 mvn package" && \ +mvn package >> ${MAKELOG} 2>&1 && \ +echo " 5.4 compiling MySQL Shell for GreatSQL" && \ cd ${OPT_DIR}/${MYSQLSH} && \ patch -p1 -f < ${OPT_DIR}/${GREATSQLSH_PATCH} >> ${MAKELOG} 2>&1 && \ rm -fr bld && \ @@ -23,44 +35,41 @@ cmake .. \ -DMYSQL_BUILD_DIR=${OPT_DIR}/${MYSQL}/bld/ \ -DBUILD_SOURCE_PACKAGE=0 \ -DWITH_PROTOBUF=system \ --DHAVE_V8=1 \ --DV8_INCLUDE_DIR=/usr/include \ --DV8_LIB_DIR=/usr/lib64 \ -DHAVE_PYTHON=1 \ -DBUNDLED_ANTLR_DIR=/usr/local/antlr4/ \ --DPYTHON_LIBRARIES=/usr/lib64/python3.8 -DPYTHON_INCLUDE_DIRS=/usr/include/python3.8/ >> ${MAKELOG} 2>&1 && \ +-DHAVE_JS=ON \ +-DBUNDLED_POLYGLOT_DIR=${OPT_DIR}/${MYSQLSH}/ext/polyglot/polyglot-nativeapi-native-library/target \ +>> ${MAKELOG} 2>&1 && \ make -j${MAKE_JOBS} >> ${MAKELOG} 2>&1 && \ make -j${MAKE_JOBS} install >> ${MAKELOG} 2>&1 && \ -cp /usr/local/lib/libprotobuf.so.30 ${BASE_DIR}/lib/mysqlsh/ && -cp /lib64/libnode.so.93 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libbrotlienc.so.1.0.6 ${BASE_DIR}/lib/mysqlsh/libbrotlienc.so.1 && \ -cp /lib64/libbrotlidec.so.1.0.6 ${BASE_DIR}/lib/mysqlsh/libbrotlidec.so.1 && \ -cp /lib64/libuv.so.1.0.0 ${BASE_DIR}/lib/mysqlsh/libuv.so.1 && \ -cp /lib64/libbrotlicommon.so.1.0.6 ${BASE_DIR}/lib/mysqlsh/libbrotlicommon.so.1 && \ -cp /lib64/libssl.so.1.1.1k ${BASE_DIR}/lib/mysqlsh/libssl.so.1.1 && \ -cp /lib64/libcrypto.so.1.1.1k ${BASE_DIR}/lib/mysqlsh/libcrypto.so.1.1 && \ -cp /lib64/libcrypt.so.1.1.0 ${BASE_DIR}/lib/mysqlsh/libcrypt.so.1.1 && \ -cp /lib64/libssh.so.4.8.5 ${BASE_DIR}/lib/mysqlsh/libssh.so.4 && \ -cp /lib64/libpython3.8.so.1.0 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libnghttp2.so.14.19.0 ${BASE_DIR}/lib/mysqlsh/libnghttp2.so.14 && \ -cp /lib64/libpcre2-8.so.0.7.1 ${BASE_DIR}/lib/mysqlsh/libpcre2-8.so.0 && \ -cp /lib64/libpthread.so.0 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libdl.so.2 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libresolv.so.2 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/librt.so.1 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libutil.so.1 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libcurl.so.4 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libm.so.6 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libstdc++.so.6 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libgcc_s.so.1 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libc.so.6 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libz.so.1 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libgssapi_krb5.so.2 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libkrb5.so.3 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libk5crypto.so.3 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libcom_err.so.2 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libcrypt.so.1 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libuuid.so.1 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libkrb5support.so.0 ${BASE_DIR}/lib/mysqlsh/ && \ -cp /lib64/libkeyutils.so.1 ${BASE_DIR}/lib/mysqlsh/ && \ +cp /usr/local/lib/libprotobuf.so.30 ${BASE_DIR}/lib/mysqlsh/ ; +cp /lib64/libbrotlienc.so.1.0.6 ${BASE_DIR}/lib/mysqlsh/libbrotlienc.so.1 ; \ +cp /lib64/libbrotlidec.so.1.0.6 ${BASE_DIR}/lib/mysqlsh/libbrotlidec.so.1 ; \ +cp /lib64/libuv.so.1.0.0 ${BASE_DIR}/lib/mysqlsh/libuv.so.1 ; \ +cp /lib64/libbrotlicommon.so.1.0.6 ${BASE_DIR}/lib/mysqlsh/libbrotlicommon.so.1 ; \ +cp /lib64/libssl.so.1.1.1k ${BASE_DIR}/lib/mysqlsh/libssl.so.1.1 ; \ +cp /lib64/libcrypto.so.1.1.1k ${BASE_DIR}/lib/mysqlsh/libcrypto.so.1.1 ; \ +cp /lib64/libcrypt.so.1.1.0 ${BASE_DIR}/lib/mysqlsh/libcrypt.so.1.1 ; \ +cp /lib64/libssh.so.4.8.5 ${BASE_DIR}/lib/mysqlsh/libssh.so.4 ; \ +cp /lib64/libpython3.8.so.1.0 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libpcre2-8.so.0.7.1 ${BASE_DIR}/lib/mysqlsh/libpcre2-8.so.0 ; \ +cp /lib64/libpthread.so.0 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libdl.so.2 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libresolv.so.2 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/librt.so.1 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libutil.so.1 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libcurl.so.4 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libm.so.6 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libstdc++.so.6 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libgcc_s.so.1 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libc.so.6 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libz.so.1 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libgssapi_krb5.so.2 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libkrb5.so.3 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libk5crypto.so.3 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libcom_err.so.2 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libcrypt.so.1 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libuuid.so.1 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libkrb5support.so.0 ${BASE_DIR}/lib/mysqlsh/ ; \ +cp /lib64/libkeyutils.so.1 ${BASE_DIR}/lib/mysqlsh/ ; \ cp /lib64/libselinux.so.1 ${BASE_DIR}/lib/mysqlsh/ diff --git a/GreatSQL-Shell-Build/greatsqlsh-setenv.sh b/GreatSQL-Shell-Build/greatsqlsh-setenv.sh index d40dd72..5b80b00 100755 --- a/GreatSQL-Shell-Build/greatsqlsh-setenv.sh +++ b/GreatSQL-Shell-Build/greatsqlsh-setenv.sh @@ -12,41 +12,45 @@ else fi OPT_DIR=/opt -MYSQL_VERSTION=8.0.32 -RELEASE=25 +MYSQL_VERSION=8.4.4 +RELEASE=4 GLIBC=`ldd --version | head -n 1 | awk '{print $NF}'` ARCH=`uname -p` OS=`grep '^ID=' /etc/os-release | sed 's/.*"\(.*\)".*/\1/ig'` MAKELOG=/tmp/greatsqlsh-automake.log MYSQL_USER=mysql -GREATSQLSH=greatsql-shell-${MYSQL_VERSTION}-${RELEASE}-glibc${GLIBC}-${ARCH} +GREATSQLSH=greatsql-shell-${MYSQL_VERSION}-${RELEASE}-glibc${GLIBC}-${ARCH} BASE_DIR=${OPT_DIR}/${GREATSQLSH} GREATSQL_BUILD_DOWNLOAD_URL="https://product.greatdb.com/GreatSQL-Docker/deppkgs" -GREATSQLSH_BUILD_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-8.0.32-25/GreatSQL-Shell-Build" -BOOST_SRC_DOWNLOAD_URL="https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source" +GREATSQLSH_BUILD_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-8.4.4-4/GreatSQL-Shell-Build" +BOOST_SRC_DOWNLOAD_URL="https://sourceforge.net/projects/boost/files/boost/1.77.0/" MYSQL_SRC_DOWNLOAD_URL="https://downloads.mysql.com/archives/get/p/23/file" MYSQLSH_SRC_DOWNLOAD_URL="https://downloads.mysql.com/archives/get/p/43/file" +JDK_DOWNLOAD_URL="https://github.com/oracle/graal/archive/refs/tags/jdk-23.0.1.zip" DEPS="autoconf automake binutils bison cmake cyrus-sasl-devel cyrus-sasl-scram gcc-c++ \ gcc-toolset-11 gcc-toolset-11-annobin-plugin-gcc libcurl-devel libssh libssh-config libssh-devel \ -libtirpc-devel libudev-devel libuuid libuuid-devel m4 make ncurses-devel openssl openssl-devel \ -patch python38 python38-devel python38-libs python38-pyyaml uuid wget zlib-devel" \ +libtirpc-devel libudev-devel libuuid libuuid-devel m4 make maven ncurses-devel openssl openssl-devel \ +patch protobuf-lite python38 python38-devel python38-libs python38-pyyaml uuid wget zlib-devel brotli brotli-devel" \ V8_DEPS="deps-v8" YUM_REPOS="yum-repos" ANTLR="antlr4-4.10" BOOST="boost_1_77_0" -MYSQL="mysql-8.0.32" -MYSQLSH="mysql-shell-8.0.32-src" +MYSQL="mysql-8.4.4" +MYSQLSH="mysql-shell-8.4.4-src" PATCHELF="patchelf-0.14.5" PROTOBUF="protobuf-3.19.4" -GREATSQLSH_PATCH="mysqlsh-for-greatsql-8.0.32.patch" +MYSQL_PATCH="mysql-8.4.4.patch" +GREATSQLSH_PATCH="mysqlsh-for-greatsql-8.4.4.patch" GREATSQLSH_MAKESH="greatsqlsh-automake.sh" GREATSQLSH_ENV="greatsqlsh-setenv.sh" +JDK="graal-jdk-23.0.1" +GRAALVM="graalvm-community-openjdk-23.0.1+11.1" if [ "`uname -p`" = "aarch64" ] ; then RPCGEN="rpcgen-1.3.1-4.el8.aarch64.rpm" - V8_LIBS_PKG="v8-libs-aarch64" + GRAALVM_DOWNLOAD_URL="https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-23.0.1/graalvm-community-jdk-23.0.1_linux-aarch64_bin.tar.gz" else RPCGEN="rpcgen-1.3.1-4.el8.x86_64.rpm" - V8_LIBS_PKG="v8-libs-x86_64" + GRAALVM_DOWNLOAD_URL="https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-23.0.1/graalvm-community-jdk-23.0.1_linux-x64_bin.tar.gz" fi diff --git a/GreatSQL-Shell-Build/mysql-8.4.4.patch b/GreatSQL-Shell-Build/mysql-8.4.4.patch new file mode 100644 index 0000000..13cbd52 --- /dev/null +++ b/GreatSQL-Shell-Build/mysql-8.4.4.patch @@ -0,0 +1,38 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2268d852..5c0ee707 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -315,7 +315,9 @@ IF(CMAKE_HOST_UNIX AND NOT FORCE_UNSUPPORTED_COMPILER + ELSE() + SET(ALTERNATIVE_PATHS "/opt/rh/devtoolset-11") + ENDIF() +- ELSEIF(LINUX_RHEL8 OR LINUX_RHEL9) ++ ELSEIF(LINUX_RHEL8) ++ SET(ALTERNATIVE_PATHS "/opt/rh/gcc-toolset-11") ++ ELSEIF(LINUX_RHEL9) + SET(ALTERNATIVE_PATHS "/opt/rh/gcc-toolset-12") + ENDIF() + +@@ -368,7 +370,7 @@ IF(CMAKE_HOST_UNIX AND NOT FORCE_UNSUPPORTED_COMPILER + MESSAGE(STATUS "Using ${ALTERNATIVE_GCC}") + MESSAGE(STATUS "Using ${ALTERNATIVE_GPP}") + ELSE() +- IF(LINUX_RHEL7) ++ IF(LINUX_RHEL7) + IF(MY_HOST_MACHINE_NAME MATCHES "aarch64") + SET(DEV_PACKAGES + "devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-binutils") +@@ -376,7 +378,12 @@ IF(CMAKE_HOST_UNIX AND NOT FORCE_UNSUPPORTED_COMPILER + SET(DEV_PACKAGES + "devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils") + ENDIF() +- ELSEIF(LINUX_RHEL8 OR LINUX_RHEL9) ++ ELSEIF(LINUX_RHEL8) ++ SET(DEV_PACKAGES ++ "gcc-toolset-11-gcc gcc-toolset-11-gcc-c++ gcc-toolset-11-binutils") ++ STRING_APPEND(DEV_PACKAGES " gcc-toolset-11-annobin-annocheck") ++ STRING_APPEND(DEV_PACKAGES " gcc-toolset-11-annobin-plugin-gcc") ++ ELSEIF(LINUX_RHEL9) + SET(DEV_PACKAGES + "gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils") + STRING_APPEND(DEV_PACKAGES " gcc-toolset-12-annobin-annocheck") diff --git a/GreatSQL-Shell-Build/mysqlsh-for-greatsql-8.0.32.patch b/GreatSQL-Shell-Build/mysqlsh-for-greatsql-8.0.32.patch deleted file mode 100644 index 1b2b968..0000000 --- a/GreatSQL-Shell-Build/mysqlsh-for-greatsql-8.0.32.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/mysqlshdk/libs/mysql/group_replication.cc b/mysqlshdk/libs/mysql/group_replication.cc -index 436a62b15..8f8958ce7 100644 ---- a/mysqlshdk/libs/mysql/group_replication.cc -+++ b/mysqlshdk/libs/mysql/group_replication.cc -@@ -107,6 +107,8 @@ std::string to_string(const Member_role role) { - return "PRIMARY"; - case Member_role::SECONDARY: - return "SECONDARY"; -+ case Member_role::ARBITRATOR: -+ return "ARBITRATOR"; - case Member_role::NONE: - return "NONE"; - } -@@ -118,6 +120,8 @@ Member_role to_member_role(const std::string &role) { - return Member_role::PRIMARY; - } else if (shcore::str_caseeq("SECONDARY", role)) { - return Member_role::SECONDARY; -+ } else if (shcore::str_caseeq("ARBITRATOR", role)) { -+ return Member_role::ARBITRATOR; - } else if (role.empty()) { - return Member_role::NONE; - } else { -diff --git a/mysqlshdk/libs/mysql/group_replication.h b/mysqlshdk/libs/mysql/group_replication.h -index 05dfa54bf..23ccf6a76 100644 ---- a/mysqlshdk/libs/mysql/group_replication.h -+++ b/mysqlshdk/libs/mysql/group_replication.h -@@ -73,7 +73,7 @@ enum class Member_state { - MISSING - }; - --enum class Member_role { PRIMARY, SECONDARY, NONE }; -+enum class Member_role { PRIMARY, SECONDARY, ARBITRATOR, NONE }; - - enum class Topology_mode { SINGLE_PRIMARY, MULTI_PRIMARY, NONE }; - -diff --git a/mysqlshdk/scripting/jscript_context.cc b/mysqlshdk/scripting/jscript_context.cc -index 5f4675174..0e7ff1e26 100644 ---- a/mysqlshdk/scripting/jscript_context.cc -+++ b/mysqlshdk/scripting/jscript_context.cc -@@ -1557,7 +1557,7 @@ v8::Local v8_array_buffer(v8::Isolate *isolate, - - std::string to_string(v8::Isolate *isolate, v8::Local obj) { - const v8::String::Utf8Value utf8{ -- isolate, obj->IsSymbol() ? obj.As()->Name() : obj}; -+ isolate, obj->IsSymbol() ? obj.As()->Description() : obj}; - const auto ptr = *utf8; - return nullptr == ptr ? "" : std::string(ptr, utf8.length()); - } diff --git a/GreatSQL-Shell-Build/mysqlsh-for-greatsql-8.4.4.patch b/GreatSQL-Shell-Build/mysqlsh-for-greatsql-8.4.4.patch new file mode 100644 index 0000000..26480f3 --- /dev/null +++ b/GreatSQL-Shell-Build/mysqlsh-for-greatsql-8.4.4.patch @@ -0,0 +1,61 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7a669d268..4f5ddd49c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -239,7 +239,7 @@ IF(CMAKE_HOST_UNIX AND NOT FORCE_UNSUPPORTED_COMPILER + SET(ALTERNATIVE_PATHS "/opt/rh/devtoolset-11") + ENDIF() + ELSEIF(LINUX_RHEL8 OR LINUX_RHEL9) +- SET(ALTERNATIVE_PATHS "/opt/rh/gcc-toolset-12") ++ SET(ALTERNATIVE_PATHS "/opt/rh/gcc-toolset-11") + ENDIF() + + FOREACH(OPT_PATH ${ALTERNATIVE_PATHS}) +@@ -298,9 +298,9 @@ IF(CMAKE_HOST_UNIX AND NOT FORCE_UNSUPPORTED_COMPILER + ENDIF() + ELSEIF(LINUX_RHEL8 OR LINUX_RHEL9) + SET(DEV_PACKAGES +- "gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils") +- STRING_APPEND(DEV_PACKAGES " gcc-toolset-12-annobin-annocheck") +- STRING_APPEND(DEV_PACKAGES " gcc-toolset-12-annobin-plugin-gcc") ++ "gcc-toolset-11-gcc gcc-toolset-11-gcc-c++ gcc-toolset-11-binutils") ++ STRING_APPEND(DEV_PACKAGES " gcc-toolset-11-annobin-annocheck") ++ STRING_APPEND(DEV_PACKAGES " gcc-toolset-11-annobin-plugin-gcc") + ENDIF() + MESSAGE(WARNING + "Could not find devtoolset compiler/linker in ${ALTERNATIVE_PATHS}") +diff --git a/mysqlshdk/libs/mysql/group_replication.cc b/mysqlshdk/libs/mysql/group_replication.cc +index b6c840cbb..574d60ec7 100644 +--- a/mysqlshdk/libs/mysql/group_replication.cc ++++ b/mysqlshdk/libs/mysql/group_replication.cc +@@ -105,6 +105,8 @@ std::string to_string(const Member_role role) { + return "PRIMARY"; + case Member_role::SECONDARY: + return "SECONDARY"; ++ case Member_role::ARBITRATOR: ++ return "ARBITRATOR"; + case Member_role::NONE: + return "NONE"; + } +@@ -116,6 +118,8 @@ Member_role to_member_role(const std::string &role) { + return Member_role::PRIMARY; + } else if (shcore::str_caseeq("SECONDARY", role)) { + return Member_role::SECONDARY; ++ } else if (shcore::str_caseeq("ARBITRATOR", role)) { ++ return Member_role::ARBITRATOR; + } else if (role.empty()) { + return Member_role::NONE; + } else { +diff --git a/mysqlshdk/libs/mysql/group_replication.h b/mysqlshdk/libs/mysql/group_replication.h +index 8337db933..0c28e281c 100644 +--- a/mysqlshdk/libs/mysql/group_replication.h ++++ b/mysqlshdk/libs/mysql/group_replication.h +@@ -75,7 +75,7 @@ enum class Member_state { + MISSING + }; + +-enum class Member_role { PRIMARY, SECONDARY, NONE }; ++enum class Member_role { PRIMARY, SECONDARY, ARBITRATOR, NONE }; + + enum class Topology_mode { SINGLE_PRIMARY, MULTI_PRIMARY, NONE }; + diff --git a/GreatSQL-Shell/CHANGELOG.md b/GreatSQL-Shell/CHANGELOG.md index 71d6205..cbb8b4e 100644 --- a/GreatSQL-Shell/CHANGELOG.md +++ b/GreatSQL-Shell/CHANGELOG.md @@ -1,18 +1,6 @@ -# 8.0.32-25 更新日志 +# 8.4.4-4 更新日志 -## 2024.10.24 -* 更新镜像地址,增加阿里云ACR资源。 +## 2025.10.22 +* 更新到8.4.4-4版本 -## 2024.3.13 -* 更新GreatSQL-Shell到8.0.32-25最新版本,支持JS语法。 - -## 2024.2.20 -* 优化GreatSQL-Shell,改用从服务器上下载,无需准备本地二进制文件包。 -* 支持x86_64/aarch64两种平台。 - -## 2024.1.22 - -* 版本更新到GreatSQL 8.0.32-25。 -* 支持在Docker中运行GreatSQL Shell,无需安装。 - -[8.0.32-25]: https://gitee.com/GreatSQL/GreatSQL-Docker/tree/greatsql-8.0.32-25/GreatSQL-Shell +[8.4.4-4]: https://gitee.com/GreatSQL/GreatSQL-Docker/tree/greatsql-8.4.4-4/GreatSQL-Shell diff --git a/GreatSQL-Shell/Dockerfile b/GreatSQL-Shell/Dockerfile index 8e842e6..84df426 100644 --- a/GreatSQL-Shell/Dockerfile +++ b/GreatSQL-Shell/Dockerfile @@ -1,23 +1,24 @@ -#for x86_64 +# Dockerfile for GreatSQL Shell 8.4.4-4 +# +# docker version 26.1.3 (not podman) +# docker buildx build --platform linux/arm64,linux/amd64 -t greatsql/greatsql_shell:8.4.4-4 . --push +# FROM centos:8 -#for aarch64 -#FROM docker.io/arm64v8/centos - LABEL maintainer="greatsql.cn" \ email="greatsql@greatdb.com" \ forum="https://greatsql.cn/forum.php" \ -gitee="https://gitee.com/GreatSQL/GreatSQL-Shell-Docker" +gitee="https://gitee.com/GreatSQL/GreatSQL-Docker" -ENV LANG en_US.utf8 -ARG DEPS="libssh python38 python38-pyyaml python38-dateutil" \ -GREATSQLSH_DOWNLOAD_URL="https://product.greatdb.com/GreatSQL-8.0.32-25" \ -GREATSQLSH="greatsql-shell-8.0.32-25-glibc2.28-x86_64" \ -BASE_DIR=/usr/local -#for aarch64 -#GREATSQLSH="greatsql-shell-8.0.32-25-glibc2.28-aarch64" \ +ARG TARGETARCH \ +GREATSQL_VERSION="8.4.4-4" +ENV DEPS="libssh python38 python38-pyyaml python38-dateutil" \ +GREATSQLSH_DOWNLOAD_URL="https://product.greatdb.com/GreatSQL-${GREATSQL_VERSION}" \ +GREATSQLSH="greatsql-shell-${GREATSQL_VERSION}-glibc2.28-${TARGETARCH}" \ +BASE_DIR="/usr/local" -RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ +RUN echo ; echo "0. init"; \ +(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /etc/systemd/system/*.wants/*;\ @@ -26,20 +27,26 @@ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ rm -f /lib/systemd/system/basic.target.wants/*;\ rm -f /lib/systemd/system/anaconda.target.wants/*; \ -rm -f /etc/yum.repos.d/CentOS-Linux-* ; \ +rm -f /etc/yum.repos.d/* ; \ +echo ; echo "1. replace aliyun yum repo" ; \ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo > /dev/null 2>&1 && \ sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo > /dev/null 2>&1 && \ dnf clean all > /dev/null 2>&1 && \ dnf install -y epel-release > /dev/null 2>&1 && \ -rm -f /etc/yum.repos.d/CentOS-Linux-* ; \ +rm -f /etc/yum.repos.d/CentOS*Linux-* ; \ +rm -f /etc/yum.repos.d/CentOS*Stream-* ; \ +echo ; echo "2. yum update and clean" ; \ dnf -y update > /dev/null 2>&1 && \ dnf clean all > /dev/null 2>&1 && \ -rm -f /etc/yum.repos.d/CentOS-Linux-* ; \ +rm -f /etc/yum.repos.d/CentOS*Linux-* ; \ +rm -f /etc/yum.repos.d/CentOS*Stream-* ; \ +echo; echo "3. install ${DEPS}" ; \ dnf install -y ${DEPS} > /dev/null 2>&1 && \ -pip3.8 install --user certifi pyclamd > /dev/null 2>&1 && \ +pip3.8 install -i https://pypi.tuna.tsinghua.edu.cn/simple --user certifi pyclamd numpy > /dev/null 2>&1 && \ +echo ; echo "4. download greatsql-shell ${GREATSQLSH_DOWNLOAD_URL}/${GREATSQLSH}.tar.xz" ; \ curl -o ${BASE_DIR}/${GREATSQLSH}.tar.xz ${GREATSQLSH_DOWNLOAD_URL}/${GREATSQLSH}.tar.xz > /dev/null 2>&1 && \ tar xf ${BASE_DIR}/${GREATSQLSH}.tar.xz -C ${BASE_DIR} > /dev/null 2>&1 && \ rm -f ${BASE_DIR}/${GREATSQLSH}.tar.xz > /dev/null 2>&1 && \ -ln -s ${BASE_DIR}/${GREATSQLSH}/bin/mysqlsh ${BASE_DIR}/bin/mysqlsh +ln -s ${BASE_DIR}/greatsql-shell-${GREATSQL_VERSION}-*/bin/mysqlsh ${BASE_DIR}/bin/mysqlsh CMD ["bash"] diff --git a/GreatSQL-Shell/README.md b/GreatSQL-Shell/README.md index a344fb5..b9da6ca 100644 --- a/GreatSQL-Shell/README.md +++ b/GreatSQL-Shell/README.md @@ -2,23 +2,27 @@ ## 简介 -在Docker环境中运行MySQL Shell for GreatSQL 8.0.32-25,无需额外安装,更方便省事。 +在Docker环境中运行MySQL Shell for GreatSQL 8.4.4-4,无需额外安装,更方便省事。 ## 基本信息 - 维护者: GreatSQL(greatsql@greatdb.com) - 联系我们:greatsql@greatdb.com -- 最新版本:GreatSQL 8.0.32-25 -- 最后更新时间:2024-10-24 +- 最新版本:GreatSQL 8.4.4-4 - 支持CPU架构:x86_64、aarch64 ## 支持哪些tag -- [latest](https://hub.docker.com/layers/greatsql/greatsql_shell/latest/images/sha256-4264884f14341e3b34077c52c2ee7d0d53ce00fb5e45915c3b57e950ef52d80f?context=explore), [8.0.32-25](https://hub.docker.com/layers/greatsql/greatsql_shell/8.0.32-25/images/sha256-4264884f14341e3b34077c52c2ee7d0d53ce00fb5e45915c3b57e950ef52d80f?context=explore) -- [latest-arch64](https://hub.docker.com/layers/greatsql/greatsql_shell/latest-aarch64/images/sha256-46d3d92632256d24078948a81a6750ae808e3c2292c10eb88107633f5bde85ec?context=explore), [8.0.32-25-aarch64](https://hub.docker.com/layers/greatsql/greatsql_shell/8.0.32-25-aarch64/images/sha256-46d3d92632256d24078948a81a6750ae808e3c2292c10eb88107633f5bde85ec?context=explore) - -备选阿里云 ACR 资源地址:[registry.cn-beijing.aliyuncs.com/greatsql/greatsql_shell](registry.cn-beijing.aliyuncs.com/greatsql/greatsql_shell),支持tag -- [latest](registry.cn-beijing.aliyuncs.com/greatsql/greatsql_shell:latest) -- [8.0.32-25](registry.cn-beijing.aliyuncs.com/greatsql/greatsql_shell:8.0.32-25) - +- [latest](https://hub.docker.com/repository/docker/greatsql/greatsql_shell/tags/latest/sha256:1a7a88b9923249e793158627acf66986c52156e00798c4c9d3cb5867d35f7e4f) +- [8.4.4-4](https://hub.docker.com/repository/docker/greatsql/greatsql_shell/tags/8.4.4-4/sha256:1a7a88b9923249e793158627acf66986c52156e00798c4c9d3cb5867d35f7e4f) +- [8.0.32-25](https://hub.docker.com/repository/docker/greatsql/greatsql_shell/tags/8.0.32-25/sha256:4264884f14341e3b34077c52c2ee7d0d53ce00fb5e45915c3b57e950ef52d80f) +- [8.0.32-25-aarch64](https://hub.docker.com/repository/docker/greatsql/greatsql_shell/tags/8.0.32-25-aarch64/sha256:46d3d92632256d24078948a81a6750ae808e3c2292c10eb88107633f5bde85ec) + +备选阿里云、腾讯云镜像资源地址,支持的 tag 如下: +- 阿里云 [latest](registry.cn-beijing.aliyuncs.com/greatsql/greatsql_shell:latest) +- 阿里云 [8.4.4-4](registry.cn-beijing.aliyuncs.com/greatsql/greatsql_shell:8.4.4-4) +- 阿里云 [8.0.32-25](registry.cn-beijing.aliyuncs.com/greatsql/greatsql_shell:8.0.32-25) +- 腾讯云 [latest](ccr.ccs.tencentyun.com/greatsql/greatsql_shell:latest) +- 腾讯云 [8.4.4-4](ccr.ccs.tencentyun.com/greatsql/greatsql_shell:8.4.4-4) +- 腾讯云 [8.0.32-25](ccr.ccs.tencentyun.com/greatsql/greatsql_shell:8.0.32-25) ## 怎么使用这个Docker镜像 @@ -32,58 +36,65 @@ $ docker run -itd --hostname greatsqlsh --name greatsqlsh greatsql/greatsql_shel 通过tcp/ip方式连接GreatSQL ```shell -$ docker exec -it greatsqlsh bash -c "mysqlsh --uri GreatSQL@172.17.140.123" -Please provide the password for 'GreatSQL@172.17.140.123': ************* -MySQL Shell 8.0.32 +$ docker exec -it greatsqlsh bash -c "mysqlsh --uri GreatSQL@172.16.16.10" +Please provide the password for 'GreatSQL@172.16.16.10': ************* +... +# 切换到Python语法模式下 + MySQL 127.0.0.1:3306 ssl SQL > \py +Switching to Python mode... ... -Your MySQL connection id is 14891 (X protocol) -Server version: 8.0.32-25 GreatSQL, Release 25, Revision db07cc5cb73 -No default schema selected; type \use to set one. - # 获取当前MGR状态信息 - MySQL 172.17.140.123:33060+ ssl JS > c=dba.getCluster() - MySQL 172.17.140.123:33060+ ssl JS > c.status() + MySQL 172.16.16.10:33060+ ssl Py > c=dba.get_cluster() + MySQL 172.16.16.10:33060+ ssl Py > c.status() { - "clusterName": "mgr803225", + "clusterName": "mgr", "defaultReplicaSet": { "name": "default", - "primary": "172.17.136.59:3306", + "primary": "172.16.16.10:3306", "ssl": "REQUIRED", - "status": "OK_NO_TOLERANCE", - "statusText": "Cluster is NOT tolerant to any failures.", + "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.", "topology": { - "172.17.136.59:3306": { - "address": "172.17.136.59:3306", + "172.16.16.10:3306": { + "address": "172.16.16.10:3306", "memberRole": "PRIMARY", "mode": "R/W", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", - "version": "8.0.32" + "version": "8.4.4" }, - "172.17.140.123:3306": { - "address": "172.17.140.123:3306", + "172.16.16.11:3306": { + "address": "172.16.16.11:3306", "memberRole": "SECONDARY", "mode": "R/O", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", - "version": "8.0.32" + "version": "8.4.4" + }, + "172.16.16.12:3306": { + "address": "172.16.16.12:3306", + "memberRole": "ARBITRATOR", + "mode": "R/O", + "readReplicas": {}, + "role": "HA", + "status": "ONLINE", + "version": "8.4.4" } }, "topologyMode": "Single-Primary" }, - "groupInformationSourceMember": "172.17.136.59:3306" + "groupInformationSourceMember": "192.168.5.160:3306" } - MySQL 172.17.140.123:33060+ ssl JS > + MySQL 172.16.16.10:33060+ ssl JS > # 切换到SQL命令行模式下,并查看连接列表 - MySQL 172.17.140.123:33060+ ssl JS > \sql + MySQL 172.16.16.10:33060+ ssl JS > \sql Switching to SQL mode... Commands end with ; Fetching global names for auto-completion... Press ^C to stop. - MySQL 172.17.140.123:33060+ ssl SQL > show processlist; + MySQL 172.16.16.10:33060+ ssl SQL > show processlist; +-------+-------------+----------------------+------+---------+---------+----------------------------------------------------------+----------------------------------+------------+-----------+---------------+ | Id | User | Host | db | Command | Time | State | Info | Time_ms | Rows_sent | Rows_examined | +-------+-------------+----------------------+------+---------+---------+----------------------------------------------------------+----------------------------------+------------+-----------+---------------+ @@ -105,12 +116,7 @@ $ docker run -itd --hostname greatsqlsh --name greatsqlsh -v /data/GreatSQL/mysq ```shell $ docker exec -it greatsqlsh bash -c "mysqlsh -S/tmp/mysql.sock" Please provide the password for 'root@/tmp%2Fmysql.sock': -MySQL Shell 8.0.32 ... -Fetching schema names for auto-completion... Press ^C to stop. -Your MySQL connection id is 178 -Server version: 8.0.32-25 GreatSQL, Release 25, Revision db07cc5cb73 -No default schema selected; type \use to set one. MySQL localhost Py > \sql Switching to SQL mode... Commands end with ; Fetching global names for auto-completion... Press ^C to stop. @@ -126,7 +132,7 @@ Fetching global names for auto-completion... Press ^C to stop. 9 rows in set (0.0002 sec) ``` -如上所示,这就可以在Docker环境中运行MySQL Shell for GreatSQL 8.0.32-25,用它来管理GreatSQL MGR更方便省事。 +如上所示,这就可以在Docker环境中运行MySQL Shell for GreatSQL 8.4.4-4,用它来管理GreatSQL MGR更方便省事。 ## 文件介绍 - CHANGELOG.md,更新历史 diff --git a/GreatSQL/CHANGELOG.md b/GreatSQL/CHANGELOG.md index 81bce63..a839c2c 100644 --- a/GreatSQL/CHANGELOG.md +++ b/GreatSQL/CHANGELOG.md @@ -1,14 +1,8 @@ -# 8.0.32-27 更新日志 +# 8.4.4-4 更新日志 -## 2025.3.31 -* 更新到GreatSQL 8.0.32-27 -* 新增高性能并行查询引擎Turbo -* 升级Rapid引擎内核版本 -* 优化MGR大事务压缩传输机制 -* 完善greatdb_ha plugin -* InnoDB Page支持zstd压缩 -* 完善Oracle兼容特性 -* 完善安全性 -* 修复了几个可能导致crash或丢数据的bug +## 2025.10.15 +* 更新到GreatSQL 8.4.4-4 +* 调整audit log filter测试方案 +* 修改相应的库名、表名 -[8.0.32-27]: https://gitee.com/GreatSQL/GreatSQL-Docker/tree/greatsql-8.0.32-27/GreatSQL +[8.4.4-4]: https://gitee.com/GreatSQL/GreatSQL-Docker/tree/greatsql-8.4.4-4/GreatSQL diff --git a/GreatSQL/Dockerfile b/GreatSQL/Dockerfile index 060f1fa..8ac8b00 100644 --- a/GreatSQL/Dockerfile +++ b/GreatSQL/Dockerfile @@ -6,21 +6,20 @@ forum="https://greatsql.cn/forum.php" \ gitee="https://gitee.com/GreatSQL/GreatSQL-Docker" ARG TARGETARCH -ENV LANG=en_US.utf8 \ -GREATSQL_DATA_DIR=/data/GreatSQL \ +ENV GREATSQL_DATA_DIR=/data/GreatSQL \ GREATSQL_USER=mysql \ GREATSQL_UID_GID=3306 \ GREATSQL_EXTRACT_DIR=/usr/local \ TMP_DIR=/tmp \ GREATSQL_PORT=3306 \ DEPS="libaio-devel numactl-devel xz openssl-devel openssl procps-ng util-linux" \ -GREATSQL_DOCKER_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-8.0.32-27/GreatSQL" \ +GREATSQL_DOCKER_DOWNLOAD_URL="https://gitee.com/GreatSQL/GreatSQL-Docker/raw/greatsql-8.4.4-4/GreatSQL" \ GREATSQL_INIT="greatsql-init.sh" \ GREATSQL_SHRINK="greatsql-shrink.sh" \ GREATSQL_TEST="greatsql-test.sql" \ GREATSQL_CNF="my.cnf" \ -GREATSQL_DOWNLOAD_URL="https://product.greatdb.com/GreatSQL-8.0.32-27" \ -GREATSQL_PKG="GreatSQL-8.0.32-27-Linux-glibc2.17-${TARGETARCH}-minimal" +GREATSQL_DOWNLOAD_URL="https://product.greatdb.com/GreatSQL-8.4.4-4" \ +GREATSQL_PKG="GreatSQL-8.4.4-4-Linux-glibc2.17-${TARGETARCH}-minimal" RUN microdnf install --nodocs -y ${DEPS} && \ microdnf update -y && \ diff --git a/GreatSQL/README.md b/GreatSQL/README.md index 7665bc4..0172541 100644 --- a/GreatSQL/README.md +++ b/GreatSQL/README.md @@ -10,19 +10,14 @@ ## 基本信息 - 维护者: GreatSQL(greatsql@greatdb.com) - 联系我们:greatsql@greatdb.com -- 最新版本:GreatSQL 8.0.32-27 -- 最后更新时间:2025-03-11 +- 最新版本:GreatSQL 8.4.4-4 +- 最后更新时间:2025-10-15 ## 支持哪些tag -- [latest](https://hub.docker.com/layers/greatsql/greatsql/latest/images/sha256-0b524a865bef665444c778976a88e25cf7d448a18aeeac332f94a59ef27e8fdb) -- [8.0.32-27](https://hub.docker.com/layers/greatsql/greatsql/8.0.32-27/images/sha256-0b524a865bef665444c778976a88e25cf7d448a18aeeac332f94a59ef27e8fdb) -- [8.0.32-26](https://hub.docker.com/layers/greatsql/greatsql/8.0.32-26/images/sha256-1f735f42aecdf4ee5c65699b228ce520a79f4d2e6b4fbaaddb607babcf604f0d) -- [8.0.32-25](https://hub.docker.com/layers/greatsql/greatsql/8.0.32-25/images/sha256-6a01d0b1b9107b286601249202803da5b08e9f729b8727f691ce423928994eef) -- [8.0.32-24](https://hub.docker.com/layers/greatsql/greatsql/8.0.32-24/images/sha256-0d1ee8a01e4dec5d3698053319978c1817ca455eb6a11de9fa7e13b747fa9f3e) -- [8.0.25-16](https://hub.docker.com/layers/greatsql/greatsql/greatsql/8.0.25-16/images/sha256-03969daaaaaeb0f51dde0c9e92ef327302607cdde3afbe5c2b071098000c52c1) -- [8.0.32-24-arch64](https://hub.docker.com/layers/greatsql/greatsql/8.0.32-24-aarch64/images/sha256-97dfa7074a1c5b2e0355fcf5fc829e8074edca6db7c2e528059786fb0c48a523) -- [8.0.25-16-aarch64](https://hub.docker.com/layers/greatsql/greatsql/8.0.25-16-aarch64/images/sha256-c4664d2b84025ed2487d0aecb6090ab9bb0f7ee2033afd9a079ea4f1f9f82b52) +- [latest](https://hub.docker.com/repository/docker/greatsql/greatsql/tags/latest/sha256:e90496c2c83c02e8f8f6c27327bd9a0e620556961dff3f906058aad7e8c5564e) +- [8.4.4-4](https://hub.docker.com/repository/docker/greatsql/greatsql/tags/8.4.4-4/sha256:e90496c2c83c02e8f8f6c27327bd9a0e620556961dff3f906058aad7e8c5564e) +- [8.0.32-27](https://hub.docker.com/repository/docker/greatsql/greatsql/tags/8.0.32-27/sha256:6169b1a98eaa4a2579315e30681714c102ac1d6e9881bac5606ebec67c5b7b3b) 拉取GreatSQL镜像 @@ -33,7 +28,7 @@ docker pull greatsql/greatsql 还可以指定具体版本号 ```shell -docker pull greatsql/greatsql:8.0.32-27 +docker pull greatsql/greatsql:8.4.4-4 ``` 如果无法从hub.docker.com拉取,可以尝试从阿里云ACR或腾讯云TCR拉取,例如: @@ -46,6 +41,14 @@ docker pull registry.cn-beijing.aliyuncs.com/greatsql/greatsql $ docker pull ccr.ccs.tencentyun.com/greatsql/greatsql ``` +如果是龙芯(Loongson-3A6000)架构环境,可以尝试下面的镜像: + +```bash +docker pull registry.cn-shanghai.aliyuncs.com/annda/greatsql:8.4.4-4 +``` + +**提醒**:这是社区用户 Annda](https://github.com/AnndaGH) 提交的镜像,请自行决定是否使用。 + > 如果提示 timeout 连接超时错误,多重试几次应该就好了。 ## GreatSQL Docker镜像使用 @@ -66,10 +69,11 @@ greatsql/greatsql *--hostname=greatsql*,设定容器主机名 *greatsql/greatsql*,指定容器使用的镜像名 -如果想要映射外部 my.cnf 配置文件或自行指定 datadir,还可以类似下面这么用: +如果想要映射外部 my.cnf 配置文件或自行指定 datadir,并且增加端口映射,可以执行下面的命令: ```shell $ docker run -d \ +-P 4406:3306 \ -v /data/greatsql/my.cnf:/etc/my.cnf \ -v /data/greatsql/data:/data \ --name greatsql --hostname=greatsql \ @@ -77,6 +81,12 @@ $ docker run -d \ greatsql/greatsql ``` +其中: + +- 参数 `-P 4406:3306` 的作用是将宿主环境中的 *4406* 端口(宿主中的端口号可自行定义,不与其他服务冲突即可)映射到容器中的 *3306* 端口,这样远程主机就可以通过 *4406* 端口连接容器中的 GreatSQL 数据库实例; +- 参数 `-v /data/greatsql/my.cnf:/etc/my.cnf` 的作用是将宿主环境中的 */data/greatsql/my.cnf* 映射到容器中的 */etc/my.cnf*; +- 参数 `-v /data/greatsql/data:/data` 的作用是将本地 */data/greatsql/data* 目录映射到容器中的 */data* 目录。 + 注意,需要先保证本地目录 `/data/greatsql/data` 是空的才行,否则 GreatSQL 在初始化检测时会报告失败,无法启动,日志中将有类似下面的内容: ```shell @@ -98,20 +108,12 @@ $ docker exec -it greatsql bash [root@greatsql /]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 34 -Server version: 8.0.32-27 GreatSQL, Release 27, Revision aa66a385910 -... -mysql Ver 8.0.32-27 for Linux on x86_64 (GreatSQL (GPL), Release 27, Revision aa66a385910) -... - -[root@GreatSQL][(none)]> \s -... -Server version: 8.0.32-27 GreatSQL, Release 27, Revision aa66a385910 ... [root@GreatSQL][(none)]> SELECT version(); +-----------+ | version() | +-----------+ -| 8.0.32-27 | +| 8.4.4 | +-----------+ 1 row in set (0.00 sec) @@ -119,6 +121,12 @@ Server version: 8.0.32-27 GreatSQL, Release 27, Revision aa66a385910 [root@GreatSQL][(none)]> SOURCE /tmp/greatsql-test.sql; ``` +如果在创建容器时已经指定了 `-P 4406:3306` 端口映射参数,那么远程主机就可以通过 *4406* 端口连接容器中的 GreatSQL 数据库实例: + +```bash +mysql -h172.16.16.10 -uXX -pXX -P4406 +``` + ## 如何通过 docker-compose 使用GreatSQL镜像 下面是一个docker-compose的配置文件参考 `/data/docker/mysql.yml`: @@ -239,9 +247,9 @@ $ mysql +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+ | CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK | +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+ -| group_replication_applier | d17d165a-ab7a-11ec-a8c0-0242ac120002 | 172.18.0.2 | 3306 | ONLINE | PRIMARY | 8.0.32 | XCom | -| group_replication_applier | d28c3916-ab7a-11ec-ab60-0242ac120003 | 172.18.0.3 | 3306 | ONLINE | SECONDARY | 8.0.32 | XCom | -| group_replication_applier | d3dc6855-ab7a-11ec-98a0-0242ac120004 | 172.18.0.4 | 3306 | ONLINE | ARBITRATOR | 8.0.32 | XCom | +| group_replication_applier | d17d165a-ab7a-11ec-a8c0-0242ac120002 | 172.18.0.2 | 3306 | ONLINE | PRIMARY | 8.4.4 | XCom | +| group_replication_applier | d28c3916-ab7a-11ec-ab60-0242ac120003 | 172.18.0.3 | 3306 | ONLINE | SECONDARY | 8.4.4 | XCom | +| group_replication_applier | d3dc6855-ab7a-11ec-98a0-0242ac120004 | 172.18.0.4 | 3306 | ONLINE | ARBITRATOR | 8.4.4 | XCom | +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+ ``` 可以看到,一个三节点的MGR集群已自动构建完毕,并且其中还包含一个ARBITRATOR节点(仲裁节点/投票节点)。 @@ -341,9 +349,9 @@ $ mysql +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+ | CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK | +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+ -| group_replication_applier | 9831bac0-30d4-11ee-8b65-0242ac120002 | 172.18.0.2 | 3306 | ONLINE | PRIMARY | 8.0.32 | XCom | -| group_replication_applier | 9907b1ae-30d4-11ee-8c66-0242ac120003 | 172.18.0.3 | 3306 | ONLINE | PRIMARY | 8.0.32 | XCom | -| group_replication_applier | 9a1ee7ca-30d4-11ee-8b93-0242ac120004 | 172.18.0.4 | 3306 | ONLINE | PRIMARY | 8.0.32 | XCom | +| group_replication_applier | 9831bac0-30d4-11ee-8b65-0242ac120002 | 172.18.0.2 | 3306 | ONLINE | PRIMARY | 8.4.4 | XCom | +| group_replication_applier | 9907b1ae-30d4-11ee-8c66-0242ac120003 | 172.18.0.3 | 3306 | ONLINE | PRIMARY | 8.4.4 | XCom | +| group_replication_applier | 9a1ee7ca-30d4-11ee-8b93-0242ac120004 | 172.18.0.4 | 3306 | ONLINE | PRIMARY | 8.4.4 | XCom | +---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+ ``` 可以看到,一个三节点的MGR集群已自动构建完毕,运行模式为多主模式。 @@ -427,7 +435,7 @@ MySQL 8.0.26开始,可以为view change单独指定一个GTID前缀,避免 ## 文件介绍 - CHANGELOG.md,更新历史 - docker-compose,利用docker-compose拉起的示例文件 -- Dockerfile,用于构建GreatSQL Shell Docker环境 +- Dockerfile,用于构建GreatSQL Docker环境 - greatsql-init.sh,构建镜像初始化脚本 - greatsql-shrink.sh,在镜像中裁剪非必要文件脚本 - greatsql-test.sql,可执行GreatSQL自测试的脚本 diff --git a/GreatSQL/greatsql-init.sh b/GreatSQL/greatsql-init.sh index cac93a3..5a12174 100755 --- a/GreatSQL/greatsql-init.sh +++ b/GreatSQL/greatsql-init.sh @@ -313,7 +313,8 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then fi echo - echo 'MySQL init process done. Ready for start up.' + echo 'MySQL init process done.' + echo 'Ready for start up.' echo fi diff --git a/GreatSQL/greatsql-test.sql b/GreatSQL/greatsql-test.sql index 99cf322..8219ce3 100644 --- a/GreatSQL/greatsql-test.sql +++ b/GreatSQL/greatsql-test.sql @@ -1,6 +1,6 @@ -- -- greatsql-test.sql --- GreatSQL 主要功能特性自测脚本,适配版本:8.0.32-27 +-- GreatSQL 主要功能特性自测脚本,适配版本:8.4.4-4 -- -- -- 主要测试项 @@ -18,22 +18,20 @@ -- 当检查结果输出内容包含 NG(NOT GOOD缩写) 时,表示检查结果异常,需要人为再确认 -- -- CHANGELOG --- # 2025.03.31 --- 1. 升级到 GreatSQL 8.0.32-27 --- 2. 针对以下几个新特性做校验 --- * 新增高性能并行查询引擎Turbo --- * 升级Rapid引擎内核版本 --- * InnoDB Page支持zstd压缩 --- * 新增Binlog限速状态查看 +-- # 2025.10.15 +-- 1. 升级到 GreatSQL 8.4.4-4 +-- 2. 调整audit log filter测试方案 +-- 3. 修改相应的库名、表名 -- + SET NAMES utf8mb4; -- 1. 版本号 SELECT '--- 1. checking VERSION() ---' AS STAGE_1; -SELECT IF(@@version = '8.0.32-27', "OK: VERSION IS 8.0.32-27", "NG, VERSION IS NOT 8.0.32-27") AS '1.1 check: VERSION' FROM DUAL; +SELECT IF(@@version = '8.4.4-4', "OK: VERSION IS 8.4.4-4", "NG, VERSION IS NOT 8.4.4-4") AS '1.1 check: VERSION' FROM DUAL; SELECT ' ' FROM DUAL; -SELECT IF(@@version_comment LIKE '%GreatSQL%27%aa66a385910', "OK, Revision IS aa66a385910", "NG, Revision IS NOT aa66a385910") AS '1.2 check: VERSION_COMMENT' FROM DUAL; +SELECT IF(@@version_comment LIKE '%GreatSQL%4%d73de75905d', "OK, Revision IS d73de75905d", "NG, Revision IS NOT d73de75905d") AS '1.2 check: VERSION_COMMENT' FROM DUAL; SELECT ' ' FROM DUAL; SELECT ' ' FROM DUAL; @@ -42,11 +40,11 @@ SELECT ' ' FROM DUAL; SELECT '--- 2. checking CREATE NEW DB & TABLE, INSERT & SELECT ROWS & Oracle compatibility ---' AS STAGE_2; -- CREATE DB & TABLE -CREATE DATABASE IF NOT EXISTS greatsql_803227 CHARACTER SET utf8mb4; -USE greatsql_803227; +CREATE DATABASE IF NOT EXISTS greatsql_8444 CHARACTER SET utf8mb4; +USE greatsql_8444; -DROP TABLE IF EXISTS t_803227; -CREATE TABLE t_803227( +DROP TABLE IF EXISTS t_8444; +CREATE TABLE t_8444( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c1 CLOB NOT NULL, c2 VARCHAR2(30) NOT NULL DEFAULT '', @@ -55,7 +53,7 @@ c4 PLS_INTEGER UNSIGNED NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- INSERT ROWS -INSERT INTO t_803227 VALUES +INSERT INTO t_8444 VALUES (1, rand(), rand(), ROUND(RAND()*1024000), ROUND(RAND()*1024000)), (2, rand(), rand(), ROUND(RAND()*1024000), ROUND(RAND()*1024000)), (4, rand(), rand(), ROUND(RAND()*1024000), ROUND(RAND()*1024000)), @@ -68,14 +66,14 @@ SELECT ' ' FROM DUAL; -- 3. Oracle语法 -SELECT '--- 3. checking SELECT ANY/ALL FROM t_803227 ---' AS STAGE_3; +SELECT '--- 3. checking SELECT ANY/ALL FROM t_8444 ---' AS STAGE_3; -- ALL Syntax -SELECT COUNT(*) INTO @ROWS FROM t_803227 WHERE id < ALL(4,8,16); +SELECT COUNT(*) INTO @ROWS FROM t_8444 WHERE id < ALL(4,8,16); SELECT IF(@ROWS = 2, 'OK, FOUND 2 ROWS', CONCAT('NG, FOUND ', @ROWS, ' ROWS')) AS '3.1 check: FOUND_ROWS(ALL)' FROM DUAL; SELECT ' ' FROM DUAL; -- ANY Syntax -SELECT COUNT(*) INTO @ROWS FROM t_803227 WHERE id < ANY(4,8,16); +SELECT COUNT(*) INTO @ROWS FROM t_8444 WHERE id < ANY(4,8,16); SELECT IF(@ROWS = 4, 'OK, FOUND 4 ROWS', CONCAT('NG, FOUND ', @ROWS, ' ROWS')) AS '3.2 check: FOUND_ROWS(ANY)' FROM DUAL; SELECT ' ' FROM DUAL; @@ -120,15 +118,15 @@ SELECT ' ' FROM DUAL; SELECT '4. check: EXPLAIN SELECT USING Turbo' FROM DUAL; -DROP TABLE IF EXISTS t_803227; -CREATE TABLE t_803227( +DROP TABLE IF EXISTS t_8444; +CREATE TABLE t_8444( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c1 VARCHAR2(30) NOT NULL DEFAULT '', c2 PLS_INTEGER UNSIGNED NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- INSERT ROWS -INSERT INTO t_803227 VALUES +INSERT INTO t_8444 VALUES (1, rand(), ROUND(RAND()*1024000)), (2, rand(), ROUND(RAND()*1024000)), (4, rand(), ROUND(RAND()*1024000)), @@ -136,14 +134,14 @@ INSERT INTO t_803227 VALUES (16, rand(), ROUND(RAND()*1024000)), (32, rand(), ROUND(RAND()*1024000)); -EXPLAIN FORMAT=TREE SELECT /*+ SET_VAR(turbo_enable=ON) SET_VAR(turbo_cost_threshold=0) */ * FROM t_803227; +EXPLAIN FORMAT=TREE SELECT /*+ SET_VAR(turbo_enable=ON) SET_VAR(turbo_cost_threshold=0) */ * FROM t_8444; SELECT ' ' FROM DUAL; SELECT '4. UNINSTALL Turbo ENGINE' FROM DUAL; UNINSTALL PLUGIN turbo; -- DROP TABLE -DROP TABLE IF EXISTS t_803227; +DROP TABLE IF EXISTS t_8444; -- 5. Rapid引擎 SELECT '--- 4. checking RAPID ENGINE ---' AS STAGE_4; @@ -153,7 +151,8 @@ INSTALL PLUGIN Rapid SONAME 'ha_rapid.so'; SELECT IF(ENGINE = "Rapid", "OK, SUPPORT Rapid ENGINE", "NG, NOT SUPPORT Rapid ENGINE") AS '4.1 check: Rapid ENGINE' FROM information_schema.ENGINES WHERE ENGINE = 'Rapid' AND SUPPORT = 'YES'; SELECT ' ' FROM DUAL; -CREATE TABLE `t_803227_rapid` ( +DROP TABLE IF EXISTS `t_8444_rapid`; +CREATE TABLE IF NOT EXISTS `t_8444_rapid` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `c1` int unsigned NOT NULL DEFAULT '0', `c2` varchar(30) NOT NULL DEFAULT '', @@ -161,10 +160,10 @@ CREATE TABLE `t_803227_rapid` ( ) ENGINE=InnoDB; -- SECONDARY_ENGINE -ALTER TABLE t_803227_rapid SECONDARY_ENGINE = rapid; +ALTER TABLE t_8444_rapid SECONDARY_ENGINE = rapid; -- INSERT ROWS -INSERT INTO t_803227_rapid VALUES +INSERT INTO t_8444_rapid VALUES (1, RAND()*1024000, RAND()*1024000), (2, RAND()*1024000, RAND()*1024000), (4, RAND()*1024000, RAND()*1024000), @@ -175,20 +174,21 @@ SELECT IF(ROW_COUNT() = 6, 'OK, INSERT 6 ROWS', CONCAT('NG, INSERT ', ROW_COUNT( SELECT ' ' FROM DUAL; -- SECONDARY_LOAD -ALTER TABLE t_803227_rapid SECONDARY_LOAD; +ALTER TABLE t_8444_rapid SECONDARY_LOAD; -SELECT IF(CREATE_OPTIONS = 'SECONDARY_ENGINE="rapid" SECONDARY_LOAD="1"', "OK, t_803227_rapid IS A Rapid TABLE", "NG, t_803227_rapid IS NOT A Rapid TABLE") AS '4.3 check: t_803227_rapid' FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'greatsql_803227' AND TABLE_NAME = 't_803227_rapid'; +SELECT IF(CREATE_OPTIONS = 'SECONDARY_ENGINE="rapid" SECONDARY_LOAD="1"', "OK, t_8444_rapid IS A Rapid TABLE", "NG, t_8444_rapid IS NOT A Rapid TABLE") AS '4.3 check: t_8444_rapid' FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'greatsql_8444' AND TABLE_NAME = 't_8444_rapid'; SELECT ' ' FROM DUAL; -- EXPLAIN SELECT '4.4 check: EXPLAIN SELECT FROM Rapid TABLE' FROM DUAL; -EXPLAIN SELECT /*+ SET_VAR(use_secondary_engine=2) SET_VAR(secondary_engine_cost_threshold=0) */ * FROM t_803227_rapid; +EXPLAIN SELECT /*+ SET_VAR(use_secondary_engine=2) SET_VAR(secondary_engine_cost_threshold=0) */ * FROM t_8444_rapid; SELECT ' ' FROM DUAL; -- FORCE USING Rapid ENGINE -SELECT /*+ SET_VAR(use_secondary_engine=1) SET_VAR(secondary_engine_cost_threshold=0) */ COUNT(*) INTO @ROWS FROM t_803227_rapid; +SELECT /*+ SET_VAR(use_secondary_engine=1) SET_VAR(secondary_engine_cost_threshold=0) */ COUNT(*) INTO @ROWS FROM t_8444_rapid; SELECT IF(@ROWS = 6, 'OK, FOUND 6 ROWS', CONCAT('NG, FOUND ', @ROWS, ' ROWS')) AS '4.4 check: FOUND ROWS FROM Rapid TABLE' FROM DUAL; SELECT ' ' FROM DUAL; +UNINSTALL PLUGIN rapid; -- 5. 并行LOAD DATA @@ -218,6 +218,8 @@ SELECT ' ' FROM DUAL; SELECT IF(VARIABLE_NAME = "clone_file_compress", "OK, SUPPORT Clone compressed", "NG, NOT SUPPORT Clone compressed") AS 'check: Clone compressed' FROM performance_schema.global_variables where variable_name = 'clone_file_compress'; SELECT ' ' FROM DUAL; SELECT ' ' FROM DUAL; +UNINSTALL COMPONENT "file://component_mysqlbackup"; +UNINSTALL PLUGIN clone; -- 7. MGR特性 SELECT '--- 7. checking MGR ---' AS STAGE_7; @@ -247,12 +249,15 @@ SELECT ' ' FROM DUAL; SELECT IF(VARIABLE_NAME = "greatdb_ha_mgr_read_vip_floating_type", "OK, SUPPORT greatdb_ha vip_floating", "NG, NOT SUPPORT greatdb_ha vip_floating") AS '7.5 check: greatdb_ha vip_floating' FROM performance_schema.global_variables where variable_name = 'greatdb_ha_mgr_read_vip_floating_type'; SELECT ' ' FROM DUAL; SELECT ' ' FROM DUAL; +UNINSTALL PLUGIN greatdb_ha; +UNINSTALL PLUGIN group_replication; -- 8. 安全特性检查 -- 支持审计日志写表 & 用户的登录信息记录 -- basedir=/usr, REPLACE IF NEEDED -SOURCE /usr/local/GreatSQL/share/install_audit_log.sql; +USE mysql; +SOURCE /usr/local/GreatSQL/share/audit_log_filter_linux_install.sql SELECT IF(VARIABLE_NAME = "audit_log_to_table", "OK, SUPPORT audit_log_to_table", "NG, NOT SUPPORT audit_log_to_table") AS '8.1 check: audit_log_to_table' FROM performance_schema.global_variables where variable_name = 'audit_log_to_table'; SELECT ' ' FROM DUAL; @@ -265,6 +270,7 @@ SOURCE /usr/local/GreatSQL/share/sys_masking.sql; SELECT IF(COUNT(*)=4, "OK, SUPPORT data masking", "NG, NOT SUPPORT data masking") AS '8.3 check: data masking' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='sys_masking'; SELECT ' ' FROM DUAL; SELECT ' ' FROM DUAL; +UNINSTALL COMPONENT "file://component_audit_log_filter"; -- 9. 优化功能检查 @@ -286,20 +292,20 @@ SELECT ' ' FROM DUAL; -- 10. InnoDB Page压缩支持zstd SELECT '--- 11. checking InnoDB Page COMPRSSION USING Zstd ---' AS STAGE_11; -USE greatsql_803227; +USE greatsql_8444; -DROP TABLE IF EXISTS t_803227; -CREATE TABLE t_803227( +DROP TABLE IF EXISTS t_8444; +CREATE TABLE t_8444( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c1 CLOB NOT NULL, c2 VARCHAR2(30) NOT NULL DEFAULT '', c3 NUMBER UNSIGNED NOT NULL DEFAULT 0, c4 PLS_INTEGER UNSIGNED NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMPRESSION="zstd"; -SELECT IF(CREATE_OPTIONS = 'COMPRESSION="zstd"', "OK, InnoDB Page COMPONENT USING Zstd", "NG, NOT SUPPORT InnoDB Page COMPONENT USING Zstd") AS 'check: InnoDB Page COMPONENT USING Zstd' FROM information_schema.TABLES WHERE TABLE_SCHEMA='greatsql_803227' AND TABLE_NAME='t_803227'; +SELECT IF(CREATE_OPTIONS = 'COMPRESSION="zstd"', "OK, InnoDB Page COMPONENT USING Zstd", "NG, NOT SUPPORT InnoDB Page COMPONENT USING Zstd") AS 'check: InnoDB Page COMPONENT USING Zstd' FROM information_schema.TABLES WHERE TABLE_SCHEMA='greatsql_8444' AND TABLE_NAME='t_8444'; SELECT ' ' FROM DUAL; SELECT ' ' FROM DUAL; -- 11. 清理 SELECT '--- 8. clean up ---' AS STAGE_8; -DROP DATABASE IF EXISTS greatsql_803227; +DROP DATABASE IF EXISTS greatsql_8444; diff --git a/GreatSQL/my.cnf b/GreatSQL/my.cnf index 8802190..ae4f498 100644 --- a/GreatSQL/my.cnf +++ b/GreatSQL/my.cnf @@ -1,176 +1,176 @@ # -# my.cnf example for GreatSQL 8.0.32-27 +# my.cnf example for GreatSQL 8.4.4-4 # # 下面参数选项设置仅作为参考 # [client] -socket = /data/GreatSQL/mysql.sock +socket=/data/GreatSQL/mysql.sock [mysql] loose-skip-binary-as-hex -prompt = "(\\D)[\\u@GreatSQL][\\d]> " +prompt="(\\D)[\\u@GreatSQL][\\d]> " no-auto-rehash [mysqld] -user = mysql -port = 3306 -server_id = MYSQL_SID -basedir = /usr/local/GreatSQL -datadir = /data/GreatSQL -socket = /data/GreatSQL/mysql.sock -pid-file = mysql.pid -character-set-server = UTF8MB4 -skip_name_resolve = ON -default_time_zone = "+8:00" -bind_address = "0.0.0.0" -secure_file_priv = /data/GreatSQL -lower_case_table_names = LOWER_CASE_TABLE_NAMES +user=mysql +port=3306 +server_id=MYSQL_SID +basedir=/usr/local/GreatSQL +datadir=/data/GreatSQL +socket=/data/GreatSQL/mysql.sock +pid-file=mysql.pid +character-set-server=UTF8MB4 +skip_name_resolve=ON +default_time_zone="+8:00" +bind_address="0.0.0.0" +secure_file_priv=/data/GreatSQL +lower_case_table_names=LOWER_CASE_TABLE_NAMES +mysql_native_password=ON # Performance -lock_wait_timeout = 3600 -open_files_limit = 65535 -back_log = 1024 -max_connections = 512 -max_connect_errors = 1000000 -table_open_cache = 1024 -table_definition_cache = 1024 -sort_buffer_size = 4M -join_buffer_size = 4M -read_buffer_size = 8M -read_rnd_buffer_size = 4M -bulk_insert_buffer_size = 64M -thread_cache_size = 768 -interactive_timeout = 600 -wait_timeout = 600 -tmp_table_size = 32M -max_heap_table_size = 32M -max_allowed_packet = 64M -net_buffer_shrink_interval = 180 -sql_generate_invisible_primary_key = ON -loose-lock_ddl_polling_mode = ON -loose-lock_ddl_polling_runtime = 200 +lock_wait_timeout=3600 +open_files_limit=65535 +back_log=1024 +max_connections=512 +max_connect_errors=1000000 +table_open_cache=1024 +table_definition_cache=1024 +sort_buffer_size=4M +join_buffer_size=4M +read_buffer_size=8M +read_rnd_buffer_size=4M +bulk_insert_buffer_size=64M +thread_cache_size=768 +interactive_timeout=600 +wait_timeout=600 +tmp_table_size=32M +max_heap_table_size=32M +max_allowed_packet=64M +net_buffer_shrink_interval=180 +sql_generate_invisible_primary_key=ON +loose-lock_ddl_polling_mode=ON +loose-lock_ddl_polling_runtime=200 # Logs -log_timestamps = SYSTEM -log_error = error.log -log_error_verbosity = 3 -slow_query_log = ON -log_slow_extra = ON -slow_query_log_file = slow.log -long_query_time = 0.01 -log_queries_not_using_indexes = ON -log_throttle_queries_not_using_indexes = 60 -min_examined_row_limit = 100 -log_slow_admin_statements = ON -log_slow_replica_statements = ON -log_slow_verbosity = FULL -log_bin = binlog -binlog_format = ROW -sync_binlog = 1 -binlog_cache_size = 4M -max_binlog_cache_size = 6G -max_binlog_size = 1G -binlog_space_limit = 500G -binlog_rows_query_log_events = ON -binlog_expire_logs_seconds = 604800 -binlog_checksum = CRC32 -gtid_mode = ON -enforce_gtid_consistency = ON +log_timestamps=SYSTEM +log_error=error.log +log_error_verbosity=3 +slow_query_log=ON +log_slow_extra=ON +slow_query_log_file=slow.log +long_query_time=0.01 +log_queries_not_using_indexes=ON +log_throttle_queries_not_using_indexes=60 +min_examined_row_limit=100 +log_slow_admin_statements=ON +log_slow_replica_statements=ON +log_slow_verbosity=FULL +log_bin=binlog +binlog_format=ROW +sync_binlog=1 +binlog_cache_size=4M +max_binlog_cache_size=6G +max_binlog_size=1G +binlog_space_limit=500G +binlog_rows_query_log_events=ON +binlog_expire_logs_seconds=604800 +binlog_checksum=CRC32 +gtid_mode=ON +enforce_gtid_consistency=ON # Replication -relay-log = relaylog -relay_log_recovery = ON -replica_parallel_type = LOGICAL_CLOCK -replica_parallel_workers = 4 -binlog_transaction_dependency_tracking = WRITESET -replica_preserve_commit_order = ON -replica_checkpoint_period = 2 -loose-rpl_read_binlog_speed_limit = 100 +relay-log=relaylog +relay_log_recovery=ON +replica_parallel_type=LOGICAL_CLOCK +replica_parallel_workers=4 +replica_preserve_commit_order=ON +replica_checkpoint_period=2 +loose-rpl_read_binlog_speed_limit=100 # Disalbe InnoDB PQ -loose-force_parallel_execute = OFF +loose-force_parallel_execute=OFF # Parallel LOAD DATA -loose-gdb_parallel_load = ON -loose-innodb_optimize_no_pk_parallel_load = ON +loose-gdb_parallel_load=ON +loose-innodb_optimize_no_pk_parallel_load=ON # Rapid -#loose-plugin_load_add = 'ha_rapid.so' -loose-rapid_memory_limit = 128M -loose-rapid_worker_threads = 4 -loose-rapid_hash_table_memory_limit = 10 -loose-secondary_engine_parallel_load_workers = 4 +#loose-plugin_load_add='ha_rapid.so' +loose-rapid_memory_limit=128M +loose-rapid_worker_threads=4 +loose-rapid_hash_table_memory_limit=10 +loose-secondary_engine_parallel_load_workers=4 # Clone -loose-plugin_load_add = 'mysql_clone.so' +loose-plugin_load_add='mysql_clone.so' # MGR -loose-plugin_load_add = 'group_replication.so' -loose-group_replication_group_name = MYSQL_MGR_NAME -loose-group_replication_view_change_uuid = MYSQL_MGR_VIEWID -loose-group_replication_local_address = MYSQL_MGR_LOCAL -loose-group_replication_group_seeds = MYSQL_MGR_SEEDS -loose-group_replication_communication_stack = "XCOM" -loose-group_replication_recovery_use_ssl = OFF -loose-group_replication_ssl_mode = DISABLED -loose-group_replication_start_on_boot = START_MGR -loose-group_replication_bootstrap_group = BOOTSTRAP_MGR -loose-group_replication_exit_state_action = READ_ONLY -loose-group_replication_flow_control_mode = "DISABLED" -loose-group_replication_single_primary_mode = SINGLE_PRIMARY -loose-group_replication_enforce_update_everywhere_checks = EVERYWHERE_CHECKS -loose-group_replication_majority_after_mode = ON -loose-group_replication_communication_max_message_size = 10M -loose-group_replication_arbitrator = MYSQL_MGR_ARBITRATOR -loose-group_replication_single_primary_fast_mode = FAST_MODE -loose-group_replication_request_time_threshold = 100 -loose-group_replication_primary_election_mode = GTID_FIRST -loose-group_replication_unreachable_majority_timeout = 0 -loose-group_replication_member_expel_timeout = 5 -loose-group_replication_autorejoin_tries = 288 -loose-group_replication_recovery_get_public_key = ON -loose-group_replication_donor_threshold = 100 +loose-plugin_load_add='group_replication.so' +loose-group_replication_group_name=MYSQL_MGR_NAME +loose-group_replication_view_change_uuid=MYSQL_MGR_VIEWID +loose-group_replication_local_address=MYSQL_MGR_LOCAL +loose-group_replication_group_seeds=MYSQL_MGR_SEEDS +loose-group_replication_communication_stack="XCOM" +loose-group_replication_recovery_use_ssl=OFF +loose-group_replication_ssl_mode=DISABLED +loose-group_replication_start_on_boot=START_MGR +loose-group_replication_bootstrap_group=BOOTSTRAP_MGR +loose-group_replication_exit_state_action=READ_ONLY +loose-group_replication_flow_control_mode="DISABLED" +loose-group_replication_single_primary_mode=SINGLE_PRIMARY +loose-group_replication_enforce_update_everywhere_checks=EVERYWHERE_CHECKS +loose-group_replication_majority_after_mode=ON +loose-group_replication_communication_max_message_size=10M +loose-group_replication_arbitrator=MYSQL_MGR_ARBITRATOR +loose-group_replication_single_primary_fast_mode=FAST_MODE +loose-group_replication_request_time_threshold=100 +loose-group_replication_primary_election_mode=GTID_FIRST +loose-group_replication_unreachable_majority_timeout=0 +loose-group_replication_member_expel_timeout=5 +loose-group_replication_autorejoin_tries=288 +loose-group_replication_recovery_get_public_key=ON +loose-group_replication_donor_threshold=100 # greatdb_ha -#loose-plugin_load_add = 'greatdb_ha.so' -#loose-greatdb_ha_enable_mgr_vip = OFF -#loose-greatdb_ha_mgr_vip_nic = 'eth0' -#loose-greatdb_ha_mgr_vip_ip = '172.16.0.252' -#loose-greatdb_ha_mgr_vip_mask = '255.255.255.0' -#loose-greatdb_ha_port = 33062 -#loose-greatdb_ha_mgr_read_vip_ips = "172.16.0.251,172.16.0.252" -#loose-greatdb_ha_mgr_read_vip_floating_type = "TO_ANOTHER_SECONDARY" -#loose-greatdb_ha_send_arp_packge_times = 5 -#loose-greatdb_ha_mgr_exit_primary_kill_connection_mode = OFF -report_host = REPORT_HOST -report_port = 3306 +#loose-plugin_load_add='greatdb_ha.so' +#loose-greatdb_ha_enable_mgr_vip=OFF +#loose-greatdb_ha_mgr_vip_nic='eth0' +#loose-greatdb_ha_mgr_vip_ip='172.16.0.252' +#loose-greatdb_ha_mgr_vip_mask='255.255.255.0' +#loose-greatdb_ha_port=33062 +#loose-greatdb_ha_mgr_read_vip_ips="172.16.0.251,172.16.0.252" +#loose-greatdb_ha_mgr_read_vip_floating_type="TO_ANOTHER_SECONDARY" +#loose-greatdb_ha_send_arp_packge_times=5 +#loose-greatdb_ha_mgr_exit_primary_kill_connection_mode=OFF +report_host=REPORT_HOST +report_port=3306 # InnoDB -innodb_buffer_pool_size = MYSQL_IBP -innodb_buffer_pool_instances = 8 -innodb_data_file_path = ibdata1:12M:autoextend -innodb_flush_log_at_trx_commit = 1 -innodb_log_buffer_size = 32M -innodb_redo_log_capacity = 128M -innodb_doublewrite_files = 2 -innodb_max_undo_log_size = 4G -innodb_io_capacity = 4000 -innodb_io_capacity_max = 8000 -innodb_open_files = 65534 -innodb_flush_method = O_DIRECT -innodb_lru_scan_depth = 4000 -innodb_lock_wait_timeout = 10 -innodb_rollback_on_timeout = ON -innodb_print_all_deadlocks = ON -innodb_online_alter_log_max_size = 4G -innodb_print_ddl_logs = ON -innodb_status_file = ON -innodb_status_output = OFF -innodb_status_output_locks = ON -innodb_sort_buffer_size = 64M -innodb_adaptive_hash_index = OFF -innodb_numa_interleave = OFF -innodb_spin_wait_delay = 20 -innodb_print_lock_wait_timeout_info = ON -kill_idle_transaction = 300 -innodb_data_file_async_purge = ON +innodb_buffer_pool_size=MYSQL_IBP +innodb_buffer_pool_instances=8 +innodb_data_file_path=ibdata1:12M:autoextend +innodb_flush_log_at_trx_commit=1 +innodb_log_buffer_size=32M +innodb_redo_log_capacity=128M +innodb_doublewrite_files=2 +innodb_max_undo_log_size=4G +innodb_io_capacity=4000 +innodb_io_capacity_max=8000 +innodb_open_files=65534 +innodb_flush_method=O_DIRECT +innodb_lru_scan_depth=4000 +innodb_lock_wait_timeout=10 +innodb_rollback_on_timeout=ON +innodb_print_all_deadlocks=ON +innodb_online_alter_log_max_size=4G +innodb_print_ddl_logs=ON +innodb_status_file=ON +innodb_status_output=OFF +innodb_status_output_locks=ON +innodb_sort_buffer_size=64M +innodb_adaptive_hash_index=OFF +innodb_numa_interleave=OFF +innodb_spin_wait_delay=20 +innodb_print_lock_wait_timeout_info=ON +kill_idle_transaction=300 +innodb_data_file_async_purge=ON diff --git a/README.md b/README.md index 877707a..febbb3e 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,6 @@ Dockerfiles可用于自定义和构建docker映像。[戳此阅读更多关于Do ## 基本信息 - 维护者: GreatSQL(greatsql@greatdb.com) - 联系人: greatsql@greatdb.com -- 最新版本:GreatSQL 8.0.32-27 -- 最后更新时间:2025-03-11 ## 镜像仓库列表 - GreatSQL,构建GreatSQL运行环境的Docker镜像