如何使用bash脚本备份mysql数据库

时间:2020-03-05 15:24:44  来源:igfitidea点击:

常规备份MySQL数据库也像备份代码一样重要。
所以我写了这个脚本来备份本地磁盘上的所有数据库。
然后,我添加了gzip来压缩SQL文件以保存磁盘空间。
我们可以随时将它们复制到网络上,以便保留数据库的多个副本。

请替换脚本中提到的"mysqlpassword",使用MySQL root密码。
此shell脚本将在"/usr/local"中创建名为"dblist"的文件,该文件将列出MySQL Server中的所有数据库。

DB的备份在"/backup/mysqlbackup"目录中,其中目录名称为日期。
可以由用户修改"dblist"和备份目标的路径。

mysql备份脚本

以下显示了一个简单的mysql备份脚本:

#!/bin/bash
### Create Directory with Date where Database backup will be stored. ####
month=$(date | awk '{print }')
day=$(date | awk '{print }' )
year=$(date | awk '{print }')
foldername=$(echo $day$month$year"_backups")
### List all the databases in /usr/local/dblist file. ####
mysql -u root -p'mysqlpassword' -e 'show databases' >/usr/local/dblist
list=$(cat /usr/local/dblist)
echo $foldername
### Create Backup Directory in /Backup/mysqlbackup …  ####
mkdir -p /Backup/mysqlbackup/$foldername
for i in $list
do
echo $i
mysqldump -u root -p'mysqlpassword' $i | gzip > /Backup/mysqlbackup/$foldername/$i.sql.gz
echo " "$i".sql.gz file saved.."
done

我们可以将此shell脚本放在crontab中并每天运行。

通过这种方式,我们将拥有所有数据库的每日备份。

示例输出

./mysql.sh
17Sep2013_backups
database1
database1.sql.gz file saved...
hello_db
hello_db.sql.gz file saved...
site2
site2.sql.gz file saved...
test
test.sql.gz file saved...