設(shè)置自動(dòng)備份mysql數(shù)據(jù)庫
低版本:
1.安裝gzip工具
]# yum -y install gzip
2.在mysql中創(chuàng)建一個(gè)備份的用戶
]# mysql -uroot -p
MariaDB [(none)]> GRANT ALL ON zabbix.* TO beifenuser@localhost IDENTIFIED BY 'beifen321';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
3.創(chuàng)建一個(gè)存放備份的文件夾
]# mkdir -p /home/backup/mysql
4.創(chuàng)建一個(gè)備份的腳本
]# vi beifen.sh
#!/bin/bash
# 數(shù)據(jù)庫信息
DB_USER="backupuser"
DB_PASS="backpass"
DB_HOST="localhost"
DB_NAME=(zabbix) #需要備份的數(shù)據(jù)庫名稱,注意中間用空格隔開.
# 其他設(shè)置
BIN_DIR="/usr/bin" # mysqldump命令執(zhí)行路徑
BACK_DIR="/home/backup/mysql" #備份目錄,這里設(shè)為/home/backup/mysql
DATE=`date +%Y%m%d%H%M%S` #顯示備份時(shí)間羽嫡,格式為20180808122556
# 備份所有指定數(shù)據(jù)庫
for backdb in ${DB_NAME[@]}
#也可以寫成for eachdb in ${DB_NAME[*]}
do
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST -B ${backdb} | gzip > $BACK_DIR/db_${eachdb}_$DATE.sql.gz
done
# 刪除5天之前的備份文件街立,但保留日期為1號(hào)的文件(用于手動(dòng)刪除)
find $BACK_DIR/* -regextype "posix-extended" -not -regex ".*[0-9]{6}01[0-9]{6}\.sql\.gz$" -mtime +5 -exec rm {} \;
5.測試腳本
]# chmod 777 beifen.sh
]# sh beifen.sh
高版本:
mysql備份報(bào)錯(cuò):
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
原因:在高版本中嘀粱,是不允許使用明文密碼備份的芥炭,所以我們需要修改下配置信息蛹稍,并使用另一種命令格式備份
1.在mysql配置文件里添加下列幾行配置信息
]# vi /etc/my.cnf
[client]
host=localhost
user=backupuser
password=backpass
2.輸入備份命令
]# mysqldump --defaults-extra-file=/etc/my.cnf 數(shù)據(jù)庫名 > /home/backup/bak_test.sql
3.腳本
]# vi beifen.sh
#!/bin/bash
#數(shù)據(jù)庫名稱
DB_NAME=(數(shù)據(jù)庫名稱1 數(shù)據(jù)庫名稱2) #需要備份的數(shù)據(jù)庫名稱,注意中間用空格隔開.
# 其他設(shè)置
BIN_DIR="/usr/bin" # mysqldump命令執(zhí)行路徑
BACK_DIR="/home/backup/mysql" #備份目錄铺纽,這里設(shè)為/home/backup/mysql
DATE=`date +%Y%m%d%H%M%S` #顯示備份時(shí)間卿城,格式為20180808122556
# 備份所有指定數(shù)據(jù)庫
for backdb in ${DB_NAME[@]}
#也可以寫成for backdb in ${DB_NAME[*]}
do
$BIN_DIR/mysqldump --defaults-extra-file=/etc/my.cnf ${backdb} | gzip > $BACK_DIR/db_${eachdb}_$DATE.sql.gz
done
# 刪除5天之前的備份文件枚钓,但保留日期為1號(hào)的文件(用于手動(dòng)刪除)
find $BACK_DIR/* -regextype "posix-extended" -not -regex ".*[0-9]{6}01[0-9]{6}\.sql\.gz$" -mtime +5 -exec rm {} \;
編輯定時(shí)任務(wù)
1.編輯自動(dòng)定時(shí)任務(wù)
]# crontab -e
0 16 * * 1 /home/beifen.sh #設(shè)置為每周1執(zhí)行備份
2.查看已經(jīng)保存的定時(shí)任務(wù)
]# crontab -l
0 16 * * 1 /home/beifen.sh
3.Crontab格式說明
Crontab說明