設置自動備份mysql數據庫
設置自動備份mysql數據庫
低版本:
1.安裝gzip工具
]# yum -y install gzip
2.在mysql中創建一個備份的用戶
]# mysql -uroot -p MariaDB [(none)]> GRANT ALL ON zabbix.* TO beifenuser@localhost IDENTIFIED BY 'beifen321'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> exit;
3.創建一個存放備份的文件夾
]# mkdir -p /home/backup/mysql
4.創建一個備份的腳本
]# vi beifen.sh #!/bin/bash # 數據庫信息 DB_USER="backupuser" DB_PASS="backpass" DB_HOST="localhost" DB_NAME=(zabbix) #需要備份的數據庫名稱,注意中間用空格隔開. # 其他設置 BIN_DIR="/usr/bin" # mysqldump命令執行路徑 BACK_DIR="/home/backup/mysql" #備份目錄,這里設為/home/backup/mysql DATE=`date +%Y%m%d%H%M%S` #顯示備份時間,格式為20180808122556 # 備份所有指定數據庫 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號的文件(用於手動刪除) 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備份報錯: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 數據庫名 > /home/backup/bak_test.sql
3.腳本
]# vi beifen.sh #!/bin/bash #數據庫名稱 DB_NAME=(數據庫名稱1 數據庫名稱2) #需要備份的數據庫名稱,注意中間用空格隔開. # 其他設置 BIN_DIR="/usr/bin" # mysqldump命令執行路徑 BACK_DIR="/home/backup/mysql" #備份目錄,這里設為/home/backup/mysql DATE=`date +%Y%m%d%H%M%S` #顯示備份時間,格式為20180808122556 # 備份所有指定數據庫 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號的文件(用於手動刪除) find $BACK_DIR/* -regextype "posix-extended" -not -regex ".*[0-9]{6}01[0-9]{6}\.sql\.gz$" -mtime +5 -exec rm {} \;
編輯定時任務
1.編輯自動定時任務
]# crontab -e 0 16 * * 1 /home/beifen.sh #設置為每周1執行備份
2.查看已經保存的定時任務
]# crontab -l 0 16 * * 1 /home/beifen.sh
3.Crontab格式說明
