#!/bin/bash
### WARING:
#1.执行此脚本请确保【/data/mysqldata】目录无其他文件,初始化会清空此目录
#2.运行此脚本需内存8G以上,小于8G需调整my.cnf配置,否则无法启动mysql服务
#3.部署后mysql初始root密码为123456,部署完毕后可登录mysql自行修改
###
#####
#MySQL5.7.39数据库自动安装脚本
# Version: 1.0
# Author: zzs
# Date: 2022-10-09
#####
#sed -i 's/\r//' install_mysql.sh
#安装包 脚本存放路径
# mkdir -p /data/package
installPackage=/data/package
#mysql 安装路径
installPath=/data/mysqldata
#my.cnf配置文件
mysqlcnf=/etc/my.cnf
#mysql serverid需要设置唯一的id,比如 ip+3位数字
mysqlServerid=100001
#mysql 端口
mysqlPort=3306
version=5.7.39
# 校验是否为ROOT用户
CheckRoot()
{
if [ $(id -u) != "0" ]; then
echo "Error: You must be root to run this script, please use root to install"
exit 1
fi
clear
}
#优化文件最大打开数
DependFile()
{
if [ $( cat /etc/security/limits.conf | grep "mysql" | wc -l ) -lt 1 ] ;then
cat >>/etc/security/limits.conf << EOF
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
mysql soft nproc 65536
mysql hard nproc 65536
mysql soft nofile 65536
mysql hard nofile 65536
EOF
fi
if [ -e /etc/security/limits.d/20-nproc.conf ];then
if [ $( cat /etc/security/limits.d/20-nproc.conf | grep "mysql" | wc -l ) -lt 1 ] ;then
cat >>/etc/security/limits.d/20-nproc.conf<<EOF
mysql soft nproc unlimited
EOF
fi
fi
if [ -e /etc/security/limits.d/90-nproc.conf ];then
if [ $( cat /etc/security/limits.d/90-nproc.conf | grep "mysql" | wc -l ) -lt 1 ] ;then
cat >>/etc/security/limits.d/90-nproc.conf<<EOF
mysql soft nproc unlimited
EOF
fi
fi
if [ -e /etc/sysctl.conf ];then
fs_file=$( cat /proc/sys/fs/file-max)
if [ ${fs_file} -lt 65535 ] ;then
sed -i "s/${fs_file}/65535/g" /etc/sysctl.conf
/usr/sbin/sysctl -p
fi
fi
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
echo -e "\e[31m #1.配置基础资源 \e[0m"
}
#解压mysql-5.7.39-1.el7.x86_64.rpm-bundle.tar包,初始化环境
DecompressionTar()
{
#防止环境缺少libaio导致mysql安装失败
libaio=`rpm -qa | grep libaio`
if [ -z "${libaio}" ]; then
rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm
fi
#卸载mariadb,防止与安装冲突
mariadb=`rpm -qa | grep mariadb`
if [ $? -eq 0 ];then
rpm -e $mariadb --nodeps
fi
#卸载mysql,防止与安装冲突
ori_mysql=`rpm -qa | grep mysql-community-`
rpm -e $ori_mysql --nodeps
rm -rf $installPath
cd $installPackage
tar -xvf mysql-$version-1.el7.x86_64.rpm-bundle.tar
echo -e "\e[31m #2.软件已解压,环境已初始化 \e[0m"
}
#创建mysql 数据目录
createMysqlFolder()
{
mkdir -p $installPath/data
mkdir -p $installPath/logs/bin_log
mkdir -p $installPath/logs/relay
mkdir -p $installPath/logs/undo_log
mkdir -p $installPath/tmp
echo -e "\e[31m #3.mysql 数据目录已准备完成 \e[0m"
}
#安装mysql
install_mysql()
{
cd $installPackage
# 安装mysql 建议按顺序安装:common --> libs --> clients --> server
rpm -ivh mysql-community-common-$version-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-$version-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-$version-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-$version-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-$version-1.el7.x86_64.rpm
echo -e "\e[31m #4.mysql安装完成 \e[0m"
}
#创建my.cnf
MakeMyCnf()
{
if [ -e ${mysqlcnf} ] ;then
mv ${mysqlcnf} ${mysqlcnf}"`date +%Y%m%d%H%M`"
#rm ${mysqlcnf}
fi
cat >${mysqlcnf}<<EOF
# For advice on how to change settings please see
# # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[client]
port = $mysqlPort
socket = /var/lib/mysql/mysql.sock
default_character_set = utf8mb4
[mysqld]
#skip-grant-tables
skip-ss
MySQL一键部署脚本 centos7.9+MySQL5.7.39
于 2022-10-10 09:41:30 首次发布