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安装之前,安装之后,卸载等过程执行的命令

首先,下载源码包

http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.14.tar.gz

并将其复制到指定的目录

/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:        http://www.mysql.com

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

这个脚本各个Segment的作用请参考

http://machael.blog.51cto.com/829462/213477

其中

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包

%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台的,这个自动化安装的优点就显现出来了

参考:

源码安装MySQL

http://www.cnblogs.com/xiongpq/p/3384681.html

rpmbuild spec文件详解

http://machael.blog.51cto.com/829462/213477

http://www.worldhello.net/2011/04/02/2405.html

AutoReqProv参数的解释

http://blog.csdn.net/peng_zhou/article/details/3530230

mysql 自动化 安装_mysql自动化安装相关推荐

  1. 开源mysql执行平台_MySQL自动化审核平台部署说明

    背景: 关于MySQL的审核的重要性就不说明了,本文的自动化审核是通过Inception和SQLAdvisor实现的,具体的使用可以看它们各自的说明文档.这里大致介绍下如何部署和使用它们,其实该文章也 ...

  2. mysql二进制升级_MySQL二进制安装,升级,多实例部署

    MySQL二进制安装,升级,多实例部署 目标 理解线上部署考虑的因素 学会编译安装以及二进制安装mysql 学会升级mysql 学会多实例部署mysql数据库 学会合理部署mysql线上库 考虑因素: ...

  3. mysql devel 编译_mysql编译安装

    下载软件到usr/local目录下: cd /usr/local wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.19.t ...

  4. mysql 脚本安装工具_mysql 非安装版的一个自动安装脚本及工具(更新版)

    个人劳动,还请尊重,如若转载请注明出处.iihero@CSDN 看到有些朋友老问这个非安装版与安装版有什么区别(当然是windows平台) 干脆写了一个脚本自动为其创建iihero-的mysql服务. ...

  5. mysql非安装_mysql非安装版的装配

    mysql非安装版的安装 mac的版本下载http://www.macupdate.com/app/mac/6915/mysql 参考http://www.blogjava.net/niumd/arc ...

  6. mysql fabric搭建_MySQL Fabric 安装部署

    MySQL Fabric 是一个用于管理 MySQL 服务器群的可扩展框架.该框架实现了两个特性 - 高可用性 (HA) 以及使用数据分片的横向扩展.这两个特性既可以单独使用,也可以结合使用. 环境: ...

  7. mysql怎么设置免安装_MySQL免安装配置步骤

    此方式为直接解压压缩包安装MySQL 1.下载相关压缩包 下载后将压缩包解压至自己想要的文件路径即可 2.新建my.ini文件 在解压后的的根目录下新建一个my.ini文件 编辑文件内容为: [mys ...

  8. mysql tokudb编译安装_mysql/tokudb安装

    一.环境要求: Operating Systems:64-bit Linux Memory: >=1G 二.安装步骤 1.下载安装包mysql-5.5.41-tokudb-7.5.5-linux ...

  9. mysql 自动化 安装_MySQL自动化安装脚本

    注:因官方MySQL下载较慢,请先自行上传mysql安装包至/usr/local/src目录 #!/bin/bash #This shell script can be used to install ...

最新文章

  1. Boosted Tree:一篇很有见识的文章
  2. mysql pdm_mysql 生成pdm
  3. 分布式 dynamips+dyangen (更新于07.3.30)
  4. 洛谷P4831 Scarlet loves WenHuaKe
  5. Python3网络爬虫开发实战,使用IP代理爬取微信公众号文章
  6. 清华博士后黄石生:深度神经网络实时三维重建和在线语义分割技术报告
  7. CentOS 7 设置IP地址无效
  8. android关机充电流程、充电画面显示
  9. oracle的jdbc语句,Java Oracle jdbc SELECT语句
  10. Python计算机视觉中译本实例代码/数据集
  11. opencontrail vrouter 中的数据流程
  12. 魔兽争霸3 ce基址 偏移
  13. YBT 6 数学基础
  14. mysql sql stuff函数_数据库SQLServer Stuff函数用法
  15. CSP(共空间模式)的python实现
  16. 基金|最新“情绪领域”项目情报分享,速看
  17. 软件测试6年工作总结--转
  18. 网站性能优化有哪些方法
  19. win8怎么查看计算机配置,Win8系统查看电脑显卡配置参数的五个方法
  20. 68 ----柱面及其方程

热门文章

  1. 2018移动端页面适配-自适应最新方案直接写px--------通过gulp工作流搭建一体化的移动端开发环境
  2. 写博客的这几个月,获益良多
  3. UI设计师必知:link和@import引用css文件方法的区别
  4. css实现鼠标覆盖显示大图
  5. appium和selenium不同与相同之处
  6. webpack联邦模块之consumes方法
  7. elementUI的container布局设置全屏宽度
  8. 设计模式(五)--工厂模式汇总
  9. Appscan_web安全测试工具 (含修改启动浏览器的方法)
  10. poj-2955-Brackets-区间DP