1. 程式人生 > >MySQL數據庫全備和增備、增量數據恢復案例以及定時清理 binlog 日誌

MySQL數據庫全備和增備、增量數據恢復案例以及定時清理 binlog 日誌

代碼 fun transacti 適合 壓縮包 password 意願 root ati

一、mysql 全量備份以及增量備份
1、全量備份命令:

/application/mysql/bin/mysqldump -uroot -p123456 --lock-all-tables -A -B -F --master-data=2 --single-transaction --events|gzip > /opt/Mysql_Backup/all_backup/all_backup.sql.gz

如上一段代碼所示,其功能是將所有數據庫全量備份。其中 MySQL 用戶名為:root ,密碼為:123456。備份的文件路徑為:/opt/Mysql_Backup/all_backup,當然這個路徑是按照個人意願修改的。備份的文件壓縮包名為 all_backup.sql.gz

參數 --lock-all-tables:鎖定所有數據庫;
參數 -A:備份所有庫;
參數 -B:指定多個庫,增加建庫語句和 use 語句;
參數 -F:刷新 binlog 日誌;
參數 --master-data=0|1|2:
        0: 不記錄
        1:記錄為CHANGE MASTER語句
        2:記錄為註釋的CHANGE MASTER語句;
參數 --single-transaction:適合 innodb 事務數據庫備份;
參數 --events:導出事件;
參數 gzip:備份壓縮文件。

2、全量備份腳本:
> #!/bin/bash
> . /etc/init.d/functions
> user=root
> password="123456"
> Backup_Tools=/application/mysql/bin/mysqldump
> BackupDir=/opt/Mysql_Backup
> All_Backup=$BackupDir/all_backup
> mkdir -p $All_Backup
> echo ‘==========‘$(date +"%Y-%m-%d %H:%M:%S")‘==========‘ “備份開始” >>$All_Backup/all_backup.log
> $Backup_Tools -u$user -p$password -A -B -F --master-data=2 --single-transaction --events|gzip >$All_Backup/all_backup_$(date +%Y%m%d).sql.gz
> if [ $? -eq 0 ]
> then
>   echo ‘==========‘$(date +"%Y-%m-%d %H:%M:%S")‘==========‘ "備份完成" >>$All_Backup/all_backup.log
>   action "Mysql full backup is ok" /bin/true
> else
>   action "Mysql full backup is not ok" /bin/false
> fi

    3   、恢復全量備份命令:
cd /opt/Mysql_Backup/all_backup
gzip -d all_backup.sql.gz
mysql -uroot -p123456 < all_backup.sql

    或者:

    mysql> source /opt/Mysql_Backup/all_backup/all_backup.sql  

MySQL數據庫全備和增備、增量數據恢復案例以及定時清理 binlog 日誌