shell源码安装mariadb多台服务器

本文介绍了一个用于批量在多台服务器上部署Mariadb数据库的shell脚本。脚本首先检查目标服务器上的必要目录和文件,然后推送Mariadb源码包,进行编译安装,并配置启动。此外,还包含了自动化处理依赖安装、数据库初始化及配置修改等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值