墨墨导读:本文详细介绍一键式安装部署,定制化制作MySQL RPM包的过程,希望可以帮助到读者朋友 。
1
安装工具包
因为需要通过源码编译,需要按照比较多的依赖包
yum install make gcc rpm-build rpmdevtools -y
yum install make cmake gcc gcc-c++ bison libaio ncurses-devel perl perl-DBI perl-DBD-MySQL perl-Time-HiRes readline-devel numactl zlib-devel curldevel
2
初始化目录结构
mkdir -p /opt/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
[root@ss30 ~]# ll rpmbuild/
total 0
drwxr-xr-x 3 root root 25 Jul 26 20:51 BUILD
drwxr-xr-x 2 root root 6 Jul 26 20:15 BUILDROOT
drwxr-xr-x 2 root root 6 Jul 26 20:15 RPMS
drwxr-xr-x 2 root root 65 Jul 26 20:51 SOURCES
drwxr-xr-x 2 root root 30 Jul 26 20:41 SPECS
drwxr-xr-x 2 root root 6 Jul 26 20:15 SRPM
3
下载源码包
https://downloads.mysql.com/archives/community/
2)Mysql5.6后都要依赖boost_1_59_0.tar.gz包,所以这里我直接解压到BUILD目录下,不然检测不到;
下载地址如下:
https://www.boost.org/users/history/version_1_59_0.html
4
配置文件
[root@CS20190727 SPECS]# cat mysql5.7.26.spec
Name: mysql
Version: 5.7.26
Release: 1%{?dist}
License: GPL
URL: http://downloads.mysql.com/archives/get/file/mysql-5.7.26.tar.gz
Group: applications/database
Source: %{name}-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: cmake
Packager: enmo@enmotech.com
Autoreq: no
#Source: %{name}-%{version}.tar.gz
prefix: /opt/rpm/mysql-%{version}
Summary: MySQL 5.7.26
%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.
%define MYSQL_USER mysql
%define MYSQL_GROUP mysql
%prep
%setup -n mysql-%{version}
%build
#CFLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
#CXX=g++
#CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
#export CFLAGS CXX CXXFLAGS
cmake \
-DCMAKE_INSTALL_PREFIX=%{prefix} \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_TCP_PORT=3310 \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_BOOST=../boost_1_59_0 \
-Wno-dev
make -j `cat /proc/cpuinfo | grep processor| wc -l`
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
cp %{_sourcedir}/my.cnf $RPM_BUILD_ROOT%{prefix}/
%pre
groupadd mysql
useradd -g mysql -s /bin/nologin -M mysql >/dev/null 2>&1
mkdir -p /data
mkdir -p /data/mysql
mkdir -p /data/mysqltmp
mkdir -p /data/dbdata
chown -R mysql:mysql /data
chmod 700 /data/mysqltmp
%post
/bin/cp %{prefix}/support-files/mysql.server /etc/init.d/mysql
/bin/cp %{prefix}/my.cnf %{_sysconfdir}/my.cnf
chkconfig mysql on
%{prefix}/bin/mysqld --initialize-insecure --basedir=%{prefix} --datadir=/data/mysql --user=mysql
service mysql start
chown -R mysql:mysql /data/mysql
echo "export PATH=.:\$PATH:%{prefix}/bin;" >> ~/.bash_profile
source ~/.bash_profile
%preun
service mysql stop
chkconfig --del mysql
userdel -r mysql >/dev/null 2>&1
rm -rf %{prefix} >/dev/null 2>&1
rm -rf /data/mysql >/dev/null 2>&1
rm -rf /etc/init.d/mysql >/dev/null 2>&1
%files
%defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP})
%attr(755, %{MYSQL_USER}, %{MYSQL_GROUP}) %{prefix}/*
%changelog
5
执行命令打包
[ ]
[ ]
完成后在rpmbuild/RPM目录下就会两个rpm包
6
rpm安装MySQL
7
参考
联系客服