MySQL集群自动安装脚本

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

#!/bin/bash 
##################################################### 
## Title: MySQL 4.1 Cluster Installation Script    ## 
## Version: 1.0                                    ## 
## Date: 2004-11-11                                ## 
## Author: yipsilon                                ## 
## Email:                          ## 
## 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 
1. 在MySQL源代码目录下新建脚本 install.sh,把下面的代码添加到这个脚本中:
2. 设置脚本权限,让它可执行:chmod 755 install.sh 
3. 执行该脚本:./install.sh 或者 ./install <MySQL安装目录>;




      本文转自glying 51CTO博客,原文链接:http://blog.51cto.com/liying/967695,如需转载请自行联系原作者



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
1月前
|
关系型数据库 MySQL 数据库连接
关于MySQL-ODBC的zip包安装方法
关于MySQL-ODBC的zip包安装方法
|
1月前
|
关系型数据库 MySQL 数据库
rds安装数据库客户端工具
安装阿里云RDS的数据库客户端涉及在本地安装对应类型(如MySQL、PostgreSQL)的客户端工具。对于MySQL,可选择MySQL Command-Line Client或图形化工具如Navicat,安装后输入RDS实例的连接参数进行连接。对于PostgreSQL,可以使用`psql`命令行工具或图形化客户端如PgAdmin。首先从阿里云控制台获取连接信息,然后按照官方文档安装客户端,最后配置客户端连接以确保遵循安全指引。
86 1
|
5天前
|
关系型数据库 MySQL 数据库
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
28 4
|
1月前
|
SQL 存储 运维
MySQL高可用性:主从复制和集群
MySQL高可用性:主从复制和集群
36 0
|
29天前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 中apt 安装MySQL数据库
Ubuntu 中apt 安装MySQL数据库
69 0
|
1天前
|
关系型数据库 MySQL Windows
windows安装MySQL5.7教程
windows安装MySQL5.7教程
6 0
|
1天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用
|
8天前
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
20 0
|
8天前
|
关系型数据库 MySQL Linux
centos7安装mysql-带网盘安装包
centos7安装mysql-带网盘安装包
53 2