本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7569904
建立时间:2006年5月29日




[MySQL]发布MySQL集群自动安装脚本1.0
软件技术

lhwork 发表于 2006/12/22 9:39:08

经过几天的测试,终于可以发布了! 1. 在MySQL源代码目录下新建脚本 install.sh,把下面的代码添加到这个脚本中:  #!/bin/bash ##################################################### ## Title: MySQL 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 source path ## ##  2. Change script file's permission to 755      ## ##  3. execute it and wait for...                  ## ##################################################### ############################################ ######### 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 <MYSQL_INSTALLATION_PATH>;"  echo "  ./start"  echo ""  echo "2. To stop mysql server, use the following command:"  echo "  cd <MYSQL_INSTALLATION_PATH>;"  echo "  ./stop"  echo ""  echo "3. To restart mysql server, use the following command:"  echo "  cd <MYSQL_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 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安装目录>; 具体使用说明,英语好的看脚本注释吧;英语不好的,那就再等等,过几天会release出来。


阅读全文(1519) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.094 second(s), page refreshed 144770875 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号