mysqldump+binlog实现增量备份

author author     2023-03-20     632

关键词:

1、核心思路

搞明白一件事:到底什么是增量备份?

答:① 要有全量备份 ② 继续增删改数据 ③ 再次需要备份时,不需要进行全量备份,只需要备份binlog日志文件即可(因为binlog日志记录了增删改操作的所有SQL语句)

2、增量备份实验步骤

第一步:先准备数据(前提)

第二步:开启二进制,然后做全量备份(全库备份)

第三步:继续对数据库进行增删改操作

第四步:突然发生了硬件故障,数据库丢失了

第五步:恢复全量备份导出的数据(不完整,可能只有90%)

第六步:备份二进制日志,根据其信息(导入剩余的10%的数据)

...

完成

3、增量备份的具体实践

第一步:准备数据

mysql> create database db_itheima default charset=utf8;
mysql> use db_itheima;
mysql> create table tb_student(
id int not null auto_increment,
name varchar(20),
age tinyint unsigned default 0,
gender enum(male,female),
subject enum(ui,java,yunwei,python),
primary key(id)
) engine=innodb default charset=utf8;

mysql> insert into tb_student values (null,刘备,33,male,java);
mysql> insert into tb_student values (null,关羽,32,male,yunwei);
mysql> insert into tb_student values (null,张飞,30,male,python);
mysql> insert into tb_student values (null,貂蝉,18,female,ui);
mysql> insert into tb_student values (null,大乔,18,female,ui);

第二步:开启二进制日志,重启服务,然后进行全库备份

# vim my.cnf
[mysqld]
...
server-id=10
log-bin=/mysql_3306/data/binlog

# service mysql_3306 restart
# rm -rf /tmp/sqlbak/*
# mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > /tmp/sqlbak/all.sql -p

第三步:继续对数据库进行增删改操作

mysql> insert into tb_student values (null,小乔,16,female,ui);
mysql> delete from tb_student where id = 3;

第四步:突然发生了硬件故障,数据库丢失了

# mysql -e "drop database db_itheima;" -p
Enter password:123

...故事开始了(删库)

第五步:动员运维工程师开始进行数据恢复,马上把最新的二进制文件进行备份

# cp /mysql_3306/data/binlog.000003 空格 /tmp/sqlbak/

第六步:先进行全库恢复

# mysql < /tmp/sqlbak/all.sql -p
Enter password:123

第七步:通过binlog增量备份还原数据到100%

学会读二进制日志文件,必须通过专业的工具

# mysqlbinlog /tmp/sqlbak/binlog.000003  =>  重点找事故的临界点,如drop database
at
# mysqlbinlog --start-position=4 --stop-position=740 /tmp/sqlbak/binlog.000003 |mysql -p

到此恢复100%数据


负责数据库的备份,实现周一之周六增量备份,周日全量备份

1、mysql全量备份、增量备份。开启mysql的logbin日志功能。在/etc/my.cnf文件中加入以下代码: [mysqld]log-bin="/home/mysql/logbin.log"binlog-format=ROWlog-bin-index="/home/mysql/logindex"binlog_cache_size=32mmax_binlog_cache_size= 查看详情

基于binlog的增量备份

1.1增量备份简介     增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文... 查看详情

企业案例:增量恢复案例(代码片段)

1、环境准备条件:1.具备全量备份(mysqldump)。2.除全量备份以外,还有全量备份之后产生的的所有binlog增量日志。1.1、建立数据库和表CREATEDATABASEdadong;USE`dadong`;CREATETABLE`test`(`id`int(4)NOTNULLAUTO_INCREMENT,`name`char(20)NOTNULL,PRIMARYKEY(`id`))E... 查看详情

shell脚本:mysql全备与binlog增量备份

脚本功能:mysql库备份脚本,全备与binlog日志备份    脚本可以根据指定的参数进行全备,其余时间备份binlog日志---------------#!/bin/bash# description:Trian Server backup databases# revision on  查看详情

如何将linux中mysql备份恢复

...,而且可能会有多个.在数据库中flush-logs,或者使用mysqladmin,mysqldump调用flush-logs后并且使用参数delete-master-logs,这些日志文件会消失,并产生新的日志文件(开始是空的).所以如果从来不备份,开启日志可能没 查看详情

数据库备份

...份和物理备份逻辑备份结果为SQL语句适合于所有存储引擎mysqldump物理备份对数据库目录的拷贝对于内存表之备份结构全量备份对整个数据库的完整备份增量备份上次全量或者增量备份基础上对于更改数据进行备份XtraBack使用mysqldu... 查看详情

mysql数据库怎么开启binlog

...辑备份,优点可以备份各种存储引擎1.备份所有的数据库#mysqldump-uroot-p--all-database>all.sql2.备份指定的数据库#mysqldump-uroot-ptest>test.sql3.备份指定数据库中的表#mysqldump-uroot-ptests>test_s.sql备份完全恢复实例(1)上午9点备份数据库#mys... 查看详情

20180207mydumper备份流程

mydumper备份流程mydumper和mysqldump比对mysqldump备份是属于单进程备份,mydumper备份属于多线程备份。mysqldump备份innodb引擎表和非innodb引擎表的时候使用一致性备份的时候备份的非innodb引擎表的数据可能会和showmasterstatus获取得到binlog... 查看详情

一个简单的binlog恢复测试

...之重的事情,所以要做好备份及测试,日常的备份常见有mysqldump+binlog备份、xtrabackup+binlog备份,无论那一种,几乎都少不了对binlog的备份,说明了binlog在数据恢复中的重要性,下面做个小测试,是工作中不少运维或者新人DBA容易... 查看详情

linux中mysql如何备份与恢复

...要干什么工作!脚本描述每7天备份一次所有数据,每天备份binlog,也就是增量备份.(如果数据少,每天备份一次完整数据即可,可能没必要做增量备份)作者对shell脚本不太熟悉,所以很多地方写的很笨:)开启binlog在mysql4.1版本中,默认只有... 查看详情

mysql如何快速备份

...源:知乎河南-老宋(志强)问题描述的不是非常的清晰使用mysqldump备份时一般会会加上--single-transaction参数,这里假设你是加了这个参数。一加速备份1加了single-transaction参数备份时需要先flushtablewithreadlock这个过程中会有一个锁表... 查看详情

mysql常用备份工具流程解析

...份的基础上才能进行数据恢复,无法单独进行数据恢复。mysqldump备份出的文件就是sql文件,其核心就是对每个表执行select,然后转化成相应的insert语句。mysqldump的备份流程大致如下:从上面可以看出在mysqldump备份期间,备份到某... 查看详情

mysql数据备份与恢复使用详解

...数据);全量备份就是把数据库中所有的数据进行备份;mysqldump会取得一个时刻的一致性数据2、增备​ 增量数据就是指上一次全量备份数据之后到下一次全备之前数据库所更新的数据,对于mysqldump,binlog就是增量数据;3、差... 查看详情

mysql如何备份和还原数据库

目前MySQL支持的免费备份工具有:mysqldump、mysqlhotcopy,还可以用SQL语法进行备份:BACKUPTABLE或者SELECTINTOOUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM表是保存成文件的形式,因此相... 查看详情

springboot入门教程:数据库恢复(mysqldump和mysqlbinlog)(代码片段)

...的记录。一般恢复从两种纬度来进行恢复:一部分从mysqldump中恢复备份到之前的状态。另一部分在恢复到备份之前的基础上再从bin 查看详情

springboot入门教程:数据库恢复(mysqldump和mysqlbinlog)(代码片段)

...的记录。一般恢复从两种纬度来进行恢复:一部分从mysqldump中恢复备份到之前的状态。另一部分在恢复到备份之前的基础上再从bin 查看详情

mysql备份恢复方案都有哪些,全备,热备该怎么做

参考技术A方案一:mysqldump全备份+日志增量备份1,mysqldump备份方案:周一凌晨3点全备周二到周日凌晨3点增量备份2,备份步骤(1)创建备份目录,备份脚本存放目录Shell>mkdir/usr/mysqlbackup;Shell>chmod755/usr/mysqlbackup;Shell>mkdir/usr/mys... 查看详情

mysql的两个备份语句

适合多引擎混合(例如:myisam与innodb混合)的备份命令如下:mysqldump-A-R--triggers--master-data=2--single-transaction |gzip>/opt/alL_$(date+%F).sql.gz------使用mysqldump+binlog日志,故障模拟恢复mysqldump-A-R--triggers--master-d 查看详情