要求:
执行db_dump.sh westos(数据库密码)
脚本执行后会备份数据库中的所有库到/mnt/mysqldump目录中
备份文件名称为"库名称.sql"当此文件存在时报错并询问动作
输入“S”跳过备份,当输入“B”时备份“库名称.sql” 文件为“库名称_backup.sql”,当输入“O”时覆盖原文件
实验:
yum search mariadb #查找yum源中mariadb相关软件
yum install mariadb-server -y #下载数据库mariadb服务端
systemctl start mariadb #开启mariadb服务
systemctl status mariadb #查看数据库状态
mysql_secure_installation #数据库安全初始化
vim mysql_dump.sh
#!/bin/bash
ACTION()
{
read -p "Please input action: "DB_Action
case $DB_Action in
b|B)
mv /mnt/mysqldump/${2}.sql /mnt/mysqldump/${2}_backup.sql
mysqldump -uroot -p$1 $2 > /mnt/mysqldump/${2}.sql
;;
o|O)
mysqldump -uroot -p$1 $2 > /mnt/mysqldump/${2}.sql
;;
s|S)
;;
*)
echo "Wrong Action!!Please input o|b|s"
ACTION
esac
}
if [ ! -e "/var/lib/mysql/mysql.sock" ] #套接字文件存在时说明数据库存在并且开启
then
echo "Mysql is not running!!"
exit 1
fi
if [ -z "$1" ]
then
echo "Please input password for Mysql following $0!!"
exit 3
fi
mysql -uroot -p$1 -e "show databases;" &> /dev/null
if [ ! "$?" = "0" ]
then
echo "Password error!1“
exit 2
fi
for DATABASE in `mysql -uroot -pwestos -e "SHOW DATABASES;" -EN | grep -E '\*|schema$' -v `
do
[ -d "/mnt/mysqldump" ] || mkdir -p /mnt/mysqldump
if [ ! -e "/mnt/mysqldump/${DATABASE}.sql" ]
then
mysqldump -uroot -p$1 $DATABASE > /mnt/mysqldump/${DATABASE}.sql
echo ${DATABASE}.sql is dumped!!
else
echo "/mnt/mysqldump/${DATABASE}.sql is exist!!"
echo "[B]ackup [S]kip [O]verwrite"
ACTION $1 $DATABASE #$1为脚本后跟的密码,$BATABASE为本次循环的数据库名称
fi
done
测试:
数据库查看方式:
mysql -uroot -pwestos -e "SHOW DATABASES;" -EN
mysql -uroot -pwestos -e "SHOW DATABASES;"