当前位置: 首页 > news >正文

MySQL数据库的日志管理以及备份和恢复

目录

1、日志管理

2、查询日志 

3、数据备份的重要性 

4、数据库备份的分类 

4.1物理备份

4.2逻辑备份:

4.3完全备份

5、常见的备份方法 

6、MySQL完全备份 

6.1MySQL完全备份优缺点

6.2数据库完全备份分类  

6.2.1物理冷备份与恢复

6.2.2mysqldump备份与恢复

 7、完全备份

7.1MySQL物理冷备份及恢复

7.2逻辑备份mysqldump备份与恢复

完全备份一个或多个完的库(包括其中所有的表)

 完全备份指定库中的部分表

完全备份MySQL,服务器中所有的库

查看备份文件 

8、MySQL完全恢复

8.1恢复数据库

8.2恢复数据表 

​编辑 9、MySQL增量备份

10、MySQL增量备份与恢复试验

MySQL增量备份

开启二进制日志功能

 可每周对数据库或表进行完全备份

可每天进行增量备份操作,生成新的二进制日志文件 

再次生成新的二进制日志文件 

查看二进制日志文件的内容 

MySQL 增量恢复 

一般恢复

基于位置恢复

基于时间点恢复


1、日志管理

MySQL的日志默认保存位置为/usr/local/mysql/data

vim /etc/my.cnf
------------------------------------------
[mysqld]  ​
#错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
log-error=/usr/local/mysql/data/mysql_error.log #指定日志的保存位置和文件名​#通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的
general_log=ON #开启通用查询 日志
general_log_file=/usr/local/mysql/data/mysql_general.log#二进制日志(binlog),用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认己开启
log-bin=mysql-bin            #也可以log_bin=mysql-bin#慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=2     #设置超过2秒执行的语句被记录,缺省时为10秒
-------------------------------------------------    ​
systemctl restart mysqld

2、查询日志 

#登录进入数据库
mysql -u root -p123123#查看通用查询日志是否开启
show variables like 'general%';      #查看二进制日志是否开启
show variables like 'log_bin%';  #查看慢查询日志功能是否开启
show variables like '%slow%';  #查看慢查询时间设置
show variables like 'long_query_time'; #在数据库中设置关闭慢查询的方法
set global slow_query_log=OFF;

 

 

3、数据备份的重要性 

备份的主要目的是灾难恢复

在生产环境中,数据的安全性至关重要

任何数据的丢失都可能产生严重的后果

造成数据丢失的原因

  • 程序错误
  • 人为操作错误
  • 运算错误
  • 磁盘故障
  • 灾难(如火灾、地震)和盗窃

4、数据库备份的分类 

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

从数据库的备份策略角度,备份可分为完全备份、差异备份、 增量备份

4.1物理备份

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

物理备份方法

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

4.2逻辑备份:

对数据库逻辑组件(如:表等数据库对象)的备份 

4.3完全备份

  • 完全备份:每次对数据库进行完整的备份
  • 差异备份:备份自从上次完全备份之后被修改过的文件
  • 增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份

5、常见的备份方法 

物理冷备

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

专用备份工具mydump或mysqlhotcopy

  • mysqldump常用的逻辑备份工具
  • mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表

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

  • 进行增量备份,需要刷新二进制日志

第三方工具备份

  • 免费的MySQL热备份软件Percona XtraBackup

6、MySQL完全备份 

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

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

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

6.1MySQL完全备份优缺点

优点

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

缺点

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

6.2数据库完全备份分类  

6.2.1物理冷备份与恢复

  • 关闭MySQL数据库
  • 使用tar命令直接打包数据库文件夹
  • 直接替换现有MySQL目录即可

6.2.2mysqldump备份与恢复

  • MySQL自带的备份工具,可方便实现对MySQL的备份
  • 可以将指定的库、表导出为SQL脚本
  • 使用命令mysql导入备份的数据

 7、完全备份

7.1MySQL物理冷备份及恢复

从192.168.92.7备份到192.168.92.6

配置192.168.92.7

先查看192.168.92.7

关闭数据库并打包数据库文件

systemctl stop mysqld           #关闭mysql服务
mkdir /backup                   #创建备份目录
rpm -q xz                       #使用xz工具进行压缩,查看本系统中是否安装xz工具,如果没安装用yum安装  yum install xz -y 
tar Jcf /backup/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data  #打包数据库文件并将数据库文件存放到/usr/local/mysql/data 
​​cd /backup/                      #切换到备份目录 
ls                              #查看目录内容
tar tf mysql_all_2024-03-26.tar.xz    #查看tar包内的文件

 

 

恢复数据库

scp /backup/mysql_all_2024-03-26.tar.xz 192.168.92.6:/root
#将本机数据库文件远程传输到192.168.92.6主机的root目录下

配置192.168.92.6

 

将data复制到/usr/local/mysql目录下

7.2逻辑备份mysqldump备份与恢复

完全备份一个或多个完的库(包括其中所有的表)

mysqldump -u root -p[密码]--databases库名1[库名2]..>/备份路径/备份文件名.sql #导出的就是数据库脚本文件
例:
mysqldump -u root -p123123 --databases my > /opt/backup/my.sql
mysqldump -u root -p123123 --databases my qyd > /opt/backup/my_qyd.sql

 完全备份指定库中的部分表

mysqldump -u root -p[密码] [-d] 库名 表名1 [表名2] ... > /备份路径/备份文件名.sql
#使用-d"选项,说明只保存数据库的表结构 ,不使用"-d"选项,说明表数据也进行备份
例:
mysqldump -u root -p123123 my account t1 > /opt/backup/account_t1.sql

完全备份MySQL,服务器中所有的库

mysqldump -u root -p[密码] --all-databases > / 备份路径/备份文件名.sql
例: ​
mysqldump -u root -p --all-databases > /opt/backup/all.sql   #完全备份所有的库

查看备份文件 

cat 备份文件名 | grep -v "^--" | grep -v "^/" | grep -v "^$"
例:
cat /opt/backup/account_t1.sql | grep -v "^--" | grep -v "^/" | grep -v "^$"

8、MySQL完全恢复

8.1恢复数据库

systemctl start mysqld #开启mysql服务#删除已备份数据库
mysql -u root -p[密码] -e 'drop database 数据库;'
#-e"选项,用于指定连接MySQL后执行的命令,命令执行完后自动退出
#查看所有的库
mysql -u root -p[密码] -e 'SHOW DATABASES;'
#将备份的数据库重定向输入到数据库中
mysql -u root -p[密码] < /备份路径/备份文件名
#查看系统中的库
mysql -u root -p[密码] -e 'SHOW DATABASES;'
#查看库中的表
mysql -u root -p[密码] -e ‘select * from 库名.表名;'

 恢复数据库

 

8.2恢复数据表 

当备份文件中只包含表的备份,而不包含创建的库的语句时,执行导入操作时必须指定库名,且目标库必须存在。

mysqldump -u root -p123123 my t1 > /opt/backup/t1.sql #备份my库中的表t1
mysql -u root -p123123 -e 'drop table my.t1;'         #删除my库中的已备份的表t1
mysql -u root -p123123 qyd < /opt/backup/t1.sql       #恢复表,讲备份的表重定向输入到qyd库中
mysql -u root -p123123 -e 'show tables from qyd;'     #查看所有qyd库中的表
mysql -u root -p123123 -e 'select * from qyd.t1;'     #查看t1表数据记录

 9、MySQL增量备份

使用mysqldump进行完全备份存在的问题

  • 备份数据中有重复数据
  • 备份时间与恢复时间过长

增量备份是自上一次备份后增加/变化的文件或者内容

特点

  • 没有重复数据,备份量不大,时间短
  • 恢复需要上次完全备份及完全备份之后所有的增量备份才 能恢复,而且要对所有增量备份进行逐个反推恢复

MySQL没有提供直接的增量备份方法 可通过MySQL提供的二进制日志间接实现增量备份

MySQL二进制日志对备份的意义

  • 二进制日志保存了所有更新或者可能更新数据库的操作
  • 二进制日志在启动MySQL服务器后开始记录,并在文件达到 max_binlog_size所设置的大小或者接收到flush logs命令后重新 创建新的日志文件
  • 只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间 段的增量备份

10、MySQL增量备份与恢复试验

MySQL增量备份

开启二进制日志功能

vim /etc/my.cnf
------------------------------------
[mysqld]
log-bin=mysql-bin
binlog_format = MIXED    #可选,指定二进制日志(binlog)的记录格式为MIXED
server-id =1
systemctl start mysqld
cd /usr/local/mysql/data
ls

 

二进制日志(binlog)有3种不同的记录格式:

  • STATEMENT(基于SQL语句)
  • Row(基于行)
  • MIXED(混合模式),默认格式是STATEMENT

 

 

 可每周对数据库或表进行完全备份

mysqldump -u root -p123123 my t1 >/opt/my_t1_$(date +%F).sql   #备份my库里的t1表
mysqldump -u root -p123123 --databases my > /opt/my_$(date +%F).sql   #备份my库

可每天进行增量备份操作,生成新的二进制日志文件 

mysqladmin -uroot -p flush-logs

再次生成新的二进制日志文件 

mysqladmin -u root -p123123 flush-logs
#之前的步骤4的数据库操作会保存到mysql-bin.000004文件中,之后数据库数据再发生变化则保存在mysql-bin.00005文件中

查看二进制日志文件的内容 

cp /usr/local/mysql/data/mysql-bin.000004 /opt/
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000004
#--base64-output=decode-rows:使用64位编码机制去解码并按行读取
#-v:显示详细内容

MySQL 增量恢复 

一般恢复

将所有备份的二进制日志内容全部恢复

use my;
delete from t1 where id=7;
delete from t1 where id=8;
mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000004 | mysql -u root -p123123
#通过二进制日志进行恢复

基于位置恢复

数据库在某一时间点可能既有错误的操作也有正确的操作 可以基于精准的位置跳过错误的操作

在数据库中插入数据并查看

insert into t1 values(7,'1212',7); #插入语句
insert into t1 values(8,'1313',8); #插入语句
mysqladmin -u root -p123123 flush-logs #刷新日志文件
mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql-bin.000006  #查看日志文件内容(新生成日志的前一个日志)

基于时间点恢复

跳过某个发生错误的时间点实现数据恢复

基于时间恢复

mysqlbinlog --no-defaults --start-datetime='2022-06-10 17:10:58' /usr/local/mysql/data/mysql-bin.000006 |mysql -uroot -p123123

相关文章:

MySQL数据库的日志管理以及备份和恢复

目录 1、日志管理 2、查询日志 3、数据备份的重要性 4、数据库备份的分类 4.1物理备份 4.2逻辑备份&#xff1a; 4.3完全备份 5、常见的备份方法 6、MySQL完全备份 6.1MySQL完全备份优缺点 6.2数据库完全备份分类 6.2.1物理冷备份与恢复 6.2.2mysqldump备份…...

Maven发布开源框架到远程仓库

1.背景 当你写了一个自我感觉良好的开源工具希望给他人分享&#xff0c;如果只是在github等网站进行公布之外&#xff0c;用户使用起来还不是很方便&#xff0c;特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库&#xff0c;这样别人使用就会方便很多。接下来…...

Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog

QWidget类 简介 QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能&#xff0c;并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口&#xff0c;从而实现复杂的用户界面。 特性 提供了窗口的基本功能&#xff0c;包括绘制、事件处理、…...

论文翻译 - Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM

论文链接&#xff1a;https://arxiv.org/pdf/2309.14348.pdf Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM Abstract1 Introduction2 Related Works3 Our Proposed Method3.1 Threat Model3.2 Our Proposed Method3.3 Practical Designs3.4 Theoret…...

Kafka总结问题

Kafka Kafka Kafka Kafka的核心概念/ 结构 topoic Topic 被称为主题&#xff0c;在 kafka 中&#xff0c;使用一个类别属性来划分消息的所属类&#xff0c;划分消息的这个类称为 topic。topic 相当于消息的分配标签&#xff0c;是一个逻辑概念。主题好比是数据库的表&#xff0…...

【RPG Maker MV 仿新仙剑 战斗场景UI (八)】

RPG Maker MV 仿新仙剑 战斗场景UI 八 状态及装备场景代码效果 状态及装备场景 本计划在战斗场景中直接制作的&#xff0c;但考虑到在战斗场景中加入太多的窗口这不太合适&#xff0c;操作也繁琐&#xff0c;因此直接使用其他场景。 代码 Pal_Window_EquipStatus.prototype.…...

【PyQt】18 -菜单等顶层操作

顶层界面的使用 前言一、菜单栏1.1 代码1.2 运行结果 二、工具栏2.1 代码几种显示方法 2.2 运行结果 三、状态栏3.1 代码3.2 运行结果 总结 前言 1、介绍顶层菜单栏目的使用&#xff0c;但没有陆续绑定槽函数。 2、工具栏 3、状态栏 一、菜单栏 1.1 代码 #Author &#xff1a…...

线性代数基础概念和在AI中的应用

基本概念 线性代数是数学的一个分支&#xff0c;专注于向量、向量空间&#xff08;也称为线性空间&#xff09;、线性变换和矩阵的研究。这些概念在数据科学、人工智能、工程学和物理学等多个领域都有广泛应用。以下是这些基本概念的详细解释和它们在数据处理和AI中的应用。 …...

elasticsearch _cat/indices docs.count is different than <index>/_count

今天遇到一个问题&#xff0c;kibana中看到文档数与下面语句查询到的不同 GET /_cat/count/jiankunking_xxxxx_product_expand_test?v GET /jiankunking_xxxxx_product_expand_test/_search?track_total_hitstrue语句查询结果 epoch timestamp count 1711433785 06:16…...

关系型数据库mysql(7)sql高级语句

目录 一.MySQL常用查询 1.按关键字&#xff08;字段&#xff09;进行升降排序 按分数排序 &#xff08;默认为升序&#xff09; 按分数升序显示 按分数降序显示 根据条件进行排序&#xff08;加上where&#xff09; 根据多个字段进行排序 ​编辑 2.用或&#xff08;or&…...

计算机网络——网络基础1

网络基础一 1.初识网络 ​ 网卡也是一种文件&#xff0c;所以对于网络的编程也是一种文件操作&#xff1b; ​ 早期由于不同的计算机之间要根据数据进行协作&#xff0c;但是计算机之间是独立的&#xff0c;所以使用了光驱或者软盘之类的进行协作&#xff1b;对于将计算机连…...

ERDUnet: An Efficient Residual Double-codingUnet for Medical Image Segmentation

ERDUnet:一种用于医学图像分割的高效残差双编码单元 摘要 医学图像分割在临床诊断中有着广泛的应用,基于卷积神经网络的分割方法已经能够达到较高的准确率。然而,提取全局上下文特征仍然很困难,而且参数太大,无法临床应用。为此,我们提出了一种新的网络结构来改进传统的…...

vue响应式基础

声明响应式状态​ ref()​ 在组合式 API 中&#xff0c;推荐使用 ref() 函数来声明响应式状态&#xff1a; import { ref } from vueconst count ref(0) ref() 接收参数&#xff0c;并将其包裹在一个带有 .value 属性的 ref 对象中返回&#xff1a; const count ref(0)c…...

每天上万简历,录取不到1%!阿里腾讯的 offer 都给了哪些人?

三月天杨柳醉春烟~正是求职好时节~ 与去年秋招的冷淡不同&#xff0c;今年春招市场放宽了许多&#xff0c;不少企业纷纷抛出橄榄枝&#xff0c;各大厂的只差把“缺人”两个字写在脸上了。 字节跳动技术方向开放数10个类型岗位&#xff0c;研发需求占比60%&#xff0c;非研发新增…...

外包干了20天,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;21年通过校招进入杭州某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了2年的功能测试…...

4核8G云服务器,阿里云要多少钱?

阿里云4核8G服务器优惠价格955元一年&#xff0c;配置为ECS通用算力型u1实例&#xff08;ecs.u1-c1m2.xlarge&#xff09;4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选&#xff0c;CPU采用Intel(R) Xeon(R) Platinum处理器&#xff0c;阿里云活动链接 aliyunfuwuq…...

数学分析复习:振荡型级数的收敛判别

文章目录 振荡型级数的收敛判别 本篇文章适合个人复习翻阅&#xff0c;不建议新手入门使用 振荡型级数的收敛判别 直观上&#xff0c;振荡型级数说的是级数各项有正有负&#xff0c;求和的时候可以相互抵消&#xff0c;故可能收敛 命题&#xff1a;Abel求和公式 设复数列 { …...

阿里CICD流水线Docker部署,将阿里镜像私仓中的镜像部署到服务器中

文章目录 阿里CICD流水线Docker部署&#xff0c;将阿里镜像私仓中的镜像部署到服务器中一、CICD流水线的初步使用可以看我之前的两篇文章二、添加部署任务&#xff0c;进行Docker部署&#xff0c;创建一个阿里的试用主机1、选择主机部署&#xff0c;并添加服务主机2、创建免费体…...

并发VS并行

参考文章 面试必考的&#xff1a;并发和并行有什么区别&#xff1f; 并发&#xff1a;一个人同时做多件事&#xff08;射击游戏队友抢装备&#xff09; 并行&#xff1a;多人同时处理同一件事&#xff08;射击游戏敌人同时射击对方&#xff09;...

C语言经典例题(8) --- 进制A+B、网购、及格分数、最高分数、计算一元二次方程

文章目录 1.进制AB2.网购3.及格分数4.最高分数5.计算一元二次方程 1.进制AB 题目描述&#xff1a; 输入一个十六进制数a&#xff0c;和一个八进制数b&#xff0c;输出ab的十进制结果&#xff08;范围-231~231-1&#xff09;。 输入描述&#xff1a; 一行&#xff0c;一个十六…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...