最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQL集群自动安装脚本

来源:动视网 责编:小采 时间:2020-11-09 14:42:08
文档

MySQL集群自动安装脚本

MySQL集群自动安装脚本:1. 在MySQL源代码目录下新建脚本 install.sh,把下面的代码添加到这个脚本中: #!/bin/bash##################################################### MySQL Server Config ##################################
推荐度:
导读MySQL集群自动安装脚本:1. 在MySQL源代码目录下新建脚本 install.sh,把下面的代码添加到这个脚本中: #!/bin/bash##################################################### MySQL Server Config ##################################


1. 在MySQL源代码目录下新建脚本 install.sh,把下面的代码添加到这个脚本中: #!/bin/bash##################################################### MySQL Server Config ###########################################################Determine to install M

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
3. 执行该脚本:./install.sh 或者 ./install

文档

MySQL集群自动安装脚本

MySQL集群自动安装脚本:1. 在MySQL源代码目录下新建脚本 install.sh,把下面的代码添加到这个脚本中: #!/bin/bash##################################################### MySQL Server Config ##################################
推荐度:
标签: 自动 安装 脚本
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top