首页 > 数据库 >mysqldump + binlog实现增量备份

mysqldump + binlog实现增量备份

时间:2023-03-20 11:31:55浏览次数:32  
标签:binlog insert 备份 mysqldump student mysql null tb

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%数据


标签:binlog,insert,备份,mysqldump,student,mysql,null,tb
From: https://blog.51cto.com/zwl28/6132496

相关文章

  • binlog 清理
    --查看自动清理,过期天数mysql>showvariableslike'expire_logs_days';+------------------+-------+|Variable_name|Value|+------------------+-------+|exp......
  • 数据库运维---数据库备份
    数据库备份,数据库为school,素材如下创建数据库并指定字符,后边用到中文mysql>createdatabaseschoolDEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;1.创建stude......
  • 备份 MySQL 中的用户和权限
    概述有两种简单的方法可以只备份MySQL中的用户和权限解决方案1-使用mysqlpump实用程序(作为创建用户和授权语句)[shell~]$mysqlpump-uUSER-p--exclude-database......
  • 使用mysqldump对Mysql进行备份
    文档课题:使用mysqldump对Mysql进行备份.1、理论知识Mysqldump是用于转存储Mysql数据库的实用程序,它可以转储一个或多个MySQL数据库,对其进行备份或传输到远程服务器.其主要产......
  • windows备份文件
    背景:在windows 下进行文件夹备份,备份成些压缩包什么之类的,话不多说,直接上bat 脚本:@echooff@rem全局变量注意事项:C:\Users\Anita\Desktop\temp\,前面最后的“\”一定不要......
  • linux centos yum 单独安装 mysqldump
    在linux下,mysqldump属于mysql的组件,可以安装mysql获取,如:$yum-yinstallmysql-client1一般情况下,是安装mysql的时候获得mysqldump组件,但有时可能已经安装Mar......
  • 逻辑备份与online ddl流程
    逻辑备份:6步   onlineddl:5步 ......
  • 2.使用flash 备份系统
    一、前言至少从solairs9开始,就已经支持系统自带的flash(闪存)来备份系统。使用flash来备份系统有以下几个好处:1、无需额外的设备,如磁带机。尤其是克服了受硬件条件的限制......
  • docker mysql8.0 启动,挂数据卷,定时备份,恢复~
    安装mysql从mysql社区版的官方源去拉取镜像:mysql/mysql-server-DockerImage|DockerHubdockerrun--name=mysql1-dmysql/mysql-server:latest 镜像起来之后,mys......
  • MySQL三大日志——binlog、redo log和undo log详解
              ......