前提

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

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

## 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/bashexport LANG=en_US.UTF-8BakDir=/home/mysql/backupLogFile=/home/mysql/backup/bak.logDate=`date +%Y%m%d`Begin=`date +"%Y年%m月%d日 %H:%M:%S"`cd $BakDirDumpFile=$Date.sqlGZDumpFile=$Date.sql.tgzmysqldump -uroot -p123456 --databases test --flush-logs --delete-master-logs --single-transaction > $DumpFiletar -czvf $GZDumpFile $DumpFilerm $DumpFilecount=$(ls -l *.tgz |wc -l)if [ $count -ge 5 ]thenfile=$(ls -l *.tgz |awk '{print $9}'|awk 'NR==1')rm -f $filefi#只保留过去四周的数据库内容Last=`date +"%Y年%m月%d日 %H:%M:%S"`echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFilecd $BakDir/dailyrm -f *

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

vim /home/mysql/binlogbak.sh

binlogbak.sh :

#!/bin/bashexport LANG=en_US.UTF-8BakDir=/home/mysql/backup/dailyBinDir=/var/lib/mysqlLogFile=/home/mysql/backup/binlog.logBinFile=/var/lib/mysql/mysql-bin.indexmysqladmin -uroot -p123456 flush-logs#这个是用于产生新的mysql-bin.00000*文件Counter=`wc -l $BinFile |awk '{print $1}'`NextNum=0#这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的。for file in `cat $BinFile`dobase=`basename $file`#basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./NextNum=`expr $NextNum + 1`if [ $NextNum -eq $Counter ]thenecho $base skip! >> $LogFileelsedest=$BakDir/$baseif(test -e $dest)#test -e用于检测目标文件是否存在,存在就写exist!到$LogFile去。thenecho $base exist! >> $LogFileelsecp $BinDir/$base $BakDirecho $base copying >> $LogFilefifidoneecho `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

个人微信公众,经常更新一些实用的干货:

liunx系统mysql全量备份和增量备份相关推荐

  1. MySQL全量同步和增量同步-

    me:为啥你们队答辩时说的话, 我听了没啥感觉, 评委听了直接就深有感触了? 资深:生产不可能只同步一张表和10W数据, 其他队伍用jdbc的方法同步全量数据, 在真实环境决绝报错.生产都是5000万 ...

  2. centos7下mysql定时全量备份、增量备份实现方法

    最近学习的数据库自动定时备份的方法,从网上看的很多资料,大部分文章都是用的脚本之家的那个模板(原代码地址:https://www.jb51.net/article/99938.htm),但是都没有很详 ...

  3. mysql全量备份与增量备份_Mysql增量备份与全量备份

    mysqldump备份及binlog日志恢复 详情: http://blog.51cto.com/hongge/1862214 1.首先确保已开启binlog日志功能.在my.cnf中包含下面的配置以 ...

  4. mysql全量备份、增量备份实现方法

    mysql全量备份.增量备份.开启mysql的logbin日志功能.在/etc/my.cnf文件中加入以下代码: ? 1 2 3 4 5 6 7 [mysqld] log-bin = "/h ...

  5. mysql 数据增量备份_MySQL数据库之mysql全量备份、增量备份实现方法

    本文主要向大家介绍了MySQL数据库之mysql全量备份.增量备份实现方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. mysql全量备份.增量备份.开启mysql的logb ...

  6. 企业级MySQL数据库备份方案:增量备份、全量备份、逻辑备份

    一份好的备份方案无非包括以下几点: 为什么需要备份? 备份的方式有哪些? 某几种备份方式的区别在哪? 备份实战操作概述 恢复实战操作概述 其它备注信息 那么,此文将从以上几个角度,结合一些实际的实战经 ...

  7. mysql binlog增量备份脚本_实现mysqlldump+binlog日志全量备份和增量备份脚本

    实现mysqlldump+binlog日志全量备份和增量备份脚本 #!/bin/bash ####################################################### ...

  8. 全量备份,差量备份,增量备份的异同

    作为一名运维工程师,在日常工作中会时常对各类重要数据进行备份,为了方便管理,运用何种备份方案是至关重要的. 今天在此简单说明下Linux运维中的备份种类:全量备份.增量备份.差异备份. 一.首先说一下 ...

  9. 数据库备份数据:全量备份、增量备份

    全量备份是指对某一时间点上的所有数据进行全量备份,包括系统和所有数据.这种备份方式每次都需要对系统和所有数据进行一次全量备份.如上,如果两次备份之间数据没有任何变化,那么两次备份的数据是一样的.也就是 ...

最新文章

  1. 边缘会话控制器SBC
  2. Python中threading的join和setDaemon的区别及用法
  3. 用solidity语言开发代币智能合约
  4. samba安装_Centos安装Samba
  5. php 留言板分页显示,php有分页的留言板,留言成功后怎么返回当前页?
  6. Oracle 之instant client
  7. 数据:DeFi总锁定价值突破170亿美元
  8. 搭建企业级Docker Registry -- Harbor
  9. [Android]安卓简易计算器 (使用GridLayout)
  10. KEIL使用malloc函数申请堆空间失败的解决方法
  11. CentOS 7.4 初次手记:第三章 CentOS基础了解
  12. 图解积分法_计算机模拟图解积分法求气相吸收总传质单元数
  13. 红色警戒2修改器原理百科(二)
  14. 线代 006 克拉默法则 线性方程组求解
  15. mongo上云迁移同步mongoshake
  16. html+svg原理,SVG无功补偿的原理是什么
  17. 电子学会2023年3月青少年软件编程python等级考试试卷(三级)真题,含答案解析
  18. 用C语言编写程序,任意输入一个字符串,将其中的字符按从小到大的顺序重排
  19. 什么是冷备份和热备份
  20. 基准测试spec cpu2006

热门文章

  1. QIIME 2教程. 19使用q2-vsearch聚类ASVs为OTUs(2020.11)
  2. Microbiome:宏基因组分箱流程MetaWRAP分析实战和结果解读
  3. R语言使用pwr包的pwr.t.test函数对分组样本数相同的t检验进行效用分析(power analysis)、在已知效应量(effect size)、显著性水平、效用值的情况下计算需要的样本量
  4. R语言str_subset函数和str_which函数:str_subset函数提取字符串向量中所有包含匹配字符的字符串、str_which函数返回字符串向量中所有包含匹配字符的位置(索引)
  5. R语言可视化散点图(scatter plot)图中的标签和数据点互相堆叠丑死了,ggrepel包来帮忙:文本标签(label)相互排斥,远离数据点,远离绘图区域的边缘。
  6. import h5py ImportError: DLL load failed: the specified module could not be found
  7. pip国内常用源及配置方式
  8. TED+肢体语言塑造你自己+power+fake it till you make it
  9. pandas读取字典(dict)数据
  10. JMeter:No-GUI运行及生成漂亮的HTML报告