最近在研究mysql叢集,至少要安裝部署2台或者多台mysql資料庫,操作起來即麻煩又很耗時,今天根據安裝步驟寫了一個Shell指令碼,只需執 行以下指令碼就可以快速安裝mysql資料庫,對初學者或者想學習mysql叢集的朋友非常方便,即省時,又省力。
作業系統及其mysql設定檔說明:
Linux系統:Centos5.8
mysql:mysql-5.5.25tar.gz源碼包
安裝目錄:/usr/local/mysql/
資料目錄:/data/mysql/3306/data/
二進位日誌:/data/msyql/3306/binlog/
relay日誌:/data/mysql/3306/relaylog/
設定檔:/data/mysql/3306/my.cnf
mysql.sock檔案:/data/mysql/3306/mysql.sock
下面是我編寫的一鍵安裝mysql資料庫的指令碼,如有不對的地方請多多指教。
[root@DB148 sh]# cat mysql_install_new_version.sh
#!/bin/bash
#創作日期:2012.6.16
#作者:張世鋒
#Mysql install directory and configuration files.
MYSQL_DIR="/data/software"
DATA_DIR="/data/mysql/3306/data"
BASE_DIR="/usr/local/mysql"
echo "please input mysql version:"
read VERSION
echo "Your mysql version is mysql-$VERSION.tar.gz"
if [ -e "$MYSQL_DIR/mysql-$VERSION.tar.gz" ]
then
echo "Please waitting..."
sleep 3
#Install mysql package dependent.
yum -y install gcc gcc-c++ gcc-g77 autoconf automake openssl zlib* fiex** libxml* \
ncurses-devel libmcrypt* libtool-ltdl-devel* &&
#Install cmake.
echo "The system is be installed cmake,please waitting..."
sleep 3
tar -zxvf $MYSQL_DIR/cmake-2.8.8.tar.gz -C $MYSQL_DIR &&
cd $MYSQL_DIR/cmake-2.8.8 &&
./configure \
--prefix=/usr/local/cmake &&
make && make install &&
#creating mysql account and group.
/usr/sbin/groupadd mysql &&
/usr/sbin/useradd -s /sbin/nologin -g mysql -M mysql &&
#Install mysql.
tar -zxvf $MYSQL_DIR/mysql-$VERSION.tar.gz -C $MYSQL_DIR
cd $MYSQL_DIR/mysql-$VERSION
echo "PATH=$PATH:/usr/local/cmake/bin" >> /etc/profile && source /etc/profile
cmake \
$MYSQL_DIR/mysql-$VERSION
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DYSQL_TCP_PORT=3306 \
-DMYSQL_DATADIR=$DATA_DIR \
-DMYSQL_UNIX_ADDR=/data/mysql/3306/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_DEBUG=0
make && make install &&
mkdir -p $DATA_DIR
mkdir -p `dirname $DATA_DIR`/binlog
mkdir -p `dirname $DATA_DIR`/relaylog
cp $MYSQL_DIR/mysql-$VERSION/support-files/my-small.cnf.sh `dirname $DATA_DIR`/my.cnf
cp $MYSQL_DIR/mysql-$VERSION/support-files/mysql.server.sh /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
sed -i 's/^basedir=/basedir=\/usr\/local\/mysql/' /etc/init.d/mysqld
sed -i 's/^datadir=/datadir=\/data\/mysql\/3306/' /etc/init.d/mysqld
sed -i 's/`@HOSTNAME@`/DB148/' /etc/init.d/mysqld
sh /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=$DATA_DIR &&
/etc/init.d/mysqld start
else
echo "Your input mysql version is not in $MYSQL_DIR"
fi
下面我們測試這個指令碼是否能正常執行。
首先建立目錄/data/software,在mysql官方網站下載mysql-5.5.25.tar.gz和cmake源碼包。
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131229/200205F06-0.jpg" />
接下來我們執行mysql安裝指令碼,這裡要手動輸入mysql版本號碼5.5.25,然後指令碼會自動安裝,出去透透風,休息休息。
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131229/2002051T3-1.jpg" style="cursor: default;" />
最後查看一下mysql資料庫的安裝是否OK,通過查看mysql資料庫開機檔案,連接埠,資料檔案等等都是正常的。
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131229/200205H12-2.jpg" style="cursor: default;" />
總結:上面的指令碼裡面都做了簡單的注釋,下面著重說明一下在安裝過程中容易出錯的地方。
1)echo "PATH=$PATH:/usr/local/cmake/bin" >> /etc/profile && source /etc/profile 指令碼裡面的這行代是修改環境變數,否則在編譯安裝mysql資料庫的時候出錯提示說找不到cmake命令。
2)sed -i 's/^basedir=/basedir=\/usr\/local\/mysql/' /etc/init.d/mysqld和 sed -i 's/^datadir=/datadir=\/data\/mysql\/3306/' /etc/init.d/mysqld 指令碼裡面的這兩行在mysql開機檔案指定mysql資料庫的安裝目錄和資料目錄存放目錄。
3)sed -i 's/`@HOSTNAME@`/DB148/' /etc/init.d/mysqld 指令碼的這行是用mysql伺服器的主機名稱替換掉`@HOSTNAME@`,否則在啟動資料庫的時候會提示下面錯誤,/etc/init.d/mysqld: line 263: @HOSTNAME@: command not found,但資料庫能正常啟動。
本文出自 “樸實的追夢者” 部落格,請務必保留此出處http://sfzhang88.blog.51cto.com/4995876/900846