MySQL自动化运维之安装篇

MySQL安装一般使用RPM或者源码安装的方式。
RPM安装的优点是快速,方便.缺点是不能自定义安装目录.如果需要调整数据文件和日志文件的存放位置,还需要进行一些手动调整 源码安装的优点是可以自定义安装目录,缺点是编译时间长,过程复杂

其实还有一种方式,定制RPM包.
它相当于用源码安装的方式定制了一个RPM包.一次打包,可以多次使用
 它可以定制路径,安装时自动创建帐号,自动配置服务,环境变量等,并且安装过程快速,简单。
 在大规模部署的场景下,优点十分突出.
缺点是制作RPM包,需要自己编写Red Hat定义的spec文件.而spec文件编写的学习曲线比较陡.

需求如下
1.创建用户mysql
 2.数据库软件安装在/home/mysql/mysql-5.6.14目录
3.数据文件存放在/data目录下
4.配置服务,自动启动

首先,下载rpmbuild
 yum install rpm-build -y
它是Red Hat用于打RPM包的工具.
安装之后重启计算机,可以看到/root/rpmbuild目录下有如下文件夹

MySQL自动化运维之安装篇

这个工具打包的过程大致如下,
编写spec指定打包的过程
 将源码压缩包放在SOURCES目录下,
将源码解压缩到BUILD目录,执行make命令
 将make install 的结果放在BUILDROOT目录下,
最后将BUILDROOT下编译好的二进制文件制作成RPM包。
 并且可以指定在RPM安装之前,安装之后,卸载等过程执行的命令

首先,下载源码包

并将其复制到指定的目录
/root/rpmbuild/SOURCES/mysql-5.6.14.tar.gz

安装编译MySQL需要的依赖包
yum -y install make gcc-c++ cmake bison-devel  ncurses-devel

编写spec脚本
vim mysql.spec

Name:      MySQL
 Version:    5.6.14   
 Release:    1%{?dist}
 Summary:    MySQL-5.6.14 RPM

Group:      applications/database
 License:    GPL   
 URL:           
Source0:    mysql-5.6.14.tar.gz
 BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 BuildRequires:  cmake

AutoReqProv: no
 %description
 MySQL 5.6.14

%define MYSQL_USER mysql
 %define MYSQL_GROUP mysql

%prep
%setup -n mysql-%{version}

%build
 cmake \
 -DCMAKE_INSTALL_PREFIX=/home/mysql/mysql-5.6.14 \
 -DMYSQL_DATADIR=/data \
 -DSYSCONFDIR=/etc \
 -DWITH_MYISAM_STORAGE_ENGINE=1 \
 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_MEMORY_STORAGE_ENGINE=1 \
 -DWITH_READLINE=1 \
 -DMYSQL_UNIX_ADDR=/data/mysql.sock \
 -DMYSQL_TCP_PORT=3306 \
 -DENABLED_LOCAL_INFILE=1 \
 -DWITH_PARTITION_STORAGE_ENGINE=1 \
 -DEXTRA_CHARSETS=all \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci
make -j `cat /proc/cpuinfo | grep processor| wc -l`


 %install
 rm -rf %{buildroot}
 make install DESTDIR=%{buildroot}


 %pre
 mkdir -p /data
 useradd -m -s /bin/bash mysql
 chown -R mysql:mysql /data


 %post
 /home/mysql/mysql-5.6.14/scripts/mysql_install_db --basedir=/home/mysql/mysql-5.6.14 --datadir=/data --user=mysql
 cp /home/mysql/mysql-5.6.14/support-files/mysql.server /etc/init.d/mysql
 chkconfig mysql on
 service mysql start
 echo "export PATH=.:$PATH:/home/mysql/mysql-5.6.14/bin;" >> /home/mysql/.bashrc
 source /home/mysql/.bashrc

%preun
 service mysql stop
 chkconfig --del mysql
 userdel mysql
 rm -rf /home/mysql
 rm -rf /data
 rm -rf /etc/init.d/mysql

%clean
 rm -rf %{buildroot}


 %files
 %defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP})
 %attr(755, %{MYSQL_USER}, %{MYSQL_GROUP}) /home/mysql/mysql-5.6.14/*


 %changelog

其中
Source0:    mysql-5.6.14.tar.gz
这个压缩文件需要放在指定的目录中(/root/rpmbuild/SOURCES)
自动解压的时候,会在这个指定目录中找这个文件


AutoReqProv: no
这个参数必须设置,否则在安装的时候,会显示有依赖包的缺失.实际上是不需要的。

%setup -n mysql-%{version}
解压源码包之后,会进入目录执行build,它默认是根据%{name}和%{version}拼接的目录.
以MySQL为例,在spec中写的name为MySQL,version为5.6.14
那么它会进入MySQL-5.6.14的目录,
但是源码包解压之后的目录是mysql-5.6.14(小写)
所以在setup这个段使用-n参数,匹配这个目录.(就是说默认的设置不灵,需要自己匹配目录)

make -j `cat /proc/cpuinfo | grep processor| wc -l`
查看计算机有几个核,然后多线程编译

这个脚本的过程是这样的
 首先解压源码包
%prep
 %setup -n mysql-%{version}

然后执行%build的过程,make编译

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ad53e48b32369f502509a2951126e7db.html