rsy_mysql.sh (脚本存放位置是 /root/shell/mysql )
首先将这个脚本放置在一个用于管理多台服务器的管理机器中(下面称中央服)。首先要先下载好mariadb的tar包在/root/shell/mysql目录下: wget http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-5.5.64/source/mariadb-5.5.64.tar.gz
需要完整流畅运行这个脚本,则需要在中央服对其他服务器进行一个免密登录配置
#!/bin/bash
function rsy_mysql
{
num=`cat /root/shell/mysql/machine.txt | wc -l`
for ((i=1;i<="$num";i++))
do
#####从文件中选出ip和服务器对应的名字
host_name=`sed -n "$i"p /root/shell/mysql/machine.txt | awk '{print $1}'`
host_ip=`sed -n "$i"p /root/shell/mysql/machine.txt | awk '{print $2}'`
#####判断对应服务器是否存在 /opt/mysql 这个目录,存在则进行下一步,不存在就创建然后再进行下一步
check_mysqldir=`ssh "$host_ip" ls /opt/mysql &> /dev/nell && echo $?`
if [ "$check_mysqldir" == 0 ] ;then
echo -e "\033[032m $host_name 存在 /opt/mysql 这个目录 \033[0m"
else
echo -e "\033[031m $host_name 不存在 /opt/mysql 这个目录 \033[0m"
echo -e "\033[031m 正在创建 /opt/mysql 目录..."
sleep 3
ssh "$host_ip" mkdir /opt/mysql
echo -e "\033[032m $host_name /opt/mysql 目录已经创建好了"
fi
######判断服务器在/opt/mysql目录下是否存在mariadb的压缩包,存在则进行下一步,不存在则从本地推送过去再进行下一步
check_mysqlcode=`ssh $host_ip ls /opt/mysql/mariadb-5.5.65.tar.gz &> /dev/null && echo $?`
if [ "$check_mysqlcode" != 0 ];then
echo -e "\033[035m 复制mariadb源码包到 $host_name 主机.... \033[0m"
rsync -avz --progress -P /root/tar/mariadb/mariadb-5.5.65.tar.gz "$host_ip":/opt/mysql
else
echo -e "\033[032m $host_name 在/opt/mysql 目录下已经存在 mariadb-5.5.65.tar.gz \033[0m"
fi
#####解压mariadb压缩包
ssh "$host_ip" tar -zvxf /opt/mysql/mariadb-5.5.65.tar.gz -C /opt/mysql/
echo -e "\033[032m $host_name 压缩包已经解压成功 \033[0m"
sleep 3
#####删除mariadb自带的配置缓存文件(原本配置跟现在要配置的不符合,不删除的话编译会报错)
ssh "$host_ip" rm -rf /opt/mysql/mariadb-5.5.65/CMakeCache.txt
echo -e "\033[032m 已删除原始的配置文件 \033[0m"
sleep 3
#####安装mariadb相关的依赖
ssh "$host_ip" yum -y install cmake gcc-c++ bison ncurses ncurses-devel zlib-devel
#####cmake配置mariadb
ssh "$host_ip" cmake /opt/mysql/mariadb-5.5.65 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock
echo -e "\033[032m 已cmake成功 \033[0m"
sleep 3
#####编译
ssh "$host_ip" make /opt/mysql/mariadb-5.5.65
#####编译安装
ssh "$host_ip" make install /opt/mysql/mariadb-5.5.65
#####使用mariadb自带的脚本进行安装数据库
ssh "$host_ip" useradd mysql
ssh "$host_ip" /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
echo -e "\033[032m 数据库安装成功成功 \033[0m"
sleep 3
#####复制启动文件到 /usr/bin 目录下
echo -e "\033[032m 正在配置MySQL.... \033[0m"
ssh "$host_ip" cp /usr/local/mysql/bin/mysql /usr/bin/
ssh "$host_ip" cp /usr/local/mysql/support-files/mysql.server /usr/bin/mysqld
ssh "$host_ip" cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
#####启动mysql
ssh "$host_ip" mysqld start
mysql_version=`ssh "$host_ip" mysql --version | awk '{print $5}' | awk -F- '{print $1,$2}' | awk -F, '{print $1}'`
if [ "$mysql_version" == "5.5.65 MariaDB" ];then
echo -e "\033[032m $host_name 服务器 mysql 安装成功 mysql版本是 $mysql_version \033[0m "
echo -e "\033[032m $host_name 服务器安装配置mariadb成功 \033[0m"
else
echo -e "\033[031m error: $hosy_name 这台机器的mysql版本是 $mysql_version \033[0m"
echo -e "\033[031m error: $hosy_name mysql安装配置失败 \033[0m"
fi
echo -e "\033[034m **************************************************************************** \033[0m"
echo -e "\033[034m **************************************************************************** \033[0m"
done
}
rsy_mysql
machine.txt (服务器信息列表,该文件所在的路径是/root/shell/mysql)
因为是个人的服务器,所以在这里就用普通ip显示
aliyun 192.168.0.1
huaweiyun 192.168.0.2
wangyiyun 192.168.0.3
tencent 192.168.0.4