Heim Datenbank MySQL-Tutorial MySQL集群自动安装脚本

MySQL集群自动安装脚本

Jun 07, 2016 pm 04:04 PM
mysql 安装 源代码 脚本 自动 集群

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

1. 在MySQL源代码目录下新建脚本 install.sh,把下面的代码添加到这个脚本中:
<code>
#!/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 <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
</mysql_installation_path></mysql_installation_path></mysql_installation_path></code>
Nach dem Login kopieren
2. 设置脚本权限,让它可执行:chmod 755 install.sh
3. 执行该脚本:./install.sh 或者 ./install
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen May 08, 2024 am 10:24 AM

Fähigkeiten zur Verarbeitung von Big-Data-Strukturen: Chunking: Teilen Sie den Datensatz auf und verarbeiten Sie ihn in Blöcken, um den Speicherverbrauch zu reduzieren. Generator: Generieren Sie Datenelemente einzeln, ohne den gesamten Datensatz zu laden, geeignet für unbegrenzte Datensätze. Streaming: Lesen Sie Dateien oder fragen Sie Ergebnisse Zeile für Zeile ab, geeignet für große Dateien oder Remote-Daten. Externer Speicher: Speichern Sie die Daten bei sehr großen Datensätzen in einer Datenbank oder NoSQL.

Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Jun 03, 2024 pm 12:19 PM

Das Sichern und Wiederherstellen einer MySQL-Datenbank in PHP kann durch Befolgen dieser Schritte erreicht werden: Sichern Sie die Datenbank: Verwenden Sie den Befehl mysqldump, um die Datenbank in eine SQL-Datei zu sichern. Datenbank wiederherstellen: Verwenden Sie den Befehl mysql, um die Datenbank aus SQL-Dateien wiederherzustellen.

Wie optimiert man die MySQL-Abfrageleistung in PHP? Wie optimiert man die MySQL-Abfrageleistung in PHP? Jun 03, 2024 pm 08:11 PM

Die MySQL-Abfrageleistung kann durch die Erstellung von Indizes optimiert werden, die die Suchzeit von linearer Komplexität auf logarithmische Komplexität reduzieren. Verwenden Sie PreparedStatements, um SQL-Injection zu verhindern und die Abfrageleistung zu verbessern. Begrenzen Sie die Abfrageergebnisse und reduzieren Sie die vom Server verarbeitete Datenmenge. Optimieren Sie Join-Abfragen, einschließlich der Verwendung geeigneter Join-Typen, der Erstellung von Indizes und der Berücksichtigung der Verwendung von Unterabfragen. Analysieren Sie Abfragen, um Engpässe zu identifizieren. Verwenden Sie Caching, um die Datenbanklast zu reduzieren. Optimieren Sie den PHP-Code, um den Overhead zu minimieren.

Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Jun 02, 2024 pm 02:26 PM

Wie füge ich Daten in eine MySQL-Tabelle ein? Mit der Datenbank verbinden: Stellen Sie mit mysqli eine Verbindung zur Datenbank her. Bereiten Sie die SQL-Abfrage vor: Schreiben Sie eine INSERT-Anweisung, um die einzufügenden Spalten und Werte anzugeben. Abfrage ausführen: Verwenden Sie die Methode query(), um die Einfügungsabfrage auszuführen. Bei Erfolg wird eine Bestätigungsmeldung ausgegeben.

Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Jun 02, 2024 pm 02:13 PM

So verwenden Sie gespeicherte MySQL-Prozeduren in PHP: Verwenden Sie PDO oder die MySQLi-Erweiterung, um eine Verbindung zu einer MySQL-Datenbank herzustellen. Bereiten Sie die Anweisung zum Aufrufen der gespeicherten Prozedur vor. Führen Sie die gespeicherte Prozedur aus. Verarbeiten Sie die Ergebnismenge (wenn die gespeicherte Prozedur Ergebnisse zurückgibt). Schließen Sie die Datenbankverbindung.

Wie erstelle ich eine MySQL-Tabelle mit PHP? Wie erstelle ich eine MySQL-Tabelle mit PHP? Jun 04, 2024 pm 01:57 PM

Das Erstellen einer MySQL-Tabelle mit PHP erfordert die folgenden Schritte: Stellen Sie eine Verbindung zur Datenbank her. Erstellen Sie die Datenbank, falls sie nicht vorhanden ist. Wählen Sie eine Datenbank aus. Tabelle erstellen. Führen Sie die Abfrage aus. Schließen Sie die Verbindung.

So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 Dec 09, 2024 am 11:42 AM

Eine der wichtigsten Änderungen, die in MySQL 8.4 (der neuesten LTS-Version von 2024) eingeführt wurden, besteht darin, dass das Plugin „MySQL Native Password“ nicht mehr standardmäßig aktiviert ist. Darüber hinaus entfernt MySQL 9.0 dieses Plugin vollständig. Diese Änderung betrifft PHP und andere Apps

Der Unterschied zwischen Oracle-Datenbank und MySQL Der Unterschied zwischen Oracle-Datenbank und MySQL May 10, 2024 am 01:54 AM

Oracle-Datenbank und MySQL sind beide Datenbanken, die auf dem relationalen Modell basieren, aber Oracle ist in Bezug auf Kompatibilität, Skalierbarkeit, Datentypen und Sicherheit überlegen, während MySQL auf Geschwindigkeit und Flexibilität setzt und eher für kleine bis mittlere Datensätze geeignet ist. ① Oracle bietet eine breite Palette von Datentypen, ② bietet erweiterte Sicherheitsfunktionen, ③ ist für Anwendungen auf Unternehmensebene geeignet; ① MySQL unterstützt NoSQL-Datentypen, ② verfügt über weniger Sicherheitsmaßnahmen und ③ ist für kleine bis mittlere Anwendungen geeignet.

See all articles