当前位置:首页 > 系统运维 > 正文内容

MySQL集群自动安装脚本

a8116255311年前 (2015-09-30)系统运维12

1. 在MySQL源代码目录下新建脚本 install.sh,把下面的代码添加到这个脚本中:


#!/bin/bash

############################################
######### MySQL Server Config ##############
############################################
#Determine to install MySQL server
#"0" means do not install server programs
INST_SERVER=1
#MySQL installation path
INST_PATH="/usr/local/mysql"
#Define the ports of MySQL installation, intput strings of
#PORT with whitespace separated.
#e.g. "3306 3307" means install two MySQL servers:
#     The first server will be installed to $INST_PATH/1 and listen 3306 port.
#     The second server will be installed to $INST_PATH/2 and listen 3307 port.
#     … …
INST_PORTS="3306"
#The management server information
MGM_HOST="192.168.1.253"
MGM_PORT="2200"
###########################################
######### MySQL Cluster Config ############
###########################################
#Determine to install cluster
#"0" means do not install cluster programs
INST_CLUSTER=1
#Define COMPUTERs in config.ini, intput strings of HostName with
#whitespace separated.
#The Id attribute is auto increment and start with 1.
#e.g. "192.168.1.253 192.168.252" will generate the following code
#  [COMPUTER]
#    Id=1
#    HostName=192.168.1.253
#  [COMPUTER]
#    Id=2
#    HostName=192.168.1.252
COMPUTERS="192.168.1.253 192.168.1.252"
#Define MGMs in config.ini, intput strings of HostName with whitespace separated.
#e.g. "192.168.1.253 192.168.252" will generate the following code
#  [MGM]
#    HostName=192.168.1.253
#  [MGM]
#    HostName=192.168.1.252
MGMS="192.168.1.253"
#Define DBs in config.ini, intput ids of ExecuteOnComputer with whitespace separated.
#e.g. "1 2" will generate the following code
#  [DB]
#    ExecuteOnComputer=1
#  [DB]
#    ExecuteOnComputer=2
DBS="1"
#Define APIs in config.ini, intput ids of ExecuteOnComputer with whitespace separated.
#e.g. "1 0 1 2" will generate the following code
#  [API]
#    ExecuteOnComputer=1
#  [API]
#  [API]
#    ExecuteOnComputer=1
#  [API]
#    ExecuteOnComputer=2
APIS="1 0 2 2"
######################################################################
########## Starting to install programs, do not modify them! #########
######################################################################
echo "Starting to install programs" > install.log
#Find installation path
if [ $# -gt 0 ]
then
  INST_PATH="$1"
else
  INST_PATH="/usr/local/mysql"
fi
if [ 0 -lt $INST_SERVER ]
then
 echo "Now, installing the MySQL servers…"

 #Loop to install mysql servers
 INSTALLED_SERVER_COUNT=1
 for PORT in $INST_PORTS
 do
  #Define the current mysql server installation path
   MYSL_PATH=$INST_PATH/$INSTALLED_SERVER_COUNT

   #Configure mysql server
   echo "Exec ./configure --prefix=$MYSL_PATH --with-pthread
--with-unix-socket-path=$MYSL_PATH/var/mysql.sock --with-mysqld-user=root
--with-tcp-port=$PORT --with-charset=gbk --with-ndbcluster" >> install.log
   ./configure --prefix=$MYSL_PATH --with-pthread
--with-unix-socket-path=$MYSL_PATH/var/mysql.sock
--with-mysqld-user=root --with-tcp-port=$PORT
--with-charset=gbk --with-ndbcluster

   #Make mysql server
   echo "Exec make && make install" >> install.log
   make && make install

   #Create var directory for mysql data
   mkdir -p $MYSL_PATH/var

   #Create my.cnf
   echo "Create $MYSL_PATH/var/my.cnf" >> install.log
   echo "[client]" > $MYSL_PATH/var/my.cnf
   echo "port=$PORT" >> $MYSL_PATH/var/my.cnf
   echo "socket=$MYSL_PATH/var/mysql.sock" >> $MYSL_PATH/var/my.cnf
   echo "" >> $MYSL_PATH/var/my.cnf
   echo "[mysqld]" >> $MYSL_PATH/var/my.cnf
   echo "ndbcluster" >> $MYSL_PATH/var/my.cnf
   echo "ndb_connectstring=host=$MGM_HOST:$MGM_PORT" >> $MYSL_PATH/var/my.cnf
   echo "user=root" >> $MYSL_PATH/var/my.cnf
   echo "port=$PORT" >> $MYSL_PATH/var/my.cnf
   echo "basedir=$MYSL_PATH/" >> $MYSL_PATH/var/my.cnf
   echo "datadir=$MYSL_PATH/var/" >> $MYSL_PATH/var/my.cnf
   echo "socket=$MYSL_PATH/var/mysql.sock" >> $MYSL_PATH/var/my.cnf
   echo "default-character-set=gbk" >> $MYSL_PATH/var/my.cnf
   echo "default-storage-engine=INNODB" >> $MYSL_PATH/var/my.cnf
   echo "max_connections=500" >> $MYSL_PATH/var/my.cnf
   echo "" >> $MYSL_PATH/var/my.cnf
   echo "query_cache_size=33M" >> $MYSL_PATH/var/my.cnf
   echo "table_cache=1520" >> $MYSL_PATH/var/my.cnf
   echo "tmp_table_size=16M" >> $MYSL_PATH/var/my.cnf
   echo "thread_cache=38" >> $MYSL_PATH/var/my.cnf
   echo "" >> $MYSL_PATH/var/my.cnf
   echo "#MyISAM Specific options" >> $MYSL_PATH/var/my.cnf
   echo "#skip-myisam" >> $MYSL_PATH/var/my.cnf
   echo "" >> $MYSL_PATH/var/my.cnf
   echo "#INNODB Specific options" >> $MYSL_PATH/var/my.cnf
   echo "#skip-innodb" >> $MYSL_PATH/var/my.cnf
   chmod 755 $MYSL_PATH/var/my.cnf

   #Install mysql database
   echo "Exec $MYSL_PATH/bin/mysql_install_db" >> install.log
   $MYSL_PATH/bin/mysql_install_db

   #Create mysql control script
   if [ -e $MYSL_PATH/share/mysql/mysql.server ]
   then

    #Use default mysql control script

    #Create mysql server start script
    echo "Create $MYSL_PATH/start" >> install.log
    echo "$MYSL_PATH/share/mysql/mysql.server start" > $MYSL_PATH/start
    echo "Chmod 755 $MYSL_PATH/start" >> install.log
    chmod 755 $MYSL_PATH/start

    #Create mysql server stop script
    echo "Create $MYSL_PATH/stop" >> install.log
    echo "$MYSL_PATH/share/mysql/mysql.server stop" > $MYSL_PATH/stop
    echo "Chmod 755 $MYSL_PATH/stop" >> install.log
    chmod 755 $MYSL_PATH/stop

    #Create mysql server restart script
    echo "Create $MYSL_PATH/restart" >> install.log
    echo "$MYSL_PATH/share/mysql/mysql.server restart" > $MYSL_PATH/restart
    echo "Chmod 755 $MYSL_PATH/restart" >> install.log
    chmod 755 $MYSL_PATH/restart
   else

     #Use custom mysql control script

    #Create mysql server start script
    echo "Create $MYSL_PATH/start" >> install.log
    echo "$MYSL_PATH/libexec/mysqld &" > $MYSL_PATH/start
    echo "Chmod 755 $MYSL_PATH/start" >> install.log
    chmod 755 $MYSL_PATH/start

    #Create mysql server stop script
    echo "Create $MYSL_PATH/stop" >> install.log
    echo "$MYSL_PATH/bin/mysqladmin -u root -p shutdown" > $MYSL_PATH/stop
    echo "Chmod 755 $MYSL_PATH/stop" >> install.log
    chmod 755 $MYSL_PATH/stop

    #Create mysql server restart script
    echo "Create $MYSL_PATH/restart" >> install.log
    echo "$MYSL_PATH/bin/mysqladmin -u root -p shutdown" > $MYSL_PATH/restart
    echo "$MYSL_PATH/libexec/mysqld &" >> $MYSL_PATH/restart
    echo "Chmod 755 $MYSL_PATH/restart" >> install.log
    chmod 755 $MYSL_PATH/restart
   fi

   #Clean mysql server to get ready for the next installation
   echo "Exec make clean" >> install.log
   make clean

   INSTALLED_SERVER_COUNT=$(($INSTALLED_SERVER_COUNT + 1))
 done

 echo "Configurations! MySQL servers has been installed successfully."
 echo ""
 echo "1. To start mysql server, use the following command:"
 echo "  cd 
      
       " echo " ./start" echo "" echo "2. To stop mysql server, use the following command:" echo " cd 
       
        " echo " ./stop" echo "" echo "3. To restart mysql server, use the following command:" echo " cd 
        
         " echo " ./restart" fi #Install cluster programs if [ 0 -lt $INST_CLUSTER ] then if [ -e $INST_PATH/1 ] then echo "Now, installing the cluster programs…" #Define the cluster installation path CLST_PATH=$INST_PATH/cluster #Create cluster directory echo "Exec mkdir -p $CLST_PATH" >> install.log mkdir -p $CLST_PATH #Copy cluster binaries echo "Exec cp $INST_PATH/1/bin/ndb* $CLST_PATH/" >> install.log cp $INST_PATH/1/bin/ndb* $CLST_PATH/ echo "Exec cp $INST_PATH/1/libexec/ndb* $CLST_PATH/" >> install.log cp $INST_PATH/1/libexec/ndb* $CLST_PATH/ #Create config.ini echo "Create $CLST_PATH/config.ini" >> install.log #Write default global configuration echo "[TCP DEFAULT]" >> $CLST_PATH/config.ini echo "" >> $CLST_PATH/config.ini echo "[MGM DEFAULT]" >> $CLST_PATH/config.ini echo "" >> $CLST_PATH/config.ini echo "[DB DEFAULT]" >> $CLST_PATH/config.ini echo " NoOfReplicas=1" >> $CLST_PATH/config.ini echo "" >> $CLST_PATH/config.ini echo "[API DEFAULT]" >> $CLST_PATH/config.ini echo "" >> $CLST_PATH/config.ini #Write computers configuration COMPUTER_ID=1 for COMPUTER in $COMPUTERS do echo "[COMPUTER]" >> $CLST_PATH/config.ini echo " Id=$COMPUTER_ID" >> $CLST_PATH/config.ini echo " HostName=$COMPUTER" >> $CLST_PATH/config.ini echo "" >> $CLST_PATH/config.ini COMPUTER_ID=$(($COMPUTER_ID + 1)) done #Write management server configuration for MGM in $MGMS do echo "[MGM]" >> $CLST_PATH/config.ini echo " HostName=$MGM" >> $CLST_PATH/config.ini echo "" >> $CLST_PATH/config.ini done #Write storage nodes configuration for DB in $DBS do echo "[DB]" >> $CLST_PATH/config.ini echo " ExecuteOnComputer=$DB" >> $CLST_PATH/config.ini echo "" >> $CLST_PATH/config.ini done #Write mysql servers configuration for API in $APIS do echo "[API]" >> $CLST_PATH/config.ini if [ 0 -ne $API ] then echo " ExecuteOnComputer=$API" >> $CLST_PATH/config.ini fi echo "" >> $CLST_PATH/config.ini done #Create Ndb.cfg echo "Create $CLST_PATH/Ndb.cfg" >> install.log echo "host=$MGM_HOST:$MGM_PORT" >> $CLST_PATH/Ndb.cfg echo "" >> $CLST_PATH/Ndb.cfg echo "Configurations! Cluster programs has been installed successfully." echo "" echo "1. To start management server(MGM), use the following command:" echo " cd $CLST_PATH" echo " ./ndb_mgmd" echo "" echo "2. To start stroage node(DB), use the following command:" echo " cd $CLST_PATH" echo " ./ndbd" echo "" echo "3. To manage the cluster, use the following command:" echo " cd $CLST_PATH" echo " ./ndb_mgm" echo "" echo "4. Else, nothing to do.;)" echo "" echo "Enjoy yourself." else echo "Cluster installation has been stopped, the reason is:"; echo " No database server installed." echo "So you can not use cluster programs in this machine!" fi fi 
        
       
      
2. 设置脚本权限,让它可执行:chmod 755 install.sh

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/22448.html

分享给朋友:

“MySQL集群自动安装脚本” 的相关文章

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态   Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

出现该问题的原因是由于使用第三方优化软件消除快捷方式的小箭头引起的。 1、在开始搜索框中键入“regedit”,按回车键打开注册表编辑器。 2、依次定位到以下分支:HKEY_CLASSES_ROOTlnkfile。 3、在lnkfile项上鼠标右键单击“新建”——“字符串值”。...

windows 7系统开机后出现黑屏提示Windows无法启动

windows 7系统开机后出现黑屏提示Windows无法启动

一些用户的Windows 7系统开机后出现黑屏,代码为 Windows无法启动: WindowsSystem32ConfigSystem”。这个问题该如何修复呢?现在小编就给大家分析一下吧。 其实这个代码的意思是引导文件丢失了,引导文件(NTLDR)一般存放于C盘根目录下,是一个具有隐藏和只读属性...

Windows7截图出现黑屏导致截的图黑呼呼一片

Windows7截图出现黑屏导致截的图黑呼呼一片

最近一些Windows 7用户反馈说,自己在截屏的时候出现黑屏,导致自己截的图黑呼呼一片。这个问题该怎么解决?今天小编就为大家提供一个解决的方法。 步骤 1 在windows xp时代,很多用户都曾被视频截图后的“全黑图片”困扰。对此,在解决本地播放时出现的截图变黑问题,一般有两个方法可以用来解...

windows 7如何给c盘扩容 图解windows 7 64位系统C盘扩容方法(自

windows 7如何给c盘扩容 图解windows 7 64位系统C盘扩容方法(自

用Windows 7久了,C盘越来越大,原来50G的空间基本用完了,又不想重装系统,就想着能不能直接扩容。 在网上搜了半天,看了无数教程,都写得不明不白的,结合了几篇教程才终于搞明白。 重新总结一下,方便有需要的人。 所用软件: http://www.jb51.net/softs/57895...

windows 7系统开机提示Windows驱动器未就绪的故障原因及解决方法

windows 7系统开机提示Windows驱动器未就绪的故障原因及解决方法

 故障分析: 主要原因应该是不存在软盘驱动器或驱动器未安装,找到故障原因后,Windows 7 32位系统只要将软盘驱动器禁用就可以了。 解决措施: 1、右键点击计算机,选择管理,打开计算机管理窗口; 2、在计算机管理中,找到设备管理器,在右边的软盘控制器中右击,选择卸载即可。 以...