安装包: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

  1. #!/bin/bash
  2. num=3
  3. nowwhere=/usr/local/mysql$num/etc
  4. #==============================
  5. #判断每个重要步骤是否执行成功
  6. #test()
  7. #==============================
  8. test()
  9. {
  10. if [ $? -eq 0 ]
  11. then
  12. echo "$1 $2 $3" >/opt/rh/log_ok 2>&1
  13. else
  14. echo "$1 $4 $5" >/opt/rh/log_error 2>&1
  15. # exit 1
  16. fi
  17. }
  18. #==============================
  19. #判断环境
  20. #test1()
  21. #==============================
  22. test1()
  23. {
  24. if [ $1 -eq 0 ]
  25. then
  26. echo "$2已经安装过了"
  27. else
  28. echo "$2未安装,下面安装$2"
  29. yum -y install $2 && make && make install >/opt/rh/log$num/yum_install_$2 2>&1
  30. test "[$2是否安装成功]" $2 [OK] $2 [Error]
  31. fi
  32. }
  33. #==============================
  34. #判断系统编译环境是否正常
  35. #envir()
  36. #==============================
  37. envir()
  38. {
  39. gcc=`gcc --help|echo $?`
  40. test1 $gcc gcc
  41. gjj=`g++ --help|echo $?`
  42. test1 $gjj gcc-c++
  43. perl=`perl --help|echo $?`
  44. test1 $perl perl
  45. cmake=`cmake --help|echo $?`
  46. test1 $cmake cmake
  47. bison=`bison --help|echo $?`
  48. test1 $bison bison
  49. ncurses=`ncurses5-config --version|echo $?`
  50. test1 $ncurses ncurses-devel
  51. }
  52. #=====================
  53. #创建用户,创建目录
  54. #adduser()
  55. #========================
  56. adduser()
  57. {
  58. groupadd mysql$num
  59. test "[add mysql$num group]" "添加mysql$num组" [OK] "添加mysql$num组" [Error]
  60. useradd mysql$num -g mysql$num -s /sbin/nologin
  61. test "[add mysql$num user]" "添加mysql$num用户" [OK] "添加mysql$num用户" [Error]
  62. mkdir -p /usr/local/mysql$num
  63. test "mkdir /usr/local/mysql$num" "创建mysql$num安装目录" [OK] "创建mysql$num安装目录" [Error]
  64. mkdir -p /usr/local/mysql$num/etc
  65. test "mkdir /usr/local/mysql$num/etc" "创建mysql$num配置文件目录" [OK] "创建mysql$num配置文件目录" [Error]
  66. mkdir -p /data$num/mysqldb$num
  67. test "mkdir /data$num/mysqldb$num" "创建mysql$num数据目录" [OK] "创建mysql$num数据目录" [Error]
  68. mkdir -p /data$num/mysqldb$num/binlog
  69. test "mkdir /data$num/mysqldb$num/binlog" "创建mysql$num的binlog日志目录" [OK] "创建mysql$num的binlog日志目录" [Error]
  70. mkdir -p /data$num/mysqldb$num/log
  71. test "mkdir /data$num/mysqldb$num/binlog" "创建mysql$num的日常log目录" [OK] "创建mysql$num的日常log目录" [Error]
  72. mkdir -p /opt/mysqltmp$num
  73. test "mkdir /opt/mysqltmp$num" "创建mysql$num的临时表目录" [OK] "创建mysql$num的临时表目录" [Error]
  74. mkdir -p /opt/rh/log$num
  75. test "mkdir /opt/rh/log$num" "创建日志目录" [OK] "创建日志目录" [Error]
  76. }
  77. #=========================================
  78. #安装mysql前奏,若未安装过,则解压压缩包
  79. #安装过,则删除CMakeCache.txt文件
  80. #pre_install_mysql()
  81. #=============================================
  82. pre_install_mysql()
  83. {
  84. if [ ! -d mysql-5.6.31 ]
  85. then
  86. tar -zxvf /opt/rh/mysql-5.6.31.tar.gz >/dev/null 2>&1
  87. test "解压压缩包" "解压" [OK] "解压" [Error]
  88. else
  89. if [ -f /opt/rh/mysql-5.6.31/CMakeCache.txt ]
  90. then
  91. mv /opt/rh/mysql-5.6.31/CMakeCache.txt /opt/rh/mysql-5.6.31/CMakeCache.txt.bak$num
  92. test "删除CMakeCache.txt" "删除" [OK] "删除" [Error]
  93. fi
  94. fi
  95. }
  96. #============================
  97. #安装mysql
  98. #install_mysql()
  99. #============================
  100. install_mysql()
  101. {
  102. cd /opt/rh/mysql-5.6.31
  103. echo "下面编译安装mysql,可能需要几分钟,请稍等。。。"
  104. 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
  105. test "cmake mysql" cmake [OK] cmake [Error]
  106. make && make install >/opt/rh/log$num/make_mkinstall$num 2>&1
  107. test "make && make install" "make && make install" [OK] "make && make install" [Error]
  108. }
  109. #==================================
  110. #初始化授权
  111. #init_auth()
  112. #=====================================
  113. init_auth()
  114. {
  115. chown mysql$num:mysql$num /usr/local/mysql$num -R
  116. test "更改/usr/local/mysql$num属主组" "更改" [OK] "更改" [Error]
  117. chown mysql$num:mysql$num /data$num/mysqldb$num -R
  118. test "更改/data$num/mysqldb$num属主组" "更改" [OK] "更改" [Error]
  119. chown mysql$num:mysql$num /data$num/mysqldb$num/binlog
  120. test "更改/data$num/mysqldb$num/binlog属主组" "更改" [OK] "更改" [Error]
  121. chown mysql$num:mysql$num /data$num/mysqldb$num/log
  122. test "更改/data$num/mysqldb$num/log属主组" "更改" [OK] "更改" [Error]
  123. chown mysql$num:mysql$num /opt/mysqltmp$num
  124. test "更改/opt/mysqltmp$num属主组" "更改" [OK] "更改" [Error]
  125. chown mysql$num:mysql$num /opt/rh/log$num
  126. test "更改/opt/rh/log$num属主组" "更改" [OK] "更改" [Error]
  127. }
  128. #=========================
  129. #初始化
  130. #init()
  131. #==============================
  132. init()
  133. {
  134. /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
  135. test "[初始化是否成功]" "初始化" [OK] "初始化" [Error]
  136. cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld$num
  137. test "[复制服务启动脚本mysql.server]" "复制mysql.server" [OK] "复制mysql.server" [Error]
  138. chmod 755 /etc/init.d/mysqld$num
  139. test "[更改mysqld$num权限为755]" "改mysqld$num权限" [OK] "改mysqld$num权限" [Error]
  140. }
  141. #====================
  142. #更改配置文件
  143. #cnf()
  144. #======================
  145. cnf()
  146. {
  147. 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
  148. test "[生成配置文件my$num.cnf]" "生成文件" [OK] "生成文件" [Error]
  149. echo -e "MYSQL=/usr/local/mysql$num/bin \nPATH=$PATH:$MYSQL\nexport PATH" >> /etc/profile
  150. test "[修改/etc/profile]" "修改" [Ok] "修改" [Error]
  151. #生效
  152. source /etc/profile
  153. /etc/init.d/mysqld$num start >/opt/rh/log$num/mysql$num.start 2>&1
  154. test "[启动服务mysqld$num]" "启动服务" [OK] "启动服务" [Error]
  155.  
  156. }
  157. #==================
  158. #main
  159. #====================
  160. main()
  161. {
  162. envir
  163. adduser
  164. pre_install_mysql
  165. install_mysql
  166. init_auth
  167. init
  168. cnf
  169. }
  170. 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. C# TextBox 换行 滚动到最后一行

    .要让一个Windows Form的TextBox显示多行文本就得把它的Multiline属性设置为true. 这个大家都知道,可是当你要在代码中为Text属性设置多行文本的时候可能会遇到点麻烦:) ...

  2. java_接口和抽象类的区别

    1. 接口只能定义抽象方法,不包含已经提供实现的方法. 抽象类可以包含普通方法 2. 接口不能定义静态方法.抽象类可以定义静态方法 3. 接口里只能定义静态常量filed,不能定义普通filed. 抽 ...

  3. Scala中的构造器

    Scala中的构造器 Scala中的构造器分为两类,主构造器和辅助构造器 主构造器是通过类名后面跟的括号里加参数列表来定义 辅助构造器是通过关键字this定义 定义一个无参主构造器 class rec ...

  4. Linux 内核Coding Style整理

    转载:http://www.cnblogs.com/wang_yb/p/3532349.html 总结linux内核开发的coding style, 便于以后写代码时参考. 下面只是罗列一些规则, 具 ...

  5. c语言数组的初始化

    #include "stdio.h" int main() { ][]; a[][]="1,2,3,4,5,6,7,8,9,10,11,12"; ]=a,*p= ...

  6. iOS: 属性声明strong和retain竟然不一样

    今天和同事在处理一处用strong声明的Block属性引发的问题时偶然发现的.在诸多教程中都会讲到:声明属性时用strong或者retain效果是一样的(貌似更多开发者更倾向于用strong).不过在 ...

  7. Java设计模式14:常用设计模式之组合模式(结构型模式)

    http://blog.csdn.net/jason0539/article/details/22642281

  8. javacv

    (看到有很多同学都来看这篇文章,说明可能是有必要的,然后这个写的比较水,所以 如果求干货的话,请移步: http://www.cnblogs.com/letben/p/5885799.html 但是 ...

  9. [改善Java代码]不要让类型默默转换

    建议23:不要让类型默默转换 public class Client { // 光速是30万公里/秒,常量 public static final int LIGHT_SPEED = 30 * 100 ...

  10. applicationContext-mail.xml 模板

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...