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

2014-11-24 17:13:33 · 作者: · 浏览: 5
root}就是/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台的,这个自动化安装的优点就显现出来了


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


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