RHEL8环境源码编译安装MySQL8.0

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 擅长主流数据Oracle、MySQL、PG、openGauss运维 备份恢复,安装迁移,性能优化、故障应急处理等

@TOC

前言

Linux源码安装MySQL在实际安装的操作系统进行可根据需要定制编译,最灵活,性能最好.


📣 1.源码安装包下载

官网下载地址:dev.mysql.com/downloads/m... 源码包下载选择Source Code,无需选择操作系统平台

📣 2.环境准备

安装任何数据库之前,操作系统环境准备至关重要,本次实操是基于RHEL8操作系统。源码安装对环境要求比较高,涉及部分系统内核的升级。

✨ 2.1 操作系统

root@jeames \~\]# cat /etc/redhat-release Red Hat Enterprise Linux release 8.1 (Ootpa)

✨2.2.关闭防火墙

查看防火墙是状态 [root@jeames ~]# systemctl status firewalld 关闭防火墙 [root@jeames ~]# systemctl stop firewalld 取消开机自启动 [root@jeames ~]# systemctl disable firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

✨2.3.selinux关闭

修改参数文件/etc/sysconfig/selinux中SELINUX的值为disabled [root@jeames ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 修改完成后需要重启服务器才生效

✨2.4.Host解析配置

bash 复制代码
[root@jeames ~]# hostname
jeames
[root@jeames ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#此处新增hostname与ip的对应
192.168.6.10 jeames

✨2.5.卸载mariadb

为了保证后续操作不会产生其他冲突,我们卸载部分操作系统自带原有的mariadb [root@jeames ~]# rpm -qa|grep mariadb [root@jeames ~]# rpm -qa|grep mariadb-libs|xargs rpm -e --nodeps

📣 3.配置yum安装依赖

bash 复制代码
1.创建挂载路径
[root@jeames ~]# mkdir -p /mnt/cdrom

2.挂载系统镜像光盘到指定目录
#因为光盘的格式通常是iso9660,意思是/dev/sr0挂载在/mnt/cdrom目录上
[root@jeames ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom
mount: /mnt/cdrom: WARNING: device write-protected, mounted read-only.

3.修改yum源配置文件
编辑rhel8-local.repo文件
[root@jeames ~]# cd /etc/yum.repos.d
[root@jeames yum.repos.d]# vi rhel8-local.repo
[localREPO]
name=localhost8
baseurl=file:///mnt/cdrom/BaseOS
enable=1
gpgcheck=0

[localREPO_APP]
name=localhost8_app
baseurl=file:///mnt/cdrom/AppStream
enable=1
gpgcheck=0

4.配置好后重建本地缓存
yum clean all 
yum makecache 
yum repolist
5.安装MySQL 8.0源码所需的依赖包
[root@jeames ~]# yum -y install lrzsz wget perl-Digest-MD5
[root@jeames ~]# yum -y install libaio

#编译软件依赖
[root@jeames ~]# yum -y install cmake gcc gcc-c++
[root@jeames ~]# yum -y install git make
[root@jeames ~]# yum install libtirpc-devel
[root@jeames ~]# yum insatll rpcgen
[root@jeames ~]# yum install libudev-devel
[root@jeames ~]# yum install ncurses-devel

#字符终端处理依赖
[root@jeames ~]# yum install openssl openssl-devel ncurses
注解:rpcgen需要手动下载安装包编译安装


以下就是具体解决Mysql源码编译报错Could not find rpcgen的方法。
rpcgen下载参考 https://github.com/thkukuk/rpcsvc-proto/releases

xz -d rpcsvc-proto-1.4.4.tar.xz
tar -xvf rpcsvc-proto-1.4.4.tar
cd rpcsvc-proto-1.4.4
./configure
make
make install

📣 4.源码安装

bash 复制代码
1.解压软件包
#创建软件目录
[root@jeames ~]# mkdir -p /soft

2.上传软件包
#通过Xftp工具或者SecureCRT自带的Sftp上传软件包
mysql-boost-8.0.27.tar.gz

3.校验安装包
[root@jeames ~]# cd /soft
[root@jeames soft]# md5sum mysql-boost-8.0.27.tar.gz
80310c5a1b24145fa072927ab99a4c0d  mysql-boost-8.0.27.tar.gz
注:md5sum是linux下的shell命令,其功能是计算检验MD5效验码,
是为了MySQL安装包是否损坏

4.解压缩安装包
[root@jeames soft]# tar -zxf mysql-boost-8.0.27.tar.gz

5.编译安装
#初始化
[root@jeames soft]# cd mysql-8.0.27
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1 \
-DDOWNLOAD_BOOST=1 \
-DFORCE_INSOURCE_BUILD=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=0 \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DWITH_BOOST=/soft/mysql-8.0.27/boost

#编译
[root@jeames mysql-8.0.27]# make -j4

#安装
[root@jeames mysql-8.0.27]# make install

✨4.1 安装报错处理

查阅相关信息后,认为是虚拟机内存不足造成的。 通过创建swap分区解决了这个问题,编译成功。加到内存到8G ,SWAP交换区增加了4G即可 可以通过以下方法增大swap交换分区 dd if=/dev/zero of=/swapfile bs=1024 count=4194304 mkswap /swapfile swapon /swapfile swapon -s vim /etc/fstab /swapfile swap swap defaults 0 0 mount -a

📣 5.安装MySQL

✨5.1 用户及组

groupadd mysql useradd -g mysql mysql chown -R mysql:mysql /usr/local/mysql

✨5.2 参数文件

cat > /etc/my.cnf <<"EOF" [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data port=3306 server_id=80273306 log-bin skip-name-resolve character_set_server=utf8mb4 #default-time-zone = '+8:00' log_timestamps = SYSTEM EOF

✨5.2 MySQL初始化

/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

✨5.4 环境变量设置

echo "export PATH=$PATH:/usr/local/mysql/bin" >> /root/.bashrc source /root/.bashrc

📣 6.启动关闭

启动MySQL: mysqld_safe & 登录MySQL,默认密码为空 : mysql -uroot -p 关闭MySQL mysqladmin -uroot -p shutdown

📣 7.开机启动配置

✨7.1 服务配置

bash 复制代码
vi /usr/lib/systemd/system/mysqld.service

##加入以下内容即可
[Unit]
Description=Mysql server
After=network.target
 
[Install]
WantedBy=multi-user.target
 
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID  
ExecStop=/bin/kill -s QUIT $MAINPID 
 
KillMode=process
LimitNOFILE=65535
Restart=on-failure
RestartSec=10
RestartPreventExitStatus=1
PrivateTmp=false

✨7.2 加载设置

systemctl daemon-reload systemctl stop mysqld systemctl enable mysqld
systemctl status mysqld systemctl start mysqld systemctl enable mysqld

相关推荐
光影少年2 天前
Promise状态和方法都有哪些,以及实现原理
javascript·promise·掘金·金石计划
光影少年2 天前
next.js和nuxt与普通csr区别
nuxt.js·掘金·金石计划·next.js
光影少年2 天前
js异步解决方案以及实现原理
前端·javascript·掘金·金石计划
光影少年5 天前
前端上传切片优化以及实现
前端·javascript·掘金·金石计划
ZTStory8 天前
JS 处理生僻字字符 sm4 加密后 Java 解密字符乱码问题
javascript·掘金·金石计划
光影少年9 天前
webpack打包优化都有哪些
前端·webpack·掘金·金石计划
冯志浩9 天前
Harmony Next - 手势的使用(二)
harmonyos·掘金·金石计划
冯志浩10 天前
Harmony Next - 手势的使用(一)
harmonyos·掘金·金石计划
光影少年12 天前
react虚拟列表实现及原理
前端·react.js·掘金·金石计划
光影少年12 天前
react性能优化有哪些
前端·react.js·掘金·金石计划