最近在研究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数据库的脚本,如有不对的地方请多多指教。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
[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源码包。

    接下来我们执行mysql安装脚本,这里要手动输入mysql版本号码5.5.25,然后脚本会自动安装,出去透透风,休息休息。

    最后查看一下mysql数据库的安装是否OK,通过查看mysql数据库启动文件,端口,数据文件等等都是正常的。

    总结:上面的脚本里面都做了简单的注释,下面着重说明一下在安装过程中容易出错的地方。
     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://down.51cto.com/data/2360815