shell代码如下:
以下的代码与使用Shell对MySQL指定的库进行SQL语句批量插入操作 原理流程一致,唯一不同点为循环库后一个为插入操作,一个为备份操作。 本章备份工具使用:mysqldump,以下shell脚本已在生产,测试环境中稳定运行!
#!/bin/bash
# this is a yankerp
host_url=数据库的链接地址
db_name='数据库用户名'
db_password='数据库密码'
check_mysql_status=`netstat -anplt | grep mysqld | wc -l`
check_nc_status=`rpm -qa | grep nmap-ncat | wc -l`
# 测试是否能够与服务器主机通信
function db_ping(){
echo "正在检测与数据库主机连接通信是否正常....."
ping -w 1 $host_url &> /dev/null
if [ $? -eq 0 ]
then
echo "服务器:$host_url主机可正常连接....."
else
echo "ERROR:服务器:$host_url主机连接失败....."
return 1
fi
}
function check_mysql(){
echo "---------------------------------------"
echo "正在检测本地MySQL数据库是否正常运行....."
if [ $check_mysql_status -eq 0 ]
then
echo "ERROR:本地MySQL数据库非正常运行,正在启动本地MySQL数据库"
systemctl restart mysqld
if [ $? -eq 0 ] || [ $check_mysql_status -eq 1 ]
then
echo "MySQL数据库启动成功,目前正常运行....."
else
echo "ERROR:MySQL启动失败,请及时检测MySQL目前的状态!!!"
return 1
fi
else
echo "本地MySQL数据库正常启动中....."
fi
}
function check_telnet(){
if [ $check_nc_status -eq 0 ]
then
yum clean all && yum install nmap-ncat -y &> /dev/null &
if [ $? -eq 0 ]
then
echo "nc命令安装成功!!!"
else
echo "ERROR:安装nc包失败,请您检查您服务器是否能够正常上网以及配置yum源!!!"
exit 1
fi
else
echo "开始检测$host_url数据库3306端口是否开放...."
sleep 2
check=`nc -v -z -w 5 $host_url 3306; echo $?`
# echo $host_url
if [ $check -eq 0 ]
then
echo "远程服务器数据库可正常连接!!!"
else
echo "ERROR:请您检查远程服务器的MySQL3306端口是否正常开放!!!"
return 1
fi
fi
}
function back_mysql(){
select_db='show databases;'
/usr/local/mysql/bin/mysql -h${host_url} -p${3306} -u${db_name} -p${db_password} -e"${select_db}" > /root/all_database.txt && {
cat /root/all_database.txt | grep "需要备份数据的前缀" > /root/all_gs1.txt
}
content=`cat /root/all_gs1.txt`
# 开始备份
day_date=`date +"%Y-%m-%d"`
for gs1 in $content
do
echo "正在备份$gs1库,请稍后。。。。。。。"
sleep 2
/usr/local/mysql/bin/mysqldump --no-defaults -u${db_name} -h${host_url} -p${db_password} --set-gtid-purged=off --opt -R $gs1 > /opt/sql_data/sql_back_data/需要备份数据的前缀/$gs1.sql
echo "$gs1库已经备份到/opt/sql_data/sql_back_data/$gs1.sql"
# echo "===================================================================================================================="
done
mkdir /opt/sql_data/sql_back_data/需要备份数据的前缀$day_date_backup
cd /opt/sql_data/sql_back_data/ && {
tar -czfP 需要备份数据的前缀$day_date.tar.gz /opt/sql_data/sql_back_data/需要备份数据的前缀/备份数据的前缀*
}
}
function main(){
db_ping
check_mysql
check_telnet
back_mysql
}
main
定时备份,自动创建请自行操作吧。 过程可参考:使用Shell对MySQL指定的库进行SQL语句批量插入操作本章内容。希望对您有所帮助,再见~