1 使用說明
下面是mysql資料庫的shell備份指令碼,其中引數dblist
表示要備份的mysql資料庫名稱、numdays
表示保留多少天以內的備份檔案、myuser
和mypass
表示mysql資料庫的使用者名稱和密碼。最終,每次執行這個指令碼生成的備份檔案名類似於系統日期時間+.sql.gz
,例如20150606.sql.gz。
使用時通過chmod +x mysql_backup.sh
命令新增執行許可權,然後可以利用linux系統的crontab定時任務工具執行該指令碼。例如下面這個配置就是每天凌晨1點的時候執行該shell指令碼,生成mysql資料庫的備份檔案。
[root@typecodes bak_list]# crontab -e
01 * * * /mydata/backups
/bak_list/mysql_backup.sh
2 指令碼mysql_backup.sh的全部內容
以後的更新都會提交到本文小節3中的兩個git倉庫中。
#!/bin/bash
# mysql backup script v1.0.0
# (c) 2015 vfhky
# reference:
# #
# space separated list of databases
dblist="your mysql database name witch you want to backup"
# backup to this directory
backupdir=/mydata/backups/data/mysql
# number of days to keep
numdays=60
# some linux command and your mysql configure
findcmd="find"
mysqlcmd="mysql"
myuser="your mysql user name"
# username
mypass="your mysql password"
# password
myhost="localhost"
# hostname
dumpcmd="mysqldump -u$myuser -h $myhost -p$mypass --lock-tables --databases "
gzipcmd="gzip"
# backup date format,e.g 20150505_2010
backupdate=`date +%y%m%d_%h%m`
function
usage
() while
getopts
"hal:n:" opt; do
case
$opt
in a)
dblist=""
;;h)
usage
exit 1
;;l)
dblist="$optarg"
;;n)
numdays=$optarg
;;\?)
usage
exit
;;:)
echo
"option -$optarg requires an argument." >&2
exit 1
;;esac
done
function
error
() function
notice
() function
runcmd
() # sanity checks
if [ ! -n "$dblist" ]; then
dblist=`$mysqlcmd -n -s
-e"show databases" | grep -vie '(information_schema|performance_schema|mysql|test)'`
if [ ! -n "$dblist" ]; then
error "invalid database list"
fifi
if [ ! -n "$backupdir" ]; then
error "invalid backup directory"
fiif [[ ! $numdays =~ ^[0-9]+$ ]]; then
error "invalid number of days: $numdays"
elif [ "$numdays"
-eq"0" ]; then
error "number of days must be greater than zero"
fi# lock down permissions
umask 077
# create directory if needed
runcmd mkdir -p -v $backupdir
if [ ! -d
$backupdir ]; then
error "invalid directory: $backupdir"
finotice "dumping mysql databases..."
rc=0
for database in
$dblist; do
notice "dumping $database..."
runcmd "$dumpcmd
$database | $gzipcmd > $backupdir/$backupdate.sql.gz"
rc=$?
if [ $rc
-gt 0 ]; then
continue;
fidone
if [ $rc
-gt 0 ]; then
error "mysqldump failed!"
else
notice "removing dumps older than $numdays days..."
runcmd "$findcmd
$backupdir -name \"*.sql.gz\" -type f -mtime +$numdays -print0 | xargs -0 rm -fv"
notice "listing backup directory contents..."
runcmd ls -la $backupdir
notice "mysqldump is complete!"
fi# exit 0
3 shell script工具集合
目前把這個指令碼託管在自己的coding.net和github的上乙個shell script工具集合,位址如下:
補充說明
crontab -e
mysql備份shell指令碼
bin bash mysql server login info muser root mpass root mhost localhost mysql which mysql mysqldump which mysqldump dbname test bak backup mysql gzip w...
mysql備份shell指令碼
bin bash 要備份的資料庫名,多個資料庫用空格分開 databases test 備份檔案要儲存的目錄 basepath usr local mysqlbak if d basepath then mkdir p basepath fi 迴圈databases陣列 for db in docd...
Shell備份MySQL指令碼
bin bash backup database mysql備份指令碼,自動化備份,定時任務備份,linux centos redhat 正式環境 全量備份 單庫備份 單錶備份 by lumia98 vip.qq.com 適用於生成環境備份指令碼 備份開始時間 echo start date y m...