mysql配置文件 /etc/my.cnf
编写的测试部署脚本, 没事干练练shell
[root@shell/tmp]#cat /tmp/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data/
port=3306
socket=/tmp/mysql.sock
server_id=3306
log_bin=/data/mysql/data/mysql-bin
log_error=/data/mysql/data/mysql.log
[mysql]
socket=/tmp/mysql.soc
mysql 变量文件
[root@shell/tmp]#cat config
#!/usr/bin/bash
user=mysql
basedir=/usr/local
datadir=/data/mysql/data
port=3306
socket=/tmp/mysql.sock
shell_dir="/usr/local/bin"
homedir=${basedir}/${user}
status_dir=/etc/init.d/mysqld
config_dir=/etc/my.cnf
Mysql_pkg="mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz"
mysql_dir="mysql-8.0.28-linux-glibc2.12-x86_64
mysql 卸载脚本
[root@shell/tmp]#cat uninstall.sh
#!/usr/bin/bash
#auhtor: qiaoning
source ./config
set -xe
if [ "$(netstat -lnp |grep mysqld | wc -l )" -ne 0 ];then
echo "stop mysql-server"
sleep 1
pkill mysqld
echo "Done...."
sleep 1
fi
if [[ -d ${homedir} || -d ${datadir} || -d ${status_dir} || -f ${config_dir} ]];then
echo "remove file or directory ${homedir} ${datadir} ${status_dir} ${config_dir} "
sleep 2
rm -rf ${homedir} ${datadir} ${status_dir} ${config_dir}
sleep 2
echo "Done....."
fi
if id ${user} &> /dev/null ;then
echo "remove ${user} users"
sleep 1
userdel ${user}
echo "Done...."
sleep 1
fi
mysql安装脚本
[root@manager tmp]# cat install.sh
#!/usr/bin/env bash
#author: qiaoning
shell_scripts=$(dirname $0)
set -xe
source ./config
function check_system() {
if [[ $(id -u) -ne 0 ]]; then
echo "xxxxxxxxx"
exit -1
fi
if [[ ! -d ${basedir} || ! -d ${datadir} ]]; then
mkdir -pv $basedir $datadir
fi
if id ${user} &>/dev/null; then
echo "${user} is create ok....."
else
echo "useradd -M -s /sbin/nologin mysql....."
useradd -M -s /sbin/nologin mysql &> /dev/null
echo "${user} is create ok........"
fi
if [ "$(rpm -qa |grep mariadb | wc -l)" -ne 0 ]; then
echo "rpm -qa |grep mariadb | xargs rpm -e --nodpes...."
rpm -qa | grep mariadb | xargs rpm -e --nodeps
echo "Mariadb remove Done....."
fi
if [ $(rpm -qa |grep libaio | wc -l) -eq 0 ];then
echo "yum -y install libaio-devel package"
yum -y install libaio-devel &> /dev/null
if test $? -eq 0 ;then
echo "package libaio-devel is installl ok....."
else
echo "packeage libaio-devel is install error.... is check system"
echo "The program ends running"
exit -1
fi
fi
}
function Install_mysql_server() {
if [ -f ${shell_scripts}/${Mysql_pkg} ]; then
echo "tar xf ${shell_scripts}/${Mysql_pkg} -C ${basedir}"
tar xf ${shell_scripts}/${Mysql_pkg} -C ${basedir}
echo "Done ...."
echo "mv ${basedir}/${mysql_dir} ${homedir}"
mv ${basedir}/${mysql_dir} ${homedir}
echo "Done...."
echo "chown -R ${user}.${user} ${homedir} ${basedir}"
chown -R ${user}.${user} ${homedir} ${datadir}
echo "Done...."
fi
echo "ln -sv ${homedir}/bin/ /usr/local/bin/"
rm -rf /usr/local/bin/*
ln -sv ${homedir}/bin/* /usr/local/bin/
echo "Done...."
echo "cp -av ${homedir}/support-files/mysql.server /etc/init.d/mysqld"
cp -av ${homedir}/support-files/mysql.server ${status_dir}
systemctl enable mysqld
echo "Done...."
echo "cp -a ${shell_scripts}/my.cnf /etc/my.cnf"
cp -a ${shell_scripts}/my.cnf /etc/my.cnf
echo "Done...."
}
function Initialize_start () {
if [[ -d ${homedir} && -d ${basedir} ]];then
if id ${user} &> /dev/null ;then
echo "mysqld --initialize-insecure --user=${user} --basedir=${basedir} --datadir=${datadir}"
mysqld --initialize-insecure --user=${user} --basedir=${homedir} --datadir=${datadir} &> /dev/null
echo "Mysql-Server Initialize-insecure Done....."
fi
else
echo "Mysql-Server Initialize-insecure Error.... is check system"
fi
if [ "$(netstat -lnp |grep mysqld | wc -l )" -eq 0 ];then
echo "systemctl start mysqld"
sleep 2
/etc/init.d/mysqld start
echo "Done...."
bash ${shell_scripts}/inspect.sh
else
echo "systemctl start mysqld Error.... is check system"
bash ${shell_scripts}/inspect.sh
exit -1
fi
}
main () {
check_system
Install_mysql_server
Initialize_start
}
main
mysql检查脚本
#!/usr/bin/bash
if test -f /etc/init.d/functions ;then source /etc/init.d/functions ;fi
if [ $(ps -ef |grep mysqld | wc -l ) -ne 0 ] && [ `netstat -lnp |grep mysqld |grep -v grep | wc -l` -ne 0 ];then
action "Mysql_Server is running" /bin/true
else
action "Mysql_Server is not running" /bin/false
fi
mysql多实例克隆脚本(待完善)
[root@mysql-server/tmp]#vim clone_mysql_server.sh
#!/usr/bin/bash
#author: qiaoning
if [ $# -ne 1 ];then
echo ">>>>>>>>>"
exit -1
fi
datadir=/data/$1/data
test ! -d $datadir && mkdir -p $datadir ; true && \
rm -rf $datadir/*
chown -R mysql.mysql /data
cat >> /data/$1/my.cnf << EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=$datadir
port=$1
socket=/tmp/mysql${1}.sock
EOF
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=$datadir >> /dev/null
if [ $? -eq 0 ];then
mysqld_safe --defaults-file=/data/$1/my.cnf &
echo "数据库启动成功......"
else
printf "数据库初始化失败..... "
fi
部署脚本交互式部署
config 文件
[root@localhost.localdomain~]#cat config
#!/usr/bin/bash
export user=mysql
export basedir=/usr/local
export datadir=/data/mysql/data
export port=3306
export socket=/tmp/mysql.sock
export shell_dir=/usr/local/bin
export homedir=${basedir}/${user}
export status_dir=/etc/init.d/mysqld
export config_dir=/etc/my.cnf
export Mysql_pkg=mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz
export mysql_dir=mysql-8.0.29-linux-glibc2.12-x86_64
function installed () {
local shell_scripts=$(dirname $0)
if [[ $(id -u) -ne 0 ]]; then
echo "xxxxxxxxx"
exit -1
fi
if [[ ! -d ${basedir} || ! -d ${datadir} ]]; then
mkdir -pv $basedir $datadir
fi
if id ${user} &>/dev/null; then
echo "${user} is create ok....."
else
echo "useradd -M -s /sbin/nologin mysql....."
useradd -M -s /sbin/nologin mysql &> /dev/null
echo "${user} is create ok........"
fi
if [ "$(rpm -qa |grep mariadb | wc -l)" -ne 0 ]; then
echo "rpm -qa |grep mariadb | xargs rpm -e --nodpes...."
rpm -qa | grep mariadb | xargs rpm -e --nodeps
echo "Mariadb remove Done....."
fi
if [ $(rpm -qa |grep libaio | wc -l) -eq 0 ];then
echo "yum -y install libaio-devel package"
yum -y install libaio-devel &> /dev/null
if test $? -eq 0 ;then
echo "package libaio-devel is installl ok....."
else
echo "packeage libaio-devel is install error.... is check system"
echo "The program ends running"
exit -1
fi
fi
if [ -f ${shell_scripts}/${Mysql_pkg} ]; then
echo "tar xf ${shell_scripts}/${Mysql_pkg} -C ${basedir}"
tar xf ${shell_scripts}/${Mysql_pkg} -C ${basedir}
echo "Done ...."
echo "mv ${basedir}/${mysql_dir} ${homedir}"
mv ${basedir}/${mysql_dir} ${homedir}
echo "Done...."
echo "chown -R ${user}.${user} ${homedir} ${basedir}"
chown -R ${user}.${user} ${homedir} ${datadir}
echo "Done...."
fi
echo "ln -sv ${homedir}/bin/ /usr/local/bin/"
rm -rf /usr/local/bin/*
ln -sv ${homedir}/bin/* /usr/local/bin/
echo "Done...."
echo "cp -av ${homedir}/support-files/mysql.server /etc/init.d/mysqld"
cp -av ${homedir}/support-files/mysql.server ${status_dir}
systemctl enable mysqld
echo "Done...."
echo "cp -a ${shell_scripts}/my.cnf /etc/my.cnf"
cp -a ${shell_scripts}/my.cnf /etc/my.cnf
echo "Done...."
if [[ -d ${homedir} && -d ${basedir} ]];then
if id ${user} &> /dev/null ;then
echo "mysqld --initialize-insecure --user=${user} --basedir=${basedir} --datadir=${datadir}"
mysqld --initialize-insecure --user=${user} --basedir=${homedir} --datadir=${datadir} &> /dev/null
echo "Mysql-Server Initialize-insecure Done....."
fi
else
echo "Mysql-Server Initialize-insecure Error.... is check system"
fi
if [ "$(netstat -lnp |grep mysqld | wc -l )" -eq 0 ];then
echo "systemctl start mysqld"
sleep 2
/etc/init.d/mysqld start
echo "Done...."
bash ${shell_scripts}/inspect.sh
else
echo "systemctl start mysqld Error.... is check system"
bash ${shell_scripts}/inspect.sh
exit -1
fi
}
function uninstalled () {
local shell_scripts=$(dirname $0)
if [ "$(netstat -lnp |grep mysqld | wc -l )" -ne 0 ];then
echo "stop mysql-server"
sleep 1
pkill mysqld
echo "Done...."
sleep 1
fi
if [[ -d ${homedir} || -d ${datadir} || -d ${status_dir} || -f ${config_dir} ]];then
echo "remove file or directory ${homedir} ${datadir} ${status_dir} ${config_dir} "
sleep 2
rm -rf ${homedir} ${datadir} ${status_dir} ${config_dir}
sleep 2
echo "Done....."
fi
if id ${user} &> /dev/null ;then
echo "remove ${user} users"
sleep 1
userdel ${user}
echo "Done...."
sleep 1
fi
}
function statused () {
local shell_scripts=$(dirname $0)
bash $shell_scripts/inspect.sh
}
控制文件
[root@localhost.localdomain~]#cat mysql.sh
#!/usr/bin/bash
#author: qiaoning
#describe: this is scripts shell
function env_input () {
if test -f ./config ;then
source ./config
else
echo ">>> $0 exit -1"
exit -1
fi
}
function caidan () {
cat <<-qiaoning
===================
#1. installed
#2. uninstalled
#3. statused
#4. exit
=================
qiaoning
}
env_input
caidan
read -p "青输入你要选择的编号 [ 1 | 2 | 3 | 4 ]" action
case $action in
1)
clear ; true
echo "installed Installed........"
installed
echo "installed Done....."
;;
2)
clear ; true
echo "uninstalled Installed ........."
uninstalled
echo "uninstalled Done...."
;;
3)
clear ; true
echo "statused........"
statused
echo "statused Done......"
;;
4)
echo "exit ........"
exit -1
;;
*)
echo "Usage: $0 [ 1 | 2 | 3 | 4 ] "
exit -1
esac