MySQL自动化运维之安装篇(2)

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

%files就是指定哪些沙盒中的文件打入RPM包
%files指定的文件是相对路径,绝对路径应该是%{buildroot}/home/mysql/mysql-5.6.14
默认的%{buildroot}就是/root/rpmbuild/BUILDROOT/MySQL-5.6.14-1.el6.i386/

这个%{buildroot}是由spec文件的BuildRoot设置的
BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

%pre是RPM安装之前执行的命令
 这里主要是创建数据文件的目录和帐号
mkdir -p /data
 useradd -m -s /bin/bash mysql
 chown -R mysql:mysql /data

%post是RPM安装之后执行的命令
 这里主要是创建数据库实例,配置服务,配置环境变量
/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是卸载RPM包执行的命令,主要用于清理
service mysql stop
 chkconfig --del mysql
 userdel mysql
 rm -rf /home/mysql
 rm -rf /data
 rm -rf /etc/init.d/mysql

其实编写spec文件本质上是在写一个回调函数,rpmbuild根据spec的回调函数,生成一个Shell脚本,打包的过程就是执行Shell脚本的过程。

定制RPM安装包可以满足大规模自动化部署的场景
 因为它可以
 定制配置文件(将配置文件放在ftp或者http上,在%post段下载这个配置文件放在/etc下)
定制安装目录和数据文件,日志文件的目录(生产系统不同的挂载点,底层可能是不同的物理设备)
自动创建帐号,配置服务和环境变量

这些特性在规模很小时微不足道,
比如给研发和测试安装,人家还嫌你有毛病.明明一个rpm能搞定,你还整这么复杂,不是臭显摆吗?
生产环境装一个库运行好几年,再装的时候,这个RPM估计都忘了放哪里了...
但是一旦规模上来了,一天需要装个10台8台的,这个自动化安装的优点就显现出来了

--------------------------------------分割线 --------------------------------------

Ubuntu 14.04下安装MySQL

《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL

Ubuntu 14.04下搭建MySQL主从服务器

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb

MySQL-5.5.38通用二进制安装

--------------------------------------分割线 --------------------------------------

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

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