自动化安装数据库

2 篇文章 0 订阅
2 篇文章 0 订阅

下面展示一些 内联代码片
一、实现自动化之前应该先看看具体的实际安装操作步骤。
1.软件需要有专用的用户和相应的用户组
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql
2.解压相应的二进制包
tar -xf xxx.tar.gz
3.安装相应的编译环境和依赖关系包
yum install xxxx
4.编译二进制包并安装
数据库用cmake编译,其他软件通常用./configre编译
5.数据目录创建和权限赋予
6.初始化数据库
mysql_install_db命令,在安装的目录下的scripts目录下
7.启动开机自启和相应的service启动或者是systemd启动
8.配置配置文件,启动数据库。

#! /bin/bash
sprint () {   #安装相关的数据包的调度的打印函数
if [ $1 -eq 0 ];then
        echo -e "\e[1;32minstall ${2} successful \e[0m"
else
        echo -e "\e[1;31minstall ${2} fail \e[0m"
	exit 1
fi
}

mysql_tar_file=`ls mariadb*.tar*`    #获取脚本目录下的mariadb安装包的全名
user='mysql'						#设置变量用于后面创建数据库用户和组
group='mysql'
#用数据的形式存储需要安装的yum包
install_rpm_list=(autoconf automake binutils bison flex gcc gcc-c++ gettext libtool make patch pkgconfig redhat-rpm-config rpm-build rpm-sign ncurses-devel openssl-devel libevent-devel cmake byacc cscope ctags diffstat doxygen elfutils gcc-gfortran git indent intltool patchutils rcs subversion swig systemtap ElectricFence ant babel bzr chrpath cmake compat-gcc-44 compat-gcc-44-c++ cvs dejagnu expect gcc-gnat gcc-objc gcc-objc++ imake javapackages-tools ksc libstdc++-docs mercurial mod_dav_svn nasm perltidy python-docs rpmdevtools rpmlint systemtap-sdt-devel systemtap-server) 

#查询进程是否启动,-v是排查grep本身的进程,如果不排除,每次必能找到一个grep的进程
ps aux |grep mysqld_safe | grep -v grep > /dev/null  
if [ $? -eq 0 ]
then
	echo -e "\e[1;32mexist mysql,break install\e[0m"
	exit 0
fi

#上面用命令获取到的文件是否存在,不存在直接退出
if [ ! -f ${mysql_tar_file} ];then
	echo -e "\e[1;31mno exsit ${mysql_tar_file}\e[0m"
	exit 1
fi


if [ -d ${mysql_tar_file%%\.tar\.gz} ];then #是否存在解压收的目录,存在打印存在并跳过。
	echo -e "\e[1;32malready exsit file zabbix-3.0.28.tar.gz\e[0m"
else
	tar xf ${mysql_tar_file} &> /dev/null	#不存在就解压
	if [ $? -eq 0 ];then		#判断解压是否正常,如果不正常,需要抛出异常
		echo -e "\e[1;32mutar ${mysql_tar_file} seccussful\e[0m"
	else
	    echo -e "\e[1;31mutar ${mysql_tar_file} fail\e[0m"
	    exit 1					#不正常退出,退出码为1
	fi
fi

#判断是否存在组,如果存在直接跳过
groups ${group}  &> /dev/null	
if [ $? -eq 0 ];then
	echo -e "\e[1;32mexsit group ${group}\e[0m"
else
	echo -e "\e[1;32mcreate group ${group} successful\e[0m"
        groupadd -r ${group}
fi

#判断是否存在用户,如果存在直接跳过
id ${user} &> /dev/null
if [ $? -eq 0 ];then
	echo -e "\e[1;32mexsit user ${user}\e[0m"
else
	echo -e "\e[1;32mcreate user ${user} successful\e[0m"
        useradd -r -g ${group} -s /sbin/nologin ${user}
fi

#使用for循环,循环数组的,或者相应的安装包的名称进行安装
for rpm_name in ${install_rpm_list[@]};do
	rpm -q ${rpm_name} &> /dev/null   #查询是否已经安装,如果已经安装就不在安装。
	if [ $? -eq 0 ]
	then
		echo  -e "\e[1;32mexist rpm ${rpm_name}\e[0m"	
	else
		yum install ${rpm_name} -y &> /dev/null
		sprint $? ${rpm_name}   #调度第一行的打印函数
	fi
done

cp /usr/lib64/libldap* /usr/lib/
cd ${mysql_tar_file%%\.tar\.gz}  #切换到解压目录

#查看是否存在目录/usr/local/mariadb,如果存在就不进行编译安装
if [ ! -d /usr/local/mariadb ];then
	cmake . \
	-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
	-DMYSQL_DATADIR=/mydata/data \
	-DSYSCONFDIR=/etc \
	-DWITH_INNOBASE_STORAGE_ENGINE=1 \
	-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
	-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
	-DWITH_READLINE=1 \
	-DWITH_SSL=system \
	-DWITH_ZLIB=system \
	-DWITH_LIBWRAP=0 \
	-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
	-DDEFAULT_CHARSET=utf8 \
	-DDEFAULT_COLLATION=utf8_general_ci
	if [ $? -ne 0 ];then
		exit 1
	fi
	make && make install || exit 2
fi
#切换到编译后的软件目录
cd /usr/local/mariadb
chown -R mysql.mysql 
#执行初始化.
scripts/mysql_install_db  --datadir=/mydata/data --user=mysql --group=mysql &> /dev/null
if [ $? -ne 0 ];then
	echo -e "\e[1;31minit mysql fail,test /usr/local/mariadb/scripts/mysql_install_db  --datadir=/mydata/data --user=mysql --group=mysql\e[0m"
fi
chown -R root .
#修改数据目录权限
chown -R mysql:mysql /mydata/data/
#把启动脚本放到自启目录下,开启service管理
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on
chkconfig --add mysqld
#复制配置文件到配置中
cp  support-files/my-large.cnf /etc/my.cnf
#如果之前已经存在备份,就不做修改。如果未有备份就进行数据目录的修改。
if [ ! -f /etc/my.cnf.back ];then
	cp /etc/my.cnf /etc/my.cnf.back
	sed   -i '/\[mysqld\]/a\datadir = \/mydata\/data' /etc/my.cnf
fi
#配置环境变量
echo 'export PATH=/usr/local/mariadb/bin:$PATH' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh 
#启动服务
systemctl start mysqld.service
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值