如何实现mysql 全量和增量备份
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,下面一起来了解下如何实现mysql 全量和增量备份,相信大家看完肯定会受益匪浅,文字在精不在多,希望如何实现mysql 全量和增量备份这篇短内容是你想要的。mysql 全量备份:vim /root/m
千家信息网最后更新 2024年11月25日如何实现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安全错误
数据库的锁怎样保障安全
南京运营网络技术哪家好
肇庆手机软件开发公司
联想服务器状态指示灯图解
裂变模式软件开发
无法对数据库独占
小程序一定要放在服务器吗
科技互联网创业计划书市场分析
红河哪有软件开发定制
黎明杀机哪个服务器人最多
四川省网络安全认证
深信服网络安全架构
更新交流数据库
谷歌的软件开发工程师学历
手机数据库下载软件
文件服务器 安全策略
www服务器的安全设计
东莞嵌入式软件开发流程有哪些
重庆果蔬软件开发
浦东新区项目数据库服务商前景
长春正规网络技术品质保障
数据库navicat乱码
西安铁路局软件开发
原神修改服务器后启动不了
工控领域网络安全方向
逆风笑的gmod的服务器
wds数据库认证
网络安全教育第一课教案设计
软件开发技术盘点
鞍山软件开发工作好找工作吗
服务器带宽为什么那么低