您现在的位置是:首页 > 文章详情

官答丨操作系统升级 Openssl 导致 GreatSQL 无法启动

日期:2024-06-26点击:164

官答丨操作系统升级 Openssl 导致 GreatSQL 无法启动

file

官答栏目针对 GreatSQL 数据库中的问题,选取官方论坛和讨论群中的典型提问进行深入解答。内容涵盖数据库安装部署、配置优化、故障排查、性能测试等方面。

在文章中,不仅提供解决方案,还会结合实例深入剖析问题的成因,提升读者对 GreatSQL 数据库的理解能力。

如果你在管理、使用 GreatSQL 数据库时遇到棘手的技术难题,想系统地学习提高数据库技能,就来看看官答的文章吧。这里不仅可以找到可靠的解决方法,还能从中学习到数据库优化的经验和思路。

通过阅读官答的内容,可以全面地掌握 GreatSQL 数据库管理的技能,熟练应对各种故障情况。快来关注官答栏目,与我们一起成长!


本问题来自讨论区群,用户使用数据库环境大概介绍如下:

名称 版本
操作系统 CentOS 7
系统内核版本 3.10.0-1160.118.1.el7.x86_64
openssl升级之前版本 1.0.2k
openssl升级之后版本 1.1.1w
数据库版本 GreatSQL-8.0.32-25

用户问题

用户提供的问题信息内容如下:

1、Openssl 版本升级之后 GreatSQL 无法启动报错如下:

-- Unit mysqld.service has begun starting up. Jun 07 14:03:21 m-node1 mysqld[34078]: /usr/local/GreatSQL/bin/mysqld: /usr/local/openssl/lib/libcrypto.so: version `OPENSSL_1.0.1_EC' not found (required by /usr/local/GreatSQL/bin/../lib/private/libssl.so.10) Jun 07 14:03:21 m-node1 mysqld[34078]: /usr/local/GreatSQL/bin/mysqld: /usr/local/openssl/lib/libcrypto.so: version `libcrypto.so.10' not found (required by /usr/local/GreatSQL/bin/../lib/private/libssl.so.10) Jun 07 14:03:21 m-node1 systemd[1]: mysqld.service: control process exited, code=exited status=1 Jun 07 14:03:21 m-node1 systemd[1]: Failed to start MySQL Server. 

2、用户经过检查,再次安装了 GreatSQL 的 rpm 依赖包,依然报错 so 动态库文件问题

$ yum install -y pkg-config perl libaio-devel numactl-devel numactl-libs net-tools openssl openssl-devel jemalloc jemalloc-devel perl-Data-Dumper perl-Digest-MD5 python2 perl-JSON perl-Test-Simple 

3、将 GreatSQL 命令配置到环境变量 PATH 中,依然报错 so 动态库文件问题

$ ln -s /usr/local/GreatSQL-8.0.32-25-Linux-glibc2.17-x86_64 /usr/local/greatsql $ vim /etc/profile export PATH=$PATH:/usr/local/greatsql/bin $ source /etc/profile $ mysql -V mysql: /usr/local/openssl/lib/libcrypto.so: version `libcrypto.so.10' not found (required by mysql) mysql: /usr/local/openssl/lib/libssl.so: version `libssl.so.10' not found (required by mysql) 

解答用户疑问

根据现象及报错内容分析,推测极可能是在 /usr/local 目录下安装了更高版本的 Openssl,导致动态库链接失败。

这种情况可以把 Openssl 下的 lib 库加载到 LD_LIBRARY_PATH 环境变量中。

解决用户问题

将 Openssl 下的 lib 库加载到 LD_LIBRARY_PATH 环境变量中。

意思也是为了,不将 /usr/local/openssl/lib 加载到 LD_LIBRARY_PATH 中了。

$ vim /etc/profile export LD_LIBRARY_PATH=/usr/lib64 $ source /etc/profile 

使用ldd命令检查mysqld是否缺失依赖so库文件

$ ldd mysqld | grep ssl libssl.so.10 => /usr/local/GreatSQL-8.0.32-25-Linux-glibc2.17- x86_64/bin/./../lib/private/libssl.so.10 (0x00007f292ed72000) $ ldd mysql | grep ssl libssl.so => /lib64/libssl.so (0x00007fdfc566d000) 

此时so动态库文件已经具备,再次可正常启动GreatSQL数据库实例。

$ /usr/local/greatsql/bin/mysqld --defaults-file=/data/greatsql/greatsql3306/my3306.cnf & $ ps -ef | grep mysqld $ ss -lnp | grep mysqld 

问题延伸

对于 systemd 方式启动 GreatSQL 数据库LD_LIBRARY_PATH变量怎么配置?

如果是用 systemd 方式启动 GreatSQL ,需要修改 systemd 的 service 文件,添加 LD_LIBRARY_PATH 这个环境变量参数即可,配置方式如下:

$ echo "LD_LIBRARY_PATH=/usr/lib64" >> /etc/sysconfig/mysql $ ldconfig $ vim /lib/systemd/system/greatsql.service [Unit] ......省略 [Service] EnvironmentFile=-/etc/sysconfig/mysql 

启动GreatSQL

# 重新加载systemd的service文件 $ systemctl daemon-reload # 启动GreatSQL服务 $ systemctl start greatsql # 查看GreatSQL服务运行状态 $ systemctl status greatsql # 查看GreatSQL实例进程 $ ps -ef | grep mysqld # 查看GreatSQL实例端口 $ ss -lnp | grep mysqld 

Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

原文链接:https://my.oschina.net/GreatSQL/blog/11218474
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章