安装包:mysql-5.6.31.tar.gz

已有配置文件:my.cnf

*注意:本次Mysql的配置文件是在my.cnf的基础上更改得到的,my.cnf存放路径为/opt/rh/my.cnf

脚本中的num变量用来生成 mysql$num 用户,生成的配置文件命名也是以my$num.cnf命名的

每个实例必须有不同的端口号,不然会冲突,在my.cnf中初始端口号设置为3306,为了避免端口冲突,我在脚本中将端口号改为3306+$num

不同实例的目录命名也进行了微调,具体见脚本

为每个实例生成了一个日志目录,为log$num

my.cnf内容解析:

http://www.cnblogs.com/xiami-xm/p/5735805.html

#!/bin/bash
num=3
nowwhere=/usr/local/mysql$num/etc
#==============================
#判断每个重要步骤是否执行成功
#test()
#==============================
test()
{
if [ $? -eq 0 ]
then
echo "$1 $2 $3" >/opt/rh/log_ok 2>&1
else
echo "$1 $4 $5" >/opt/rh/log_error 2>&1
# exit 1
fi
}
#==============================
#判断环境
#test1()
#==============================
test1()
{
if [ $1 -eq 0 ]
then
echo "$2已经安装过了"
else
echo "$2未安装,下面安装$2"
yum -y install $2 && make && make install >/opt/rh/log$num/yum_install_$2 2>&1
test "[$2是否安装成功]" $2 [OK] $2 [Error]
fi
}
#==============================
#判断系统编译环境是否正常
#envir()
#==============================
envir()
{
gcc=`gcc --help|echo $?`
test1 $gcc gcc
gjj=`g++ --help|echo $?`
test1 $gjj gcc-c++
perl=`perl --help|echo $?`
test1 $perl perl
cmake=`cmake --help|echo $?`
test1 $cmake cmake
bison=`bison --help|echo $?`
test1 $bison bison
ncurses=`ncurses5-config --version|echo $?`
test1 $ncurses ncurses-devel
}
#=====================
#创建用户,创建目录
#adduser()
#========================
adduser()
{
groupadd mysql$num
test "[add mysql$num group]" "添加mysql$num组" [OK] "添加mysql$num组" [Error]
useradd mysql$num -g mysql$num -s /sbin/nologin
test "[add mysql$num user]" "添加mysql$num用户" [OK] "添加mysql$num用户" [Error]
mkdir -p /usr/local/mysql$num
test "mkdir /usr/local/mysql$num" "创建mysql$num安装目录" [OK] "创建mysql$num安装目录" [Error]
mkdir -p /usr/local/mysql$num/etc
test "mkdir /usr/local/mysql$num/etc" "创建mysql$num配置文件目录" [OK] "创建mysql$num配置文件目录" [Error]
mkdir -p /data$num/mysqldb$num
test "mkdir /data$num/mysqldb$num" "创建mysql$num数据目录" [OK] "创建mysql$num数据目录" [Error]
mkdir -p /data$num/mysqldb$num/binlog
test "mkdir /data$num/mysqldb$num/binlog" "创建mysql$num的binlog日志目录" [OK] "创建mysql$num的binlog日志目录" [Error]
mkdir -p /data$num/mysqldb$num/log
test "mkdir /data$num/mysqldb$num/binlog" "创建mysql$num的日常log目录" [OK] "创建mysql$num的日常log目录" [Error]
mkdir -p /opt/mysqltmp$num
test "mkdir /opt/mysqltmp$num" "创建mysql$num的临时表目录" [OK] "创建mysql$num的临时表目录" [Error]
mkdir -p /opt/rh/log$num
test "mkdir /opt/rh/log$num" "创建日志目录" [OK] "创建日志目录" [Error]
}
#=========================================
#安装mysql前奏,若未安装过,则解压压缩包
#安装过,则删除CMakeCache.txt文件
#pre_install_mysql()
#=============================================
pre_install_mysql()
{
if [ ! -d mysql-5.6.31 ]
then
tar -zxvf /opt/rh/mysql-5.6.31.tar.gz >/dev/null 2>&1
test "解压压缩包" "解压" [OK] "解压" [Error]
else
if [ -f /opt/rh/mysql-5.6.31/CMakeCache.txt ]
then
mv /opt/rh/mysql-5.6.31/CMakeCache.txt /opt/rh/mysql-5.6.31/CMakeCache.txt.bak$num
test "删除CMakeCache.txt" "删除" [OK] "删除" [Error]
fi
fi
}
#============================
#安装mysql
#install_mysql()
#============================
install_mysql()
{
cd /opt/rh/mysql-5.6.31
echo "下面编译安装mysql,可能需要几分钟,请稍等。。。"
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql$num -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/usr/local/mysql$num/etc -DDEFAULT_CHARSET=gbk -DDEFAULT_COLLATION=gbk_chinese_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data$num/mysqldb$num -DMYSQL_TCP_PORT=`expr 3306 + $num` >/opt/rh/log$num/cmake_mysql$num 2>&1
test "cmake mysql" cmake [OK] cmake [Error]
make && make install >/opt/rh/log$num/make_mkinstall$num 2>&1
test "make && make install" "make && make install" [OK] "make && make install" [Error]
}
#==================================
#初始化授权
#init_auth()
#=====================================
init_auth()
{
chown mysql$num:mysql$num /usr/local/mysql$num -R
test "更改/usr/local/mysql$num属主组" "更改" [OK] "更改" [Error]
chown mysql$num:mysql$num /data$num/mysqldb$num -R
test "更改/data$num/mysqldb$num属主组" "更改" [OK] "更改" [Error]
chown mysql$num:mysql$num /data$num/mysqldb$num/binlog
test "更改/data$num/mysqldb$num/binlog属主组" "更改" [OK] "更改" [Error]
chown mysql$num:mysql$num /data$num/mysqldb$num/log
test "更改/data$num/mysqldb$num/log属主组" "更改" [OK] "更改" [Error]
chown mysql$num:mysql$num /opt/mysqltmp$num
test "更改/opt/mysqltmp$num属主组" "更改" [OK] "更改" [Error]
chown mysql$num:mysql$num /opt/rh/log$num
test "更改/opt/rh/log$num属主组" "更改" [OK] "更改" [Error]
}
#=========================
#初始化
#init()
#==============================
init()
{
/usr/local/mysql/scripts/mysql_install_db --user=mysql$num --basedir=/usr/local/mysql$num --datadir=/data$num/mysqldb$num >/opt/rh/log$num/start_init 2>&1
test "[初始化是否成功]" "初始化" [OK] "初始化" [Error]
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld$num
test "[复制服务启动脚本mysql.server]" "复制mysql.server" [OK] "复制mysql.server" [Error]
chmod 755 /etc/init.d/mysqld$num
test "[更改mysqld$num权限为755]" "改mysqld$num权限" [OK] "改mysqld$num权限" [Error]
}
#====================
#更改配置文件
#cnf()
#======================
cnf()
{
cat /opt/rh/my.cnf |sed -e 's/mysql/mysql'$num'/g' -e 's/mysql'$num'd/mysqld'$num'/g' -e 's/3306/'`expr $num + 3306`'/g' -e 's/mysqld'$num'b/mysqldb'$num'/g' -e 's/mysql'$num'tmp/mysqltmp'$num'/g' -e 's/mysql'$num'.sock/mysql.sock/g' -e 's/mysql'$num'.pid/mysql.pid/g' -e 's/\/data/\/data'$num'/g' -e 's/mysqltmp/mysqltmp'$num'/g'> $nowwhere/my$num.cnf
test "[生成配置文件my$num.cnf]" "生成文件" [OK] "生成文件" [Error]
echo -e "MYSQL=/usr/local/mysql$num/bin \nPATH=$PATH:$MYSQL\nexport PATH" >> /etc/profile
test "[修改/etc/profile]" "修改" [Ok] "修改" [Error]
#生效
source /etc/profile
/etc/init.d/mysqld$num start >/opt/rh/log$num/mysql$num.start 2>&1
test "[启动服务mysqld$num]" "启动服务" [OK] "启动服务" [Error] }
#==================
#main
#====================
main()
{
envir
adduser
pre_install_mysql
install_mysql
init_auth
init
cnf
}
main;

Mysql单实例脚本自动化安装的更多相关文章

  1. MySQL5.7单实例二进制包安装方法

    MySQL5.7单实例二进制包安装方法 一.环境 OS: CentOS release 6.9 (Final)MySQL: mysql-5.7.20-linux-glibc2.12-x86_64.ta ...

  2. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  3. Mysql单实例数据库安装

    第1章 MySQL数据库安装 在当今的大中型互联网企业里,MySQL数据库服务几乎都是运行在Linux系列操作系统上,当然,你在可以运行在Windows/Unix等商业操作系统上,大中型互联网企业使用 ...

  4. MySQL 单实例编译安装 以及多实例安装简介

    这是基本的安装教程,与牛逼的大神无关,或许是牛逼大神不用看就会安装吧. CentOS 6.5 Final  x86_64 一.预安装软件包 1.开发包组合安装 yum groupinstall &qu ...

  5. Linux MySQL单实例源码编译安装5.6

    cmake软件 tar -zxvf cmake-2.8.11.2.tar.gz cd cmake-2.8.11.2 ./bootstrap make make install cd ../   依赖包 ...

  6. mysql单实例多库与多实例单库

    一.单实例多库: 一个mysql实例,创建多个数据目录. 规划: 实例路径:/usr/local/mysql 数据目录路径: (1)/usr/local/mysql/data (2)/usr/loca ...

  7. sql server 2008R2无人值守批处理脚本自动化安装

    ▲版权声明:本文为博主原创文章,未经博主允许不得转载. Microsoft SQL Server 2008 R2是一款软件,提供完整的企业级技术与工具,帮助您以最低的总拥有成本获得最有价值的信息.您可 ...

  8. sql server2014企业版无人值守批处理脚本自动化安装

    ▲版权声明:本文为博主原创文章,未经博主允许不得转载. SQL Server系列软件是Microsoft 公司推出的关系型数据库管理系统.2014年4月16日于旧金山召开的一场发布会上,微软CEO萨蒂 ...

  9. Linux MySQL单实例源码编译安装5.5.32

    cmake软件 tar -zxvf cmake-2.8.8.tar.gz cd cmake-2.8.8 ./bootstrap make make install cd ../   依赖包 yum i ...

随机推荐

  1. [AngularJS] Javascript scope and AngularJS $scope

    Scope resolution of our Angular documents works exactly the same way scope resolution works in plain ...

  2. c#_自动化测试 (五) 读写64位操作系统的注册表

    非Web程序(桌面程序)的设置一般都存在注册表中. 给这些程序做自动化测试时, 需要经常要跟注册表打交道. 通过修改注册表来修改程序的设置. 本章介绍如何利用C#程序如何操作注册表, 特别是如何操作6 ...

  3. 强烈推荐240多个jQuery插件提供下载

    jQuery 是继 prototype 之后又一个优秀的 Javascript 框架.其宗旨是—写更少的代码,做更多的事情.它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不及 的 ...

  4. Uploadify帮助文档

    auto 当文件被添加到队列时,自动上传. (字符串) buttonImg 浏览按钮的背景图片路径. (字符串) buttonText 默认在按钮上显示的文本. (字符串) cancelImg 取消按 ...

  5. 一个开源音乐播放器,低仿QQ音乐!

    有暇,弄了个音乐播放器,页面效果整体上参考了QQ音乐,相关API使用了易源数据提供的相关接口(https://www.showapi.com/api/lookPoint/213),在此表示感谢.先来看 ...

  6. poj1753解题报告(枚举、组合数)

    POJ 1753,题目链接http://poj.org/problem?id=1753 题意: 有4*4的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑->白或者白-> ...

  7. 安装openshift客户端工具 rhc

    安装ruby: $ sudo apt-get install ruby-full 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会安装下列额外的软件包: ...

  8. javaweb学习总结八(xml约束DTD)

    一:XML约束概念 xml约束:可以编写一个文档来约束xml文件的书写规范. xml语言格式比较严谨,不可能让程序员随意编写,所以必须要有约束. 二:常用的xml约束技术 1:DTD,document ...

  9. 使用GBK编码请求访问nodejs程序报415错误:Error: unsupported charset at urlencodedParser ...

    最近遇到一个问题,第三方用户向我们提供给的回调地址发送请求时一直报415错误,结果发现他们使用的是GBK编码请求,而我们使用的node + express4 程序,不支持GBK编码请求. 问题出在下面 ...

  10. Nginx - Additional Modules, Website Access and Logging

    The following set of modules allows you to configure how visitors access your website and the way yo ...