我们将MySQL制作定制化rpm包,然后放到我们的yum仓库中,在将yum所有客户端,都指向yum源,之后便是喝喝茶,看看片,轻松批量支配了,废话不多说,开干。
Yum安装先容
yum便是{Yellow dog Updater, Modified} ×××的狗,用来针对rpm包的管理器。
它的优点:大略、高效,办理依赖问题;缺陷:前期定制包繁芜
制作rpm包
FPM功能大略说便是将一种类型的包转换成另一种类型
rpm:redhat 包管理器,具有升级、查询、验证,安装,卸载等5大功能;
可通过rpm --help 获取帮助信息 ##--hep用来查看系统内置参数
1,rpm 支持那些包的转换?
源类型包:
dir :将目录打包成rpm包,便是将编译安装好的目录,直接打包,到对端就相称于安装目录解压。 rpm:对rpm进行转换 gem:对rubygem进行转换 pythom :将python包打包成相应的类型
目标类型包:可以转发成什么类型的包
rpm 转换为rpm包 deb 转换为deb包 solaris 转换为solaris包 puppet 转换为puppet模块
2,安装FPM打包工具
1)安装ruby模块
yum -y install ruby rubygems ruby-devel gem sources list # 查看当前利用的rubygems仓库
2)更新yum源
注:添加海内的 淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库
gem sources --add http://gems.ruby-china.org --remove http://rubygems.org/
3)安装fpm及json依赖包
gem install json -v 1.8.3gem install fpm -v 1.3.3
gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json须要ruby2.0以上,然后安装低版本的fpm,够用就行。
# 上面的2步安装仅适宜CentOS6系统,CentOS7系统一步搞定,即gem install fpm
4)验证
rpm --help #如果有输出代表安装成功
3,FPM参数解释
详细利用见fpm –help
常用参数-s 指定源类型 (例如dir 目录)-t 指定目标类型,即想要制作为什么包 (比如想做个rpm包)-n 指定包的名字 ,-name -v 指定包的版本号 (用于区分rpm,有同名字但版天职歧)-C 指定打包的相对路径 Change directory to here before searching forfiles-d 指定依赖于哪些包-f 第二次打包时目录下如果有同名安装包存在,则逼迫覆盖它-p 输出的安装包的目录,不想放在当前目录下就须要指定--post-install 实行rpm包之后所要运行的脚本;同--after-install--pre-install 软件包安装完成之前所要运行的脚本;同--before-install--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove
4,定制MySQL rpm包
用法:rpm包实行前运行的脚本 + rpm包 + rpm包实行后脚本
我们这个myslq 之前是编译安装的,以是rpm包运行前脚本没有,直接考虑哪些目录须要打包
1,确认打包目录
rpm须要打包的目录有哪些:(从你编译安装过程中查看哪些须要打包)
/data 目录 ##这个是多实例的数据存放目录/application/mysql-5.5.32/ #这个是mysql安装目录
2,创建脚本
打包后须要实行的命令,放入脚本中(从你编译安装过程中查看哪些命令须要解压目录后实行)
确认后,创建脚本mkdir -p /server/scripts && cd /server/scriptscat >>mysql_rpm.sh<<EOF #!/bin/bashuseradd -s /sbin/nologin mysql -M -u 503ln -s /application/mysql-5.5.32/ /application/mysql #创建软链接find /data -type f -name \公众mysql\"大众|xargs chmod +x #给mysql启动脚本+实行权限chown -R mysql.mysql /data #授权/data目录mysql 属主属组cp /application/mysql/bin/ /usr/local/sbin//data/3306/mysql start #启动多实例/data/3307/mysql startecho \公众# mysql multi instances\公众 >>/etc/rc.local #添加开机自启动echo \"大众/data/3306/mysql start \公众 >>/etc/rc.local echo \"大众/data/3307/mysql start \公众 >>/etc/rc.localEOF
3,天生rpm包
将目录打包(rpm包,包内包含脚本及目录)(前面是框 后面是苹果)
1)Mysql定制rpm包
[root@db02 scripts]# fpm -s dir -t rpm -n mysql -v5.5.32 --post-install /server/scripts/mysql_rpm.sh -f /data/ /application/mysql-5.5.32/no value for epoch is set, defaulting to nil {:level=>:warn}no value for epoch is set, defaulting to nil {:level=>:warn}Created package {:path=>\公众mysql-5.5.32-1.x86_64.rpm\"大众}[root@db02 scripts]# lsmysql-5.5.32-1.x86_64.rpm mysql_rpm.sh#-s 指定目录类型 -t 指定打包类型 -n指定rpm包名 -v 版本号 --post-install 打包后实行的脚本 -f 指定要打包的目录路径#把稳打包要利用相对路径问题
2)站点支配www bbs blog
fpm -s dir -t rpm -n three_web -v 1.0 -f /application/nginx/html/
3)LB负载均衡
fpm -s dir -t rpm -n lb -v 1.8.1 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/install_LB.sh -f /application/nginx-1.8.1/lb-1.8.1-1.x86_64查看rpm包内的信息
rpm -qp --scripts mysql-5.5.32-1.x86_64.rpm #查看包内脚本信息rpm -qpl mysql-5.5.32-1.x86_64.rpm ##查看rpm包内包含哪些文件及目录
把稳:mysql这个目录比较大,用fpm打包耗时长。平时我们有可能须要对nginx或php做优化,这样又得重新打包。因此我们可以将mysql分离出来,分别打包。只需在制作nginx+php的rpm包时添加mysql的依赖即可。
放入YUM仓库,客户端一键安装测试1)上传rpm包到yum仓库
scp mysql-5.5.32-1.x86_64.rpm root@172.16.1.101:/application/yum/centos6.8/x86_64#我这里yum仓库为内网利用IP地址:172.16.1.101,如果没有 可以考虑先给个外网IP10.0.0.101
2) 更新yum仓库list
[root@Qiuyuetao x86_64]# createrepo --update /application/yum/centos6.8/x86_64/rpm包名:mysql-5.5.32-1.x86_64.rpm
3)一键支配Mysql(客户端)
#开启一台新的设备,配置yum仓库客户端cd /etc/yum.repos.dmkdir yum_bak && mv repo yum_bakcat >>oldboy.repo<<EOF[oldboy]name=Serverbaseurl=http://172.16.1.101/yumenable=1gpgcheck=0EOFyum clean all ##清空缓存如果yum仓库中,一个软件有多个版本,可以采取如下方法安装,(你须要的版本)1,yum list|grep 关键字 2,将软件版本 复制3,yum install 复制内容
测试MySQL 登录
[root@db01 ~]# netstat -lntup|grep 33tcp 0 0 0.0.0.0:3306 0.0.0.0: LISTEN 2812/mysqld tcp 0 0 0.0.0.0:3307 0.0.0.0: LISTEN 2833/mysqld[root@db01 ~]# mysql -uroot -S /data/3306/mysql.sock Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.5.32-log Source distributionCopyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || test |+--------------------+4 rows in set (0.03 sec)
后面