首页域名资讯 正文

Percona-5.7.15 二进制版安装以及启动

2025-02-28 7 0条评论

不做多余的事

这边如何使用二进制版本安装Percona-5.7.15就不说了,和之前一模一样

1、解压

2、创建用户

3、创建相关目录并且赋予MySQL权限

4、使用mysqld初始化

麻烦的地方

按道理来说安装和启用MySQL应该是一件很容易的事,特别是使用二进制版本安装的特别容易的,只要解压初始化就行了。

但是在Percona-5.7.15(包括)之后的版本官网为了一个严重的MySQL漏洞,从而在启动MySQL的时候一些动态链接库只能从/usr/lib、/usr/lib64加载。而一般我安装MySQL都喜欢使用jemalloc这个内存分配,而不使用linux自带的和tcmalloc。所以在my.cnf配置文件中有如下一个配置

1 2 [ mysqld_safe ] malloc lib            = / usr / local / mysql / lib / mysql / libjemalloc . so . 1

有读过mysqld_safe启动程序源码的都知道在MySQL在寻找 jemalloc.so.1 这两个动态链接库的时候是先寻找到 my.cnf 中设置的 basedir

源码如下:

1 2 3 4 5 6 7 8 9 10 11 12 # # Add jemalloc to ld_preload if no other malloc forced – needed for TokuDB # if test $ load_jemalloc eq 1 then    for libjemall in “${MY_BASEDIR_VERSION}/lib/mysql” “/usr/lib64” “/usr/lib/x86_64-linux-gnu” “/usr/lib” ; do      if [ r “$libjemall/libjemalloc.so.1” ] ; then        add_mysqld_ld _preload “$libjemall/libjemalloc.so.1”        break      fi      done fi

启动报错

由于libjemalloc.so.1 在 basedir 中存在,可是MySQL又限制了只能在/usr/lib64、/usr/lib等等标准库中加载这些动态文件所以启动的时候会报错。

报错如下:

1 mysqld_safe malloc lib must be located in one of the directories : / usr / lib / usr / lib64 / usr / lib / i386 linux gnu / usr / lib / x86_64 linux gnu

其实查看报错的提示就很明显,就是对于加载这些库只能在/usr/lib /usr/lib64 /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu这个库中

解决

1、将libjemalloc.so.1文件拷贝到 /usr/lib /usr/lib64 /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu 这几个目录中

1 cp / usr / local / mysql / lib / mysql / libjemalloc . so . 1 / usr / lib64 / libjemalloc . so . 1

2、修改[mysqld_safe]

修改前:

1 2 [ mysqld_safe ] malloc lib            = / usr / local / mysql / lib / mysql / libjemalloc . so . 1

修改后:

1 2 [ mysqld_safe ] malloc lib            = / usr / lib64 / libjemalloc . so . 1

3、重启MySQL

1 2 3 4 5 6 [ root @ centos7 mysql ] # numactl –interleave=all /bin/bash /usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my_3306.cnf   mysqld_safe Adding ‘/usr/lib64/libjemalloc.so.1’ to LD_PRELOAD for mysqld mysqld_safe Adding ‘/usr/local/mysql/lib/libHotBackup.so’ to LD_PRELOAD for mysqld 2016 12 28T09 : 03 : 30.653874Z mysqld_safe Logging to ‘/u01/mysql/mysql_3306/logs/trace/mysql.err’ . 2016 12 28T09 : 03 : 30.675215Z mysqld_safe Transparent huge pages are already set to : never . 2016 12 28T09 : 03 : 30.692654Z mysqld_safe Starting mysqld daemon with databases from / u01 / mysql / mysql_3306 / data

可见已经启动成功了

当然可以去修改mysqld_safe文件代码,但是对于要脚本部署就比较麻烦了,需要使用sed对代码进行替换,因为每个版本MySQL的mysqld_safe都会有所不同。所以这边就使用拷贝的方法暂时解决。

注意

MySQL 的basedir是一个软连接,那libHotBackup.so也需要修改

具体最终操作如下:

1、拷贝相关动态链接库

1 2 3 cp / usr / local / mysql / lib / mysql / libjemalloc . so . 1 / usr / lib64 / libjemalloc . so . 1 cp / usr / local / mysql / lib / libHotBackup . so / usr / lib64 / libHotBackup . so mv / usr / local / mysql / lib / libHotBackup . so / usr / local / mysql / lib / libHotBackup . so . bak

2、修改my.cnf

1 2 [ mysqld_safe ] malloc lib            = / usr / lib64 / libjemalloc . so . 1

 

 

文章转载来自:trustauth.cn

文章版权及转载声明

本文作者:亿网 网址:https://edns.com/ask/post/150556.html 发布于 2025-02-28
文章转载或复制请以超链接形式并注明出处。