WEB开发网
开发学院数据库MySQL 发布MySQL集群自动安装脚本1.0 阅读

发布MySQL集群自动安装脚本1.0

 2007-11-11 14:00:35 来源:WEB开发网   
核心提示:来源:http://www.hackhome.com/2005/1-15/22330015062.shtml 经过几天的测试,终于可以发布了! 1. 在MySQL(和PHP搭配之最佳组合)源代码目录下新建脚本 install.sh,发布MySQL集群自动安装脚本1.0,把下面的代码添加到这个脚本中: #!/bin/b

来源:http://www.hackhome.com/2005/1-15/22330015062.shtml


经过几天的测试,终于可以发布了!

1. 在MySQL(和PHP搭配之最佳组合)源代码目录下新建脚本 install.sh,把下面的代码添加到这个脚本中: 


#!/bin/bash
#####################################################
## Title: MySQL(和PHP搭配之最佳组合) 4.1 Cluster Installation Script  ##
## Version: 1.0                  ##
## Date: 2004-11-11                ##
## Author: yipsilon                ##
## Email: yipsilon@163.com             ##
## License: General Public License (GPL)      ##
## Copyright(c) 2004, yipsilon All Rights Reserved ##
#####################################################
##         ChangeLog            ##
#####################################################
##      Installation Guide          ##
## 1. Copy the script file into MySQL(和PHP搭配之最佳组合) source path ##
## 2. Change script file's permission to 755   ##
## 3. execute it and wait for...         ##
#####################################################
############################################
######### MySQL(和PHP搭配之最佳组合) Server Config ##############
############################################
#Determine to install MySQL(和PHP搭配之最佳组合) server
#"0" means do not install server programs
INST_SERVER=1
#MySQL(和PHP搭配之最佳组合) installation path
INST_PATH="/usr/local/MySQL(和PHP搭配之最佳组合)"
#Define the ports of MySQL(和PHP搭配之最佳组合) installation, intput strings of PORT with whitespace separated.
#e.g. "3306 3307" means install two MySQL(和PHP搭配之最佳组合) 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(和PHP搭配之最佳组合) 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(和PHP搭配之最佳组合)"
fi
if [ 0 -lt $INST_SERVER ]
then
 echo "Now, installing the MySQL(和PHP搭配之最佳组合) servers..."
 
 #Loop to install MySQL(和PHP搭配之最佳组合) servers
 INSTALLED_SERVER_COUNT=1
 for PORT in $INST_PORTS
 do
 #Define the current MySQL(和PHP搭配之最佳组合) server installation path
  MYSL_PATH=$INST_PATH/$INSTALLED_SERVER_COUNT
  
  #Configure MySQL(和PHP搭配之最佳组合) server
  echo "Exec ./configure --prefix=$MYSL_PATH --with-pthread --with-unix-socket-path=$MYSL_PATH/var/MySQL(和PHP搭配之最佳组合).sock --with-MySQL(和PHP搭配之最佳组合)d-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(和PHP搭配之最佳组合).sock --with-MySQL(和PHP搭配之最佳组合)d-user=root --with-tcp-port=$PORT --with-charset=gbk --with-ndbcluster
 
  #Make MySQL(和PHP搭配之最佳组合) server
  echo "Exec make && make install" >> install.log
  make && make install
  
  #Create var directory for MySQL(和PHP搭配之最佳组合) 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(和PHP搭配之最佳组合).sock" >> $MYSL_PATH/var/my.cnf
  echo "" >> $MYSL_PATH/var/my.cnf
  echo "[MySQL(和PHP搭配之最佳组合)d]" >> $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(和PHP搭配之最佳组合).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(和PHP搭配之最佳组合) database
  echo "Exec $MYSL_PATH/bin/MySQL(和PHP搭配之最佳组合)_install_db" >> install.log
  $MYSL_PATH/bin/MySQL(和PHP搭配之最佳组合)_install_db
  
  #Create MySQL(和PHP搭配之最佳组合) control script
  if [ -e $MYSL_PATH/share/MySQL(和PHP搭配之最佳组合)/MySQL(和PHP搭配之最佳组合).server ]
  then
  
  #Use default MySQL(和PHP搭配之最佳组合) control script
  
  #Create MySQL(和PHP搭配之最佳组合) server start script
  echo "Create $MYSL_PATH/start" >> install.log
  echo "$MYSL_PATH/share/MySQL(和PHP搭配之最佳组合)/MySQL(和PHP搭配之最佳组合).server start" > $MYSL_PATH/start
  echo "Chmod 755 $MYSL_PATH/start" >> install.log
  chmod 755 $MYSL_PATH/start
  
  #Create MySQL(和PHP搭配之最佳组合) server stop script
  echo "Create $MYSL_PATH/stop" >> install.log
  echo "$MYSL_PATH/share/MySQL(和PHP搭配之最佳组合)/MySQL(和PHP搭配之最佳组合).server stop" > $MYSL_PATH/stop
  echo "Chmod 755 $MYSL_PATH/stop" >> install.log
  chmod 755 $MYSL_PATH/stop
  
  #Create MySQL(和PHP搭配之最佳组合) server restart script
  echo "Create $MYSL_PATH/restart" >> install.log
  echo "$MYSL_PATH/share/MySQL(和PHP搭配之最佳组合)/MySQL(和PHP搭配之最佳组合).server restart" > $MYSL_PATH/restart
  echo "Chmod 755 $MYSL_PATH/restart" >> install.log
  chmod 755 $MYSL_PATH/restart
  else
  
   #Use custom MySQL(和PHP搭配之最佳组合) control script
   
  #Create MySQL(和PHP搭配之最佳组合) server start script
  echo "Create $MYSL_PATH/start" >> install.log
  echo "$MYSL_PATH/libexec/MySQL(和PHP搭配之最佳组合)d &" > $MYSL_PATH/start
  echo "Chmod 755 $MYSL_PATH/start" >> install.log
  chmod 755 $MYSL_PATH/start
  
  #Create MySQL(和PHP搭配之最佳组合) server stop script
  echo "Create $MYSL_PATH/stop" >> install.log
  echo "$MYSL_PATH/bin/MySQL(和PHP搭配之最佳组合)admin -u root -p shutdown" > $MYSL_PATH/stop
  echo "Chmod 755 $MYSL_PATH/stop" >> install.log
  chmod 755 $MYSL_PATH/stop
  
  #Create MySQL(和PHP搭配之最佳组合) server restart script
  echo "Create $MYSL_PATH/restart" >> install.log
  echo "$MYSL_PATH/bin/MySQL(和PHP搭配之最佳组合)admin -u root -p shutdown" > $MYSL_PATH/restart
  echo "$MYSL_PATH/libexec/MySQL(和PHP搭配之最佳组合)d &" >> $MYSL_PATH/restart
  echo "Chmod 755 $MYSL_PATH/restart" >> install.log
  chmod 755 $MYSL_PATH/restart
  fi
  
  #Clean MySQL(和PHP搭配之最佳组合) 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(和PHP搭配之最佳组合) servers has been installed successfully."
 echo ""
 echo "1. To start MySQL(和PHP搭配之最佳组合) server, use the following command:"
 echo " cd <MySQL(和PHP搭配之最佳组合)_INSTALLATION_PATH>"
 echo " ./start"
 echo ""
 echo "2. To stop MySQL(和PHP搭配之最佳组合) server, use the following command:"
 echo " cd <MySQL(和PHP搭配之最佳组合)_INSTALLATION_PATH>"
 echo " ./stop"
 echo ""
 echo "3. To restart MySQL(和PHP搭配之最佳组合) server, use the following command:"
 echo " cd <MySQL(和PHP搭配之最佳组合)_INSTALLATION_PATH>"
 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(和PHP搭配之最佳组合) 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
3. 执行该脚本:./install.sh 或者 ./install <MySQL(和PHP搭配之最佳组合)安装目录>

具体使用说明,英语好的看脚本注释吧。

Tags:发布 MySQL 集群

编辑录入:coldstar [复制链接] [打 印]
赞助商链接