liunx系统mysql全量备份和增量备份

编程

## 前提

​    在互联网项目中最终还是读数据进行操作,都离不开曾删改查,那么数据是重中之重,数据库的备份就显得格外重要。

​    但是每次都直接导出整个数据库的sql文件,显然是不现实的。对数据库的性能影响比较大。

## 

    ## mysql备份" title="mysql备份">mysql备份的三种方式

   * 热备 : 不关闭mysql服务的情况下,请求可以继续操作数据库,实现备份

   * 温备 : 不关闭mysql服务的情况下,支持读,不支持写,实现备份 

   * 冷备 : 关闭mysql服务的情况下,实现备份

## 备份的类型

    * 全量备份 : 一次性备份整个数据库的数据结构为sql文件

    * 增量备份 : 备份增量的日志文件,日志文件中有操作数据库数据结构的记录,我们可以使用这个来作为增量备份的恢复文件

# 方案

​    1.mysqldump 是mysql中自带的一个备份工具

​    使用mysqldump备份数据库,使用mysqladmin备份数据日志,编写两个脚本一个全量备份数据库的脚本databak.sh,一个增量备份日志的脚本binlogbak.sh,使用crontab定时任务,每个星期日凌晨3:00执行完全备份脚本,周一到周六凌晨3:00做增量备份。

# 实践

1.mysql开启增量备份,在my.cnf添加 : log-bin=/var/lib/mysql/mysql-bin

vim /etc/my.cnf  

my.cof : 

[mysqld]  

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd

# enable log_bin

log-bin=/var/lib/mysql/mysql-bin

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

#

# include all files from the config directory

#

!includedir /etc/my.cnf.d

2.创建备份文件存放的路径

mkdir -p /home/mysql/backup  

3.创建mysql全量备份的脚本

vim /home/mysql/databak.sh  

databak.sh : 

#!/bin/bash

export LANG=en_US.UTF-8

BakDir=/home/mysql/backup

LogFile=/home/mysql/backup/bak.log

Date=`date +%Y%m%d`

Begin=`date +"%Y年%m月%d日 %H:%M:%S"`

cd $BakDir

DumpFile=$Date.sql

GZDumpFile=$Date.sql.tgz

mysqldump -uroot -p123456 --databases test --flush-logs --delete-master-logs --single-transaction > $DumpFile

tar -czvf $GZDumpFile $DumpFile

rm $DumpFile

count=$(ls -l *.tgz |wc -l)

if [ $count -ge 5 ]

then

file=$(ls -l *.tgz |awk "{print $9}"|awk "NR==1")

rm -f $file

fi

#只保留过去四周的数据库内容

Last=`date +"%Y年%m月%d日 %H:%M:%S"`

echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile

cd $BakDir/daily

rm -f *

4.创建mysql增量备份的脚本

vim /home/mysql/binlogbak.sh  

binlogbak.sh : 

#!/bin/bash

export LANG=en_US.UTF-8

BakDir=/home/mysql/backup/daily

BinDir=/var/lib/mysql

LogFile=/home/mysql/backup/binlog.log

BinFile=/var/lib/mysql/mysql-bin.index

mysqladmin -uroot -p123456 flush-logs

#这个是用于产生新的mysql-bin.00000*文件

Counter=`wc -l $BinFile |awk "{print $1}"`

NextNum=0

#这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的。

for file in `cat $BinFile`

do

    base=`basename $file`

    #basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./

    NextNum=`expr $NextNum + 1`

    if [ $NextNum -eq $Counter ]

    then

        echo $base skip! >> $LogFile

    else

        dest=$BakDir/$base

        if(test -e $dest)

        #test -e用于检测目标文件是否存在,存在就写exist!到$LogFile去。

        then

            echo $base exist! >> $LogFile

        else

            cp $BinDir/$base $BakDir

            echo $base copying >> $LogFile

        fi

    fi

done

echo `date +"%Y年%m月%d日 %H:%M:%S"` Bakup succ! >> $LogFile

5.为databak.sh和binlogbak.sh添加执行权限

chmod 777 binlogbak.sh databak.sh  

6.开启定时任务

vi /etc/crontab  

crontab:

#每个星期日凌晨3:00执行完全备份脚本

0 3 * * 0 /home/mysql/databak.sh >/dev/null 2>&1

#周一到周六凌晨3:00做增量备份

0 3 * * 1-6 /home/mysql/binlogbak.sh >/dev/null 2>&1

使上述定时任务生效

crontab /etc/crontab  

查看定时任务

crontab -l  

这是我的公众号 有最新的it咨询,和个人工作的记录:

![扫码_搜索联合传播样式-微信标准绿版.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xODU1NzgxMy05YzcxMDlkZjgzMmJlOTc2LnBuZw?x-oss-process=image/format,png)

这是我的个人微信遇到问题欢迎,提问:

![微信图片_20190614200326.jpg](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xODU1NzgxMy03NjJmYTFlOGFlOWZjMjk3LmpwZw?x-oss-process=image/format,png)

最后加上高质量的淘宝店:如有质量问题随时滴滴我,童叟无欺!

![微信图片_20191111194455.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xODU1NzgxMy1iZjlkMjQzYjg5OWIyYTA1LnBuZw?x-oss-process=image/format,png)

以上是 liunx系统mysql全量备份和增量备份 的全部内容, 来源链接: utcz.com/z/511698.html

回到顶部