mysql定時全量備份、增量備份


mysql定時全量備份、增量備份

第一步    先建好備份目錄、shell文件

mkdir    /var/local/mysqlfullbackup            #新建數據全量備份所在目錄
mkdir /var/log/mysqllog #新建數據增量備份所在目錄

 #修改目錄所屬組和用戶

chown -R mysql:mysql /var/local/mysqlfullbackup

chown -R mysql:mysql /var/log/mysqllog

 

touch /usr/local/bin/mysql_data_fullbackup.sh     #增加全量備份shell

chmod +x /usr/local/bin/mysql_data_fullbackup.sh   #增加腳本的執行權限

touch /usr/local/bin/mysql_binlog_flush.sh    #增加增量備份shell

chmod +x /usr/local/bin/mysql_binlog_flush.sh   #增加腳本的執行權限

第二步   修改my.cnf 

  這里只列出了所需要的參數,其它參數,讀者自行添加

[mysqld]
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#中間省略
#全量備份目錄 #mysqlbackup=/var/local/mysqlfullbackup #二進制日志文件目錄 log_bin=/var/log/mysqllog/binlog server-id=100 # 安全性考慮 [client] host=localhost user=賬戶 password=密碼 #......省略......
#!includedir /etc/my.cnf.d

修改完之后,重啟服務,使其生效

第三步   寫shell腳本(簡單寫法)

 ① 全局變量腳本

mysql_data_fullbackup.sh

#!/bin/bash
#description: mysql-data automatically backup script
# 文件名為100mysql+日期.sql
backupDatabase=100mysql
fileName=${backupDatabase}`date +"%Y-%m-%d_%H:%M:%S"`

# 定義baseDir變量 
baseDir=/var/local/mysqlfullbackup/
 
# 備份數據庫 
mysqldump --defaults-extra-file=/etc/my.cnf  --all-databases --flush-logs --delete-master-logs --single-transaction -R > ${baseDir}${fileName}.sql  
# --defaults-extra      會讀取 my.cnf 賬戶和密碼
# --delete-master-logs 刪除前面的二進制備份
# -R 備份存儲過程 # 壓縮 #
tar -zcvf ${baseDir}${fileName}.sql.tar.gz ${baseDir}${fileName}.sql # 刪除剛剛備份的sql文件,留下壓縮的 #rm -f ${baseDir}${fileName}.sql; # 刪除7天前備份的數據,只保留一星期內的數據 #find ${baseDir} -mtime +7 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \;

②增量備份

mysql_binlog_flush.sh

#!/bin/bash
#description: mysql-data automatically backup script
# 刷新二進制日志
mysqladmin --defaults-extra-file=/etc/my.cnf flush-logs;

③先試着運行一下,看是否成功

./mysql_data_fullbackup.sh

如果執行.sh腳本時,報錯 " /bin/bash^M: 壞的解釋器:沒有那個文件或目錄”,這是因為 .sh文件是從windows拷貝過來的,所以多了\r,執行:

sed -i 's/\r$//' mysql_data_fullbackup.sh 
會把 mysql_data_fullbackup.sh 中的\r 替換成空白,再次執行則成功!

如果運行成功沒問題,則操作第四步

第四步   添加定時任務

讀者如不了解Linux的定時任務,可以自行搜索 crontab

crontab -e
0 18 * * 5 /usr/local/bin/mysql_data_fullbackup.sh   # 每個禮拜五的晚上六點 運行該腳本,全量備份一次
0 8 * * 1-5 /usr/local/bin/mysql_binlog_flush.sh     # 禮拜一到禮拜五,每天早上8點,運行腳本,刷新增量備份

第五步 加載配置

service crond reload   //重新載入配置

service crond start    //啟動服務

service crond stop     //關閉服務

service crond restart  //重啟服務

service crond status   //查看服務狀態

最后

到時間點后,去對應的目錄,看是否有新的備份文件,有則代表配置成功了

備注

show variables like '%dir%';      -- 查看文件目錄
show variables like 'general%';   -- 查看運行日志
show variables like '%log_bin%';  -- 查看二進制日志

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM