如何实现mysql 全量和增量备份
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,下面一起来了解下如何实现mysql 全量和增量备份,相信大家看完肯定会受益匪浅,文字在精不在多,希望如何实现mysql 全量和增量备份这篇短内容是你想要的。mysql 全量备份:vim /root/m
千家信息网最后更新 2025年11月08日如何实现mysql 全量和增量备份
下面一起来了解下如何实现mysql 全量和增量备份,相信大家看完肯定会受益匪浅,文字在精不在多,希望如何实现mysql 全量和增量备份这篇短内容是你想要的。
mysql 全量备份:
vim /root/mysql_bakup.sh
#!/bin/bash#Date:2017/5/2#Author:wangpengtai#Blog:http://wangpengtai.blog.51cto.com#At Sunday, we will backup the completed databases and the incresed binary log during Saturday to Sunday.#In other weekdays, we only backup the increaing binary log at that day!#################################the globle variables for MySQL#################################DB_USER='root'DB_PASSWORD='123456'DB_PORT='3306'BACKUPDIR='/tmp/mysqlbakup'BACKUPDIR_OLDER='/tmp/mysqlbakup_older'DB_PID='/data/mysql/log/mysqld.pid'DB_SOCK='/data/mysql/log/mysql.sock'LOG_DIR='/data/mysql/log'BACKUP_LOG='/tmp/mysqlbakup/backup.log'DB_BIN='/usr/local/mysql/bin'#time variables for completed backupFULL_BAKDAY='Sunday'TODAY=`date +%A`DATE=`date +%Y%m%d`############################time variables for binlog#############################liftcycle for saving binlogDELETE_OLDLOG_TIME=$(date "-d 14 day ago" +%Y%m%d%H%M%S)#The start time point to backup binlog, the usage of mysqlbinlog is --start-datetime, --stop-datetime, time format is %Y%m%d%H%M%S, eg:20170502171054, time zones is [start-datetime, stop-datetime)#The date to start backup binlog is yesterday at this very moment!START_BACKUPBINLOG_TIMEPOINT=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S")#BINLOG_LIST=`cat /data/mysql/log/mysql-bin.index`BINLOG_INDEX='/data/mysql/log/mysql-bin.index'###############################################Judge the mysql process is running or not. ##mysql stop return 1, mysql running return 0.###############################################function DB_RUN(){ if test -a $DB_PID && test -a $DB_SOCK;then return 0 else return 1 fi}####################################################################################################Judge the bacup directory is exsit not. ##If the mysqlbakup directory was exsited, there willed return 0. ## If there is no a mysqlbakup directory, the fuction will create the directory and return value 1.####################################################################################################function BACKDIR_EXSIT(){ if test -d $BACKUPDIR;then# echo "$BACKUPDIR was exist." return 0 else echo "$BACKUPDIR is not exist, now create it." mkdir -pv $BACKUPDIR return 1 fi}####################################################################################################Judge the binlog is configed or not. ##If the mysqlbakup directory was exsited, there willed return 0. ## If there is no a mysqlbakup directory, the fuction will create the directory and return value 1.####################################################################################################function BINLOG_EXSIT(){ if test -f $BINLOG_INDEX;then# echo "$BACKUPDIR was exist." return 0 fi}####################################################The full backup for all Databases ##This function is use to backup the all databases.####################################################function FULL_BAKUP(){ echo "At `date +%D\ %T`: Starting full backup the MySQL DB ... "# rm -fr $BACKUPDIR/db_fullbak_$DATE.sql #for test !! $DB_BIN/mysqldump --lock-all-tables --flush-logs --master-data=2 -u$DB_USER -p$DB_PASSWORD -P$DB_PORT -A |gzip > $BACKUPDIR/db_fullbak_$DATE.sql.gz FULL_HEALTH=`echo $?` if [[ $FULL_HEALTH == 0 ]];then echo "At `date +%D\ %T`: MySQL DB incresed backup successfully" else echo "MySQL DB full backup failed!" fi}#python# >>> with open('/data/mysql/log/mysql-bin.index','r') as obj:# ... for i in obj:# ... print os.path.basename(i)# ...# mysql-bin.000006# mysql-bin.000007# mysql-bin.000008# mysql-bin.000009function INCREASE_BAKUP(){ echo "At `date +%D\ %T`: Starting increased backup the MySQL DB ... " $DB_BIN/mysqladmin -u$DB_USER -p$DB_PASSWORD -P$DB_PORT flush-logs $DB_BIN/mysql -u$DB_USER -p$DB_PASSWORD -P$DB_PORT -e "purge master logs before ${DELETE_OLDLOG_TIME}" for i in `cat $BINLOG_INDEX` do $DB_BIN/mysqlbinlog -u$DB_USER -p$DB_PASSWORD -P$DB_PORT --start-datetime="$START_BACKUPBINLOG_TIMEPOINT" $i |gzip >> $BACKUPDIR/db_daily_$DATE.sql.gz done # $DB_BIN/mysqlbinlog -u$DB_USER -p$DB_PASSWORD -P$DB_PORT --start-datetime="$START_BACKUPBINLOG_TIME" $LOG_DIR/mysql-bin.[0-9]* |gzip >> $BACKUPDIR/db_daily_$DATE.sql.gz INCREASE_HEALTH=`echo $?` if [[ $INCREASE_HEALTH == 0 ]];then echo "At `date +%D\ %T`: MySQL DB incresed backup successfully" else echo "MySQL DB incresed backup failed!" fi}function OLDER_BACKDIR_EXSIT(){ if test -d $BACKUPDIR_OLDER;then# echo "$BACKUPDIR_OLDER was exist." return 0 else echo "$BACKUPDIR_OLDER is not exist, now create it." mkdir -pv $BACKUPDIR_OLDER# return 1 fi}function BAKUP_CLEANER(){ #move the backuped file that created time out of 7 days to the BACKUPDIR_OLDER directory returnkey=`find $BACKUPDIR -name "*.sql.gz" -mtime +7 -exec ls -lh {} \;` returnkey_old=`find $BACKUPDIR_OLDER -name "*.sql.gz" -mtime +14 -exec ls -lh {} \;` if [[ $returnkey != '' ]];then echo "----------------------" echo "Moving the older backuped file out of 7 days to $BACKUPDIR_OLDER." echo "The moved file list is:" find $BACKUPDIR -name "*.sql.gz" -mtime +7 -exec mv {} $BACKUPDIR_OLDER \; echo "-----------------------" elif [[ $returnkey_old != '' ]];then #delete the backuped file that created time out of 14 days from BACKUPDIR_OLDER directory. echo "Delete the older backuped file out of 14 days from $BACKUPDIR_OLDER." echo "The deleted files list is:" find $BACKUPDIR_OLDER -name "*.sql.gz" -mtime +14 -exec rm -fr {} \; fi}#####################################--------------main----------------#####################################function MAIN(){ DB_RUN #Judge the process is run or not, if not run, the script will not bakup db Run_process=`echo $?` echo $? if [[ $Run_process == 0 ]];then BINLOG_EXSIT binlog_index=`echo $?` if [[ $binlog_index == 0 ]];then echo "**********START**********" echo $(date +"%y-%m-%d %H:%M:%S %A") echo "~~~~~~~~~~~~~~~~~~~~~~~" if [[ $TODAY == $FULL_BAKDAY ]];then echo "Start completed bakup ..." INCREASE_BAKUP FULL_BAKUP #full backup to all DB BAKUP_CLEANER else echo "Start increaing bakup ..." INCREASE_BAKUP fi echo "~~~~~~~~~~~~~~~~~~~~~~~" echo $(date +"%y-%m-%d %H:%M:%S %A") echo "**********END**********" else echo "**********START**********" echo $(date +"%y-%m-%d %H:%M:%S %A") echo "~~~~~~~~~~~~~~~~~~~~~~~" echo "Sorry, MySQL binlog was not configed, please config the my.cnf firstly!" echo "~~~~~~~~~~~~~~~~~~~~~~~" echo $(date +"%y-%m-%d %H:%M:%S %A") echo "**********END**********" fi else echo "**********START**********" echo $(date +"%y-%m-%d %H:%M:%S %A") echo "~~~~~~~~~~~~~~~~~~~~~~~" echo "Sorry, MySQL was not running, the db could not be backuped!" echo "~~~~~~~~~~~~~~~~~~~~~~~" echo $(date +"%y-%m-%d %H:%M:%S %A") echo "**********END**********" fi}#starting runing BACKDIR_EXSIT $BACKUP_LOGOLDER_BACKDIR_EXSIT $BACKUP_LOGMAIN >> $BACKUP_LOG
看完如何实现mysql 全量和增量备份这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的行业资讯栏目。
备份
增量
内容
更多
行业
肯定
受益匪浅
信息
文字
朋友
栏目
篇文章
读者
资讯
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
绝地求生各个服务器对比
软件开发外包合同模板质量验收
国家网络安全工作坚持
软件开发项目交付是什么意思
nba2k22换服务器
苏州IBMS软件开发公司
数据库如何复制语句
云服务器磁盘空间已满
幻灯片软件开发
松江区挑选网络技术服务产品
esxi服务器怎么拷贝东西
怎么保存自己创建的数据库
网络安全法认为网络安全角度
戴尔服务器前面板
ns巴西服务器游戏下载慢
数据库应用技术安装
腾飞计算机网络技术主要学什么
网络安全的基本范围是
硬防服务器租用
数据库技术与应用英文版
2016三级网络技术
通过opc读取数据库数据
我的世界1.7.5服务器
外文数据库与电子期刊区别
网络安全红军制度
移动终端网络安全公司
使命召唤读取不了服务器
项目管理软件开发语言
c 数据库编写
高职计算机网络技术就业方向