Mysql.数据备份

article/2025/10/7 23:50:14

目录

前言

思考:

1. 如果只用redo log或者只用binlog可以吗?

2.xtrabackup实现mysql:全量备份+增量备份

(1)简介:

(2)下载:

(3)官方文档:

(4)源服务器和目标服务器准备:

(5)源服务器备份全量及一次增量数据库文件:

(6)目标服务器还原全量及一次增量数据库文件:

概述

1.binlog日志有两个最重要的使用场景:

2.binlog日志包括两类文件 :

3.数据恢复

(1)查看服务:

(2)配置文件:

(3)开始实验:


前言

  • MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL(create alter drop)和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。

思考:

1. 如果只用redo log或者只用binlog可以吗?

要搞清楚这个问题我们首先要了解MySQL服务层的日志都有哪些及更新修改数据的过程: 

Type input.information 二进制(binnary)日志 记录了对MySQL数据库执行更改的所有操作 慢查询日志 记录所有执行时间超过 long_query_time 秒的所有查询或不使用索引的查询,这里的参数可以修改 错误日志 记录在启动,运行或停止mysqld时遇到的问题 通用查询日志 记录建立的客户端连接和执行的语句 中继日志 从复制主服务器接收的数据更改

redolog日志(innodb.redolog)记录了更新后待写入磁盘的数据
undolog日志记录了更新修改前的记录

结论:mysql中redo log日志使用了一个WAL技术(也就是先写日志再写入磁盘,其中当innodb的更新数据到buffer pool时写入redolog日志时是写入redo buffer中而不是直接写入redo日志文件内)起到一个重要作用就是减少了因为更新修改的数据量过大而造成的磁盘多次i/o成本,并且在数据过大写满时它会将部分数据优先写入磁盘,来扩出新的空间,当出现宕机的情况,我们可以根据之前的redolog记录来进行恢复;binlog日志属于MySQL服务层的操作记录日志,它记录了所有更改的操作,对于数据的恢复起到很大作用;所以当你的MySQL使用的是INNODB引擎时他们两个日志需要一起使用会更好,当你的MySQL不是INNODB引擎时也就不存在redolog所以要看情况去使用。

2.xtrabackup实现mysql:全量备份+增量备份

(1)简介:

    Percona XtraBackup是一款基于MySQL的服务器的开源热备份实用程序,备份时不影响数据库的正常读写,它可以备份MySQL5.1,5.5,5.6,5.7,8.0服务器上的InnoDB,XtraDB和MyISAM表的数据,以及带有XtraDB的Percona服务器。

(2)下载:

GitHub:

GitHub - percona/percona-xtrabackup: Open source hot backup tool for InnoDB and XtraDB databasesOpen source hot backup tool for InnoDB and XtraDB databases - GitHub - percona/percona-xtrabackup: Open source hot backup tool for InnoDB and XtraDB databaseshttps://github.com/percona/percona-xtrabackuppercona:

Percona Software downloads for databasesDownload free, open source software for MySQL including Percona Server, Percona XtraBackup, Percona Toolkit, Percona XtraDB Cluster, and more. Download now!https://www.percona.com/downloads/

linux系统终端下载安装命令:

wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.27-19/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.27-19.1.el8.x86_64.rpm
yum -y install percona-xtrabackup-80-8.0.27-19.1.el8.x86_64.rpm

 (3)官方文档:

Percona XtraBackup - Documentation — Percona XtraBackup 8.0 Documentationhttps://docs.percona.com/percona-xtrabackup/latest/index.html

 (4)源服务器和目标服务器准备:

  • 主机名修改、关闭防火墙和SELinux、同步时间、安装好MySQL 8.0.26 数据库(serverclient)

server

client并且设置为开机自启动时间同步 

  • 监听端口并设置mysql服务为开机自启动、首次进入无密码然后修改密码并验证登录情况:

 

  • 准备一个用于测试的库,如果有直接导入进去,没有就自己创建一个,这里我是自己创建的

(5)源服务器备份全量及一次增量数据库文件:

  •  下载并安装xtrabackup、在源服务器上用xtrabackup完成一次全量的数据库文件备份;第一次修改数据库,并完成第一次增量备份;第二次修改数据库,并完成第二次增量备份;
    最后将备份好的全部文件传送给目标服务器

  • 一次全量的数据库文件备份直到出现completed OK!

  • 查看备份是否存在

  • 登录数据库插入两条数据

  • 增量备份并查看ceshi文件夹下是否有increment

  • 将全量及增量备份文件传送给client

(6)目标服务器还原全量及一次增量数据库文件:

  • 下载并安装xtrabackup,关闭mysql服务,在目标服务器上用xtrabackup对源服务器传送过来的备份文件进行预处理,因后面有增量备份需要合并进来

  • 在目标服务器上用xtrabackup对源服务器传送过来的备份文件进行预处理

  • 因为后面需要合并增量备份处理,所以不做all的回滚 

  • 当增量备份时需要进行回滚

  •  将备份文件copy到/var/lib/mysql下然后修改目录权限给mysql并查看

  • 这里需要注意启动client的mysql服务,因为是全量备份了server的数据库所以首次登录的密码是server修改的密码

  •  查看test库中ceshi表中数据,至此xtrabackup全量+增量实验结束

概述

1.binlog日志有两个最重要的使用场景:

MySQL主从复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves来达到 master-slave数据一致的目的.

自然就是数据恢复了,通过使用mysqlbinlog工具来使恢复数据。

2.binlog日志包括两类文件 :

  • 二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件
  • 二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句select)语句事件。

3.数据恢复

  • mysql8中的binLog默认是开启的,5.7默认是关闭的,可以通过参数log_bin控制

(1)查看服务:

  • 命令:show variables like '%log_bin%';

(2)配置文件:

  • MySQL命令:vim /etc/my.cnf>>>log-bin=mysql-bin 确认是打开状态(mysql-bin 是日志的基本名或前缀名)
  • MariaDB命令:vim /etc/mysql/mariadb.conf.d/50-server.cnf>>>log-bin=mysql-bin

  • 重启mysqld服务使配置生效:service mysql restart
  • 查看log-bin开启状态:show ariables like '%log_%';

(3)开始实验:

  •  创建一个数据库test,在test中创建一张log表并插入数据,之后将数据进行全量备份到/tmp下:

 

 

  •  查看所有binlog日志列表并再重新插入并更新表log内容:

  • 然后后面不小心删掉了库test,再赶紧刷新logs形成新的日志让其他事务写入新的log中: flush logs; 

  • 立即备份记录数据的mysql-bin.000007到/tmp下:

  • 查看刷新的日志mysql-bin.000007找到删除的语句行:方法一:mysqlbinlog --no-defaults mysql-bin.000007(这里如果不加--no-defaults会报错因为mysqlbinlog无法识别binlog日志中配置的default-character-set=utf8mb4指令)方法二:登录mysql服务器查看 show binlog events in 'mysql-bin.000007';

  •  先将之前完全备份的数据恢复:

  •  但是此时并没有恢复后面更新修改的数据:

 

  •  使用binlog完全恢复,首先将/var/lib/mysql下的mysql-bin.000007复制到/tmp中然后将其重定向到000007.sql,再用vim编辑将DROP语句删除,保存后再将000007.sql传到mysql中,至此数据就恢复了:

  • 在恢复全备数据之前必须将该binlog文件移出,否则恢复过程中,会继续写入语句到binlog,最终导致增量恢复数据部分变得比较混乱

因为没有将binlog文件移出所以导致了后面增量恢复出错

 


http://chatgpt.dhexx.cn/article/kVdJ0HuI.shtml

相关文章

MySQL的数据备份

MySQL的数据备份 MySQL数据完全备份 数据备份目的? 数据丢失或者损坏,可以使用备份数据恢复 数据备份策略 完全备份 备份所有数据(一张表,一个库、一台服务器) 增量备份 备份上次备份后,所有新产生的数…

mysql数据备份

直接拷贝文件 myisam存储引擎 只要对应表的后缀为.frm .MYD .MYI,三个文件拷贝到对应的数据库文件夹就行 innodb存储引擎 先通过SHOW CREATE TABLE table命令,查询出表的创建语句,然后在备份库中执行执行ALTER TABLE table DISCARD TABLESPACE,丢弃的表空间拷贝表的后缀为.…

windows MySQL数据备份

本博客属作者原创,未经允许禁止转载,请尊重原创!如有问题请联系QQ509961766 环境 OS:windows server 2012 Mysql:5.6.33 编写脚本 新建dump.bat批处理文件 rem auther:wwhy rem date:20210823 rem ******Backup MyS…

Mysql 数据备份

一、数据库备份的分类 备份方式分很多种,从物理与逻辑的角度,备份可分为以下几类: 1. 物理备份 指对数据库操作系统的物理文件(如数据文件、日志文件等)的备份 物理备份是磁盘块为基本单位将数据从主机复制到备机 物…

Mysql数据备份(mysqldump的操作)

数据备份 所有备份数据都应放在非数据库本地,(得用远程存储,如ftp,nfs)而且建议有多份副本。 备份的作用 能够防止由于机械故障以及人为误操作带来的数据丢失,如,将数据库文件保存在了其它地…

MySQL 数据备份与恢复

本次使用的MySQL版本为8.0.20 目录 一、数据备份 1.使用 MySQLdump 命令备份 (1)使用MySQLdump备份单个数据库中的所有表 案例:完成数据插入后,输入备份命令如下: (2)使用MySQLdump备份数据…

MySQL备份

目录 一、直接拷贝数据库文件 二、mysqldump备份数据库 1、备份 2、备份还原 (1)完全备份还原 (2)增量备份 #eg ​(1)创建一个新的数据库表resume.test ​(2)此时完全备份 ​​(3)接着再往数据库表里面插入两条数据 ​(4)删除数据库resume,刷新日志 ​(5)此时会增加一个…

MySQL备份方案

mysql数据库的几种备份方案: 一、binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 1、binlog日志 1.1、引起mysql服务器改变的任何操作( 增 删 改 没有查)1.2、复制功能依赖于此日志1.3、slave服务器通过复制master…

MySQL 数据库备份(一)(完全备份与恢复)

文章目录 前言一、MySQL 完全备份1.数据库备份方式精讲1.1 数据库备份的重要性1.2 数据库备份的分类1.2.1 物理备份1.2.2 逻辑备份1.2.3 完全备份1.2.4 差异备份1.2.5 增量备份1.2.6 备份方式比较 1.3 MySQL 完全备份概念解读 2.mysqldump 备份演练2.1 使用 tar 打包文件夹备份…

捷豹路虎选择思博伦车载以太网一致性测试解决方案

现代化的汽车往往拥有上百种发动机控制单元(ECU),随着越来越多的车辆开始支持多摄像机和高级驾驶员辅助系统(ADAS)等特性,汽车设计师必须在车载网络中采用更高带宽的以太网技术。汽车以太网源于现代通信网络…

Hype_V

Hyper-V是 微软的一款虚拟化产品,是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。这也意味着 微软会更加直接地与市场先行者VMware展开竞争,但竞争的方式会有所不同。 目录 简介 系统要求 架构特点 技术 实际部署 展开 简介 系统…

HSRP介绍

HSRP(Hot Standby Router Protocol 热备份路由器协议)是Cisco的专有协议。HSRP把多台路由器组成一个“热备份组”,形成一个虚拟路由器。这个组内只有一个路由器是Active(活动)的,并由它来转发数据包,如果活动路由器发生了故障,备份…

php+coreseek/sphinx之中文全文搜索平台搭建

1.简介 sphinx是一款高性能全文搜索软件包,由俄罗斯人开发,sphinx本身是可以支持中文搜索的,只是不支持中文分词,需要安装中文分词插件,coreseek就是一个打包了mmseg中文分词插件和sphinx源码的安装包。 2.安装 cores…

live555传输Speex音频详解一:Speex over RTP

1. RTP Speex 头部 RTP头部在[RFC3550]中定义。本文定义RTP头部中各字段的用法。 Payload Type (PT): 本格式的负责类型号。 Marker (M) bit: 此位被用来标志一段无声后有声的开始。打在 有声数据的第一个包上。 Speex支持声音检测,可以在无声时不 产生帧数据。所…

Speex的使用

Downloads Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外,相对于其它编解码器,Speex也很适合网络应用,在网络应用上有着自己…

网络测速服务器OpenSpeedTest

什么是 OpenSpeedTest ? OpenSpeedTest 是一个跨平台的互联网速度测试应用程序。因此,您可以在不同操作系统中的各种网络浏览器中测试您的互联网速度,而无需安装任何其他应用程序或插件(无需 Flash 或 Java)。这意味着…

【SpeechX—统一高性能语音部署工具】SpeechX Custom ASR

(以下内容搬运自 PaddleSpeech) 在一些场景中,识别系统需要高精度的识别一些稀有词,例如导航软件中地名识别。而通过定制化识别可以满足这一需求。 相关demo: https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/demos/custom_streaming_asr …

Speex for Android

http://blog.csdn.net/chenfeng0104/article/details/7088138 在Android开发中,需要录音并发送到对方设备上。这时问题来了,手机常会是GPRS、3G等方式上网,所以节省流量是非常关键的,使用Speex来压缩音频文件,可以将音…

IOS开发之SDWebImage

SDWebImage 前言:在我们日常的开发中我们通常会使用SDWebImage来实现UIImageView加载来自互联网的远程图片 官方介绍:一个具有缓存支持的异步映像下载程序 功能简介 一个添加了web图片加载和缓存管理的UIImageView分类一个异步图片下载器一个异步的内存…

SDWebImage-解码、压缩图像

一、简单介绍 研究了下SDWebImage的源码,借鉴了别人的一些资料,感觉逐渐的明白的一些原理,现在就来记录下。 在我们使用 UIImage 的时候,创建的图片通常不会直接加载到内存,而是在渲染的时候默认在主线程上再进行解码…