Home  >  Article  >  Database  >  MySQL自动化运维之安装篇

MySQL自动化运维之安装篇

WBOY
WBOYOriginal
2016-06-07 16:44:191013browse

MySQL安装一般使用RPM或者源码安装的方式。RPM安装的优点是快速,方便.缺点是不能自定义安装目录.如果需要调整数据文件和日志文件

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目录下有如下文件夹

 这个工具打包的过程大致如下,
编写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编译

 然后执行%install
将编译之后的代码真实的安装一遍,
它安装的目录是/root/rpmbuild/BUILDROOT/MySQL-5.6.14-1.el6.i386/home/mysql/mysql-5.6.14/
因为我们指定的安装目录是/home/mysql/mysql-5.6.14/,它相当于在一个沙盒中安装了一遍.
它会将沙盒中安装之后的文件打成RPM包

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn