Mysql数据库日志和数据的备份恢复(去看一看海吧)

news2024/11/26 18:52:24

文章目录

  • 一、数据库备份的重要性
  • 二、数据库备份的分类
    • 1.物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。
    • 2.逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份,导出sql文件。
    • 3.完全备份:每次对数据库进行完整的备份。
    • 4.差异备份:备份自从上次完全备份之后被修改过的文件。
    • 5.增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份。
  • 三、常见的备份方法
    • 1.物理冷备
    • 2.专用备份工具
    • 3.启用二进制日志进行增量备份
    • 4.第三方工具备份
  • 四、完全备份
    • 1.简介
    • 2.优缺点
  • 五、完全备份与恢复
    • 1.物理冷备份与恢复
  • 六、mysql日志管理
  • 七、增量备份与恢复
    • 1.备份和查看
      • (1)当我们设置了二进制日志,之后在数据库中的操作会保存在最新的二进制日志中(即文件后缀序号最大的),也可以在mysql-bin.index文件中查看
      • (2)使用以下命令刷新新的日志文件,会生成新的二进制日志,每次生成,后缀的序号会+1。
      • (3)将旧的二进制日志(当前最新的 -1)迁移出来(可以加上日期便于识别)
      • (4)由于是二进制文件,需要转码才能查看
      • (5)也可以将输出的内容重定向输入到文本文件中便于查看和编辑
    • 2.恢复
      • (1)将二进制日志中的所有数据恢复
      • (2)断点恢复(将二进制日志中的指定数据恢复)
  • 八、备份加入计划任务
    • 1.编写完全备份脚本和增量备份脚本
    • 2.加入计划任务

一、数据库备份的重要性

    备份的主要目的是灾难恢复,在生产环境中,数据的安全性至关重要,任何数据的丢失都可能产生严重的后果。

    造成数据丢失的原因主要有:程序错误、人为操作错误、运算错误、磁盘故障、灾难(如火灾、地震)和盗窃。

二、数据库备份的分类

从物理与逻辑的角度,备份可分为

1.物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。

冷备份(脱机备份)︰是在关闭数据库的时候进行的;
热备份(联机备份)︰数据库处于运行状态,依赖于数据库的日志文件;
温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作。

2.逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份,导出sql文件。

从数据库的备份策略角度,备份可分为

3.完全备份:每次对数据库进行完整的备份。

4.差异备份:备份自从上次完全备份之后被修改过的文件。

5.增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份。

推荐使用 完全备份+增量备份 的方式

三、常见的备份方法

1.物理冷备

备份时数据库处于关闭状态,直接打包数据库文件,备份速度快,恢复时也是最简单的。

2.专用备份工具

mysqldump常用的逻辑备份工具;
mysqlhotcopy。(仅拥有备份MyISAM和ARCHIVE表)

3.启用二进制日志进行增量备份

进行增量备份,需要刷新二进制日志。(本文会介绍)

4.第三方工具备份

免费的MySQL热备份软件:Percona、XtraBackup等。

四、完全备份

1.简介

  • 是对整个数据库、数据库结构和文件结构的备份;

  • 保存的是备份完成时刻的数据库;

  • 是差异备份与增量备份的基础。

2.优缺点

优点

  • 备份与恢复操作简单方便。

缺点

  • 数据存在大量的重复;
  • 占用大量的备份空间;
  • 备份与恢复时间长。

五、完全备份与恢复

1.物理冷备份与恢复

关闭mysql数据库,使用tar命令直接打包数据库数据文件夹,实现备份

#关闭mysql服务
systemctl stop mysqld.service
 
#创建备份目录
mkdir /sqlbak
 
#压缩打包数据文件夹,并以归档日期命名
tar zcf /sqlbak/mysql_bak_$(date +%F).tar.gz /usr/local/mysql/data/

在这里插入图片描述
替换数据文件夹实现恢复

#如果有需要,可以将现在的数据库文件迁移到一个目录中
mkdir /sqldata
mv /usr/local/mysql/data/ /sqldata
 
#将备份压缩包解压到一个目录下,并将其迁移到mysql的数据目录下
mkdir /sqlrestore
tar zxf /sqlbak/mysql_bak_2022-10-26.tar.gz -C /sqlrestore/
 
mv /sqlrestore/usr/local/mysql/data/ /usr/local/mysql/
 
#启动mysql服务
systemctl start mysqld.service

2.mysqldump备份与恢复
单库备份

mysqldump -u用户名 -p密码 [选项] 数据库名 > /备份路径/备份文件名
–databases 可以保存创建库名

多库备份

mysqldump -u用户名 -p密码 [选项] --databases 库名1 库名2 … > /备份路径/备份文件名

所有库备份

mysqldump -u用户名 -p密码 [选项] --all-databases > /备份路径/备份文件名

表备份

mysqldump -u用户名 -p密码 [选项] 数据库名 表名 > /备份路径/备份文件名
-d 只保存表结构

恢复库

mysqldump -u用户名 -p密码 < /备份路径/库备份文件

恢复表

mysqldump -u用户名 -p密码 库名 < /备份路径/表备份文件

六、mysql日志管理

修改/etc/my.cnf,添加错误日志、通用查询日志、慢查询日志和二进制日志

错误日志:用来记录当MysQL启动、停止或运行时发生的错误信息,默认已开启;
通用查询日志:用来记录MySQL的所有连接和语句,默认是关闭的;
慢查询日志:用来记录所有执行时间超过long query time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的;
二进制日志:用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启。

vim /etc/my.cnf
 
[mysqld]
...
 
#错误日志
log-error=/usr/local/mysql/data/mysql_error.log
 
#通用查询日志
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
 
#二进制日志
log_bin=mysql-bin
binlog_format=MIXED
 
#慢查询日志
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=2

二进制日志格式有三种:binlog_format=STATEMENT 或 ROW 或 MIXED
STATEMENT:基于SQL语句记录二进制日志,写入和恢复速度较快,在高并发的情况可能会出SQL语句顺序记录偏差导致恢复时数据丢失。(老版本的默认模式)
ROW:基于行记录二进制日志,写入和恢复速度较STATEMENT慢些,日志文件占用空间也较大,但是准确性较高。(5.7的默认模式)
MIXED:混合模式,平时负载压力较小时使用SQL语句记录二进制日志,在高并发的情况会切换成基于行记录二进制日志。

重启服务后,日志文件就生成了
在这里插入图片描述
查看日志开启状态
在这里插入图片描述
在这里插入图片描述

七、增量备份与恢复

1.备份和查看

(1)当我们设置了二进制日志,之后在数据库中的操作会保存在最新的二进制日志中(即文件后缀序号最大的),也可以在mysql-bin.index文件中查看

在这里插入图片描述

(2)使用以下命令刷新新的日志文件,会生成新的二进制日志,每次生成,后缀的序号会+1。

mysqladmin -u用户 -p密码 flush-logs

在这里插入图片描述

(3)将旧的二进制日志(当前最新的 -1)迁移出来(可以加上日期便于识别)

在这里插入图片描述

(4)由于是二进制文件,需要转码才能查看

mysqlbinlog --no-defaults --base64-output=decode-rows -v 二进制日志文件

在这里插入图片描述

(5)也可以将输出的内容重定向输入到文本文件中便于查看和编辑

在这里插入图片描述

2.恢复

(1)将二进制日志中的所有数据恢复

mysqlbinlog --no-defaults 二进制日志文件 | mysql -u用户名 -p密码

(2)断点恢复(将二进制日志中的指定数据恢复)

在这里插入图片描述
基于位置点

从位置点恢复到结尾
mysqlbinlog --no-defaults --start-position=‘位置点’ 二进制日志文件 | mysql -u用户名 -p密码

在这里插入图片描述
从位置点恢复到位置点

mysqlbinlog --no-defaults --start-position=‘位置点1’ --stop-position=‘位置点2’ 二进制日志文件 | mysql -u用户名 -p密码

在这里插入图片描述
基于时间点

时间点格式:‘YYYY-mm-dd HH:MM:SS’ 如:‘2022-10-27 12:56:27’

从时间点恢复到结尾

mysqlbinlog --no-defaults --start-datetime=‘时间点1’ 二进制日志文件 | mysql -u用户名 -p密码

在这里插入图片描述
从时间点恢复到时间点

mysqlbinlog --no-defaults --start-datetime=‘时间点1’ --stop-datetime=‘时间点2’ 二进制日志文件 | mysql -u用户名 -p密码
在这里插入图片描述

八、备份加入计划任务

通常情况需要执行一次完全备份后,再定期执行增量备份。

需求:现需要实现今晚12:00做完全备份,之后每天执行增量备份

1.编写完全备份脚本和增量备份脚本

#完全备份脚本
vim generalbak.sh
#!/bin/bash
mysqldump -uroot -p123123 --all-databases > /sqlbinlog/mysql_general_bak.sql
 
#增量备份脚本
vim addbak.sh
#!/bin/bash
mysqladmin -uroot -p123123 flush-logs
filename=$(tail -2 /usr/local/mysql/data/mysql-bin.index | head -1 |awk -F'/' '{print $2}')
mv /usr/local/mysql/data/$filename /sqlbinlog/mysql-bin-$(date +%Y%m%d)

2.加入计划任务

crontab -e
0 0 28 10 * /sqlbinlog/generalbak.sh
0 0 * * * /sqlbinlog/addbak.sh

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

被卖到 2w 的 ChatGPT 提示词 Prompt 你确定不想要吗?

有朋友说&#xff0c;用 ChatGPT 生成的文案刻板化&#xff0c;格式化&#xff0c;而且往往也不是我想要的。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 想要用好 ChatGPT 人工智能工具太难了&#xff0c;想一个好的提示词&#xff0c;也太不容易了&#xff0c;ChatGPT 就像一个宝藏…

3ds MAX绘制休闲椅

首先绘制一个长方形&#xff0c;并用上边两端点和底边中点绘制一个样条曲线 将上述曲线旋转复制&#xff0c;形成一个交叉的样条曲线&#xff0c;并移动两端点的位置&#xff0c;形成一上一下的结构 这就是休闲椅的大致形状 通过创建线将四个端点连接起来&#xff0c;形成空间…

UI组件——滑块简介

滑块控件是调整音量和亮度等设置的首选解决方案。它们立即生效&#xff0c;并允许用户通过移动手柄来微调值。滑块可以很好地达到目的&#xff0c;尤其是在精度不是很重要的情况下。 但是&#xff0c;这些控件可能会令人困惑&#xff0c;难以抓取并设置为精确值。另外&#xf…

人类智能的未来在于东西方智能的融合

有人认为&#xff1a;“只有时空的对齐&#xff0c;没有价值的对齐&#xff0c;智能或许就是智障”&#xff0c;即智能技术必须要与人类的价值观念和道德标准相一致&#xff0c;否则它所产生的结果可能会对人类社会造成负面影响。在现代社会中&#xff0c;智能技术已经越来越广…

【Elacticsearch】 分片副本机制,集群发现机制 ,负载机制,容错机制,扩容机制, 分片路由原理

集群发现机制 Elasticsearch采用了master-slave模式&#xff0c; ES会在集群中选取一个节点成为主节点&#xff0c;只有Master节点有资格维护全局的集群状态&#xff0c;在有节点加入或者退出集群的时候&#xff0c;它会重新分配分片&#xff0c;并将集群最新状态发送给集群中其…

Netty中的零拷贝机制

零拷贝机制(Zero-Copy)是在操作数据时不需要将数据从一块内存区域复制到另一块内存区域的技术,这样就避免了内存的拷贝,使得可以提高CPU的。零拷贝机制是一种操作数据的优化方案,通过避免数据在内存中拷贝达到的提高CPU性能的方案。 1.操作系统的零拷贝机制 操作系统的存储空间…

C++基础(5)——类和对象(3)

前言 本文主要介绍了C中类和对象的基本知识 4.3.1&#xff1a;成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 C语言中结构体为空时使用sizeof&#xff08;&#xff09;打印的结果是0 C中类和结构体为空&#xff0c;用sizeof关键字可以算出是空类占1字节、…

OpenCV项目开发实战--图像识别和目标检测之(手写数字分类)

文末附基于Python和C++两种方式实现的测试代码下载链接 在本教程中,我们将使用 OpenCV 构建一个简单的手写数字分类器。一如既往,我们将分享用 C++ 和 Python 编写的代码。 最后两个帖子旨在提供了解基础知识所需的教育。这篇文章旨在提供成功实施图像分类器所需的培训。那么…

SpringBoot集成阿里云OSS实现图片存储服务

SpringBoot集成阿里云OSS实现图片存储服务 1、OSS概述2、账号申请2.1 购买服务2.2 创建Bucket 3、抽取模板工具OssProperties配置类OssTemplate模板对象AutoConfiguration配置类yml配置内容 4、测试 阿里云OSS&#xff08;Object Storage Service&#xff09;是一种强大的云存储…

ASO优化之关于应用商店的展示量

应用的展示数据代表应用在整个应用市场内的曝光次数&#xff0c;被展示的位置包括&#xff1a;首页精品推荐&#xff0c;搜索结果列表&#xff0c;应用详情页等。 应用的展示数据是衡量ASO搜索优化的关键指标。当关键词的覆盖数增加了&#xff0c;展示的次数没有增加&#xff…

【Nacos源码系列】服务注册的原理

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 文章目录 Nacos介绍服务注册客户端注册服务端 总结 Nacos介绍 Nacos是一个基于云原生的动态服务发现、配置管理和服务治理平台&#xff…

cppzmq编译和使用(ubuntu22.04)

libzmq libzmq&#xff0c;也称为 ZeroMQ&#xff0c;是一个高性能、异步消息传递库&#xff0c;用于构建分布式和并发系统。它提供了简单而强大的原语&#xff0c;使得开发者可以方便地在应用程序之间进行异步通信。 以下是对 libzmq 的详细介绍&#xff1a; 简介&#xff1…

VOC数据洞察在淘宝详情页的应用与实践

本专题共10篇内容&#xff0c;包含淘宝APP基础链路过去一年在用户体验数据科学领域&#xff08;包括商详、物流、性能、消息、客服、旅程等&#xff09;一些探索和实践经验&#xff0c;本文为该专题第二篇。 在商详页基于用户动线和VOC挖掘用户决策因子带来浏览体验提升&#x…

如何使用 PowerPoint 2021 制作演示文稿(PPT)?

软件安装&#xff1a;办公神器office2021安装教程&#xff0c;让你快速上手_正经人_____的博客-CSDN博客 引言 PowerPoint 是一款非常常用的演示文稿制作工具&#xff0c;它可以帮助您创建漂亮的幻灯片&#xff0c;展示您的想法和信息。如果您是 PowerPoint 的新手&#xff…

如何选择初始化向量【密码学】(5)

目录 一、分组算法如何计算 二、什么影响算法的安全性 三、密钥的使用次数限制 一、分组算法如何计算 分组算法包括3个部分&#xff1a;数据分组&#xff0c;分组运算和链接模式。 数据分组&#xff1a;将数据分割成加密函数能够处理的数据块&#xff0c;如果不能整分&#x…

【MYSQL篇】mysql不同存储引擎中索引是如何实现的?

前言 不同的存储引擎文件是不一样&#xff0c;我们可以查看数据文件目录&#xff1a; show VARIABLES LIKE datadir;每 张 InnoDB 的 表 有 两 个 文 件 &#xff08; .frm 和 .ibd &#xff09;&#xff0c; MyISAM 的 表 有 三 个 文 件 &#xff08;.frm、.MYD、.MYI&…

简单的PWN堆栈溢出的尝试

这是一道2018年西电CTF线下赛的一道ez_pwn的小题目&#xff0c;该题目为堆栈溢出漏洞的利用1 本次实验环境为 ubuntu 20.0.4 使用工具&#xff1a;GDB pwngdb 首先分析文件大致情况 checksec ez_pwn Arch: amd64-64-little 表示该二进制文件是 64 位的 。 RELRO: Partial R…

计算机网络课程设计——中小型网络工程设计

文件地址:https://github.com/Recursiondzl/Computer-Network github里面有课设文件&#xff0c;别白嫖&#xff0c;点个star哦 摘 要&#xff1a;本次计算机网络实践&#xff0c;完成了中小型网络工程设计与实现对计算机网络知识进行了系统的复习&#xff0c;实践能力获得了…

0基础学习VR全景平台篇第45篇:编辑器底部菜单- 关联场景功能操作

大家好&#xff0c;欢迎观看蛙色VR官方系列——后台使用课程&#xff01; 本期为大家带来蛙色VR平台&#xff0c;底部菜单—关联场景功能操作。 一、本功能将用在哪里&#xff1f; 关联场景&#xff0c;是某个场景下的子场景&#xff0c;也可以理解为VR漫游作品的三级分组&…

1-简单回归问题

一.梯度下降&#xff08;gradient descent&#xff09; 1.预测函数 这里有一组样本点&#xff0c;横纵坐标分别代表一组有因果关系的变量 我们的任务是设计一个算法&#xff0c;让机器能够拟合这些数据&#xff0c;帮助我们算出参数w 我们可以先随机选一条过原点的直线&#xf…