暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql--rpm自动化安装

suger 2023-04-22
230


 

由于二进制包或编译安装时间太长,所以考虑使用rpm包的形式安装。可用于非生产环境安装,自己打一个合适参数的包,直接一键安装,非常方便。
这里使用的源码包是:mysql-boost-5.7.26.tar
这个包自带boost,不需要额外下载
复制

下载地址: https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/

现在开始安装rpmbuild工具: yum install rpmbuild rpmdevtools -y 切换到自己选择的目录下,创建工作目录: rpmdev-setuptree 目录结构如下: [root@master ~]# tree -L 3 └── rpmbuild ├── BUILD --源码包解压后的目录 ├── RPMS --生成rpm包的目录 ├── SOURCES --源码包放在这里 ├── SPECS --最重要的目录,使用这个目录下的.spec文件生成rpm包 └── SRPMS --存放生成的源码包

复制

现在将mysql-boost-5.7.26.tar安装包放置到SOURCES目录下,然后常见my.cnf和mysqld.service两个文件:
my.cnf:mysql配置文件
mysqld.service:systemd启动文件
在SPEC目录下创建打包文件:mysql.spec

Name: mysql Version: 5.7.26 #与源码包相同的版本号 Release: 1%{?dist} #自定义版本号 Summary: mysql #说明相关,任意填写 License: GPL #遵循协议 Source0: %{name}-boost-%{version}.tar.gz #放在SOURCE目录下 Source1: my.cnf Source2: mysqld BuildRequires: cmake /sbin/useradd /sbin/groupadd /bin/bash /bin/sh /bin/chown Requires: ncurses ncurses-devel pcre numactl-libs numactl bison libaio libaio-devel BuildRoot: %{_topdir}/BUILDROOT #安装的虚拟环境,在rpmbuild/BUILDROOT目录下 %define _prefix /app/mysql #自定义安装目录 %define _datadir /app/mysql/data %define MYSQL_USER mysql %define MYSQL_GROUP mysql %define mysql_conf /etc/my.cnf %define mysql_server /usr/lib/systemd/system/mysqld.service %define mysqld /etc/init.d/mysqld %description The MySQL(TM) software delivers a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. MySQL Server is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software. %prep rm -rf $RPM_BUILD_ROOT/%{name}-%{version} %setup -q -n %{name}-%{version} id $user >& /dev/null if [ $? -ne 0 ];then groupadd %{MYSQL_GROUP} useradd -g %{MYSQL_GROUP} %{MYSQL_USER} -s /bin/nologin >/dev/null 2>&1 fi %build cmake \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DMYSQL_DATADIR=%{_datadir} \ -DMYSQL_TCP_PORT=3307 \ -DWITH_BOOST=boost \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DSYSCONFDIR=/etc \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DTRACE=0 \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DWITH_EMBEDDED_SERVER=0 \ -DEXTRA_CHARSETS=all \ -DWITH_ZLIB=bundled \ -DWITH_SSL=bundled \ -DWITH_NUMA=ON \ #启用numa,需要numactl-libs库 -DINSTALL_MYSQLTESTDIR= #不安装mysql-test目录 make -j `cat /proc/cpuinfo | grep processor| wc -l` %install rm -rf %{buildroot} make DESTDIR=%{buildroot} install %{__install} -p -D -m 0644 %{SOURCE1} %{buildroot}/etc/my.cnf %{__install} -p -D -m 0755 %{SOURCE2} %{buildroot}/usr/lib/systemd/system/mysqld.service %{__install} -p -D -m 0755 %{buildroot}/%{_prefix}/support-files/mysql.server %{buildroot}/etc/init.d/mysqld %pre #rpm安装前执行 useradd -s /bin/nologin -M mysql >/dev/null 2>&1 %post #rpm安装后执行 chkconfig mysqld on %{_prefix}/bin/mysqld --initialize-insecure --basedir=%{_prefix} --datadir=%{_datadir} --user=mysql %{_prefix}/bin/mysql_ssl_rsa_setup --uid=%{MYSQL_USER} chown -R mysql:mysql %{_prefix} systemctl start mysqld %preun #卸载前执行 systemctl stop mysqld chkconfig --del mysqld %postun #卸载后执行 rm -rf /app/mysql >/dev/null 2>&1 rm -rf /app/mysql/data >/dev/null 2>&1 rm -rf /etc/init.d/mysql >/dev/null 2>&1 rm -rf /etc/my.cnf >/dev/null 2>&1 rm -rf /etc/my.cnf.d >/dev/null 2>&1 rm -rf /etc/mysql >/dev/null 2>&1 rm -rf /var/run/mysqld.pid >/dev/null 2>&1 userdel -r mysql >/dev/null 2>&1 %files #相对路径 %defattr(-,mysql,mysql) %doc %{_prefix} %{mysql_conf} %{mysqld} %{mysql_server} %changelog

复制

最后开始打包:

rpmbuild -bb mysql.spec

复制

漫长的等待…
打包完成后,会在RPM目录下生成两个包:

[root@master x86_64]# ll -lih 总用量 125M 6009063 -rw-r--r--. 1 root root 49M 7月 24 10:23 mysql-5.7.26-1.el7.centos.x86_64.rpm 6009064 -rw-r--r--. 1 root root 77M 7月 24 10:24 mysql-debuginfo-5.7.26-1.el7.centos.x86_64.rpm

复制

然后试一下包是否是可以安装的:

[root@master x86_64]# rpm -ivhU mysql-5.7.26-1.el7.centos.x86_64.rpm --nodeps 准备中... ################################# [100%] 正在升级/安装... 1:mysql-5.7.26-1.el7.centos ################################# [100%] 注意:正在将请求转发到“systemctl enable mysqld.service”。 Generating a 2048 bit RSA private key ........................................+++ ..+++ writing new private key to 'ca-key.pem' ----- Generating a 2048 bit RSA private key ......................................................................+++ ..................+++ writing new private key to 'server-key.pem' ----- Generating a 2048 bit RSA private key ............................+++ .....................................+++ writing new private key to 'client-key.pem' -----

复制

最后启动mysql服务并查看是否已经启动:

[root@master data]# systemctl start mysqld [root@master data]# netstat -lntup Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1314/sshd tcp6 0 0 :::3307 :::* LISTEN 111582/mysqld tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 1314/sshd udp 0 0 0.0.0.0:68 0.0.0.0:* 1101/dhclient udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd udp 0 0 0.0.0.0:811 0.0.0.0:* 1063/rpcbind udp 0 0 0.0.0.0:46339 0.0.0.0:* 1101/dhclient udp6 0 0 :::111 :::* 1/systemd udp6 0 0 :::811 :::* 1063/rpcbind udp6 0 0 :::42215 :::* 1101/dhclient

复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论