Mysql备份恢复、与日志管理

news2024/12/23 16:18:30

Mysql日志管理、备份与恢复

  • 一、Mysql日志管理
    • 1.1、日志分类
      • 1.1.1、错误日志
      • 1.1.2 、通用查询日志
      • 1.1.3、 二进制日志
      • 1.1.4 、慢查询日志
      • 1.1.5 、配置日志
    • 1.2、日志的查询
  • 二、备份与恢复
    • 2.1、 数据备份的必要性
    • 2.2 、造成数据丢失的原因
    • 2.3、 数据库备份的分类
      • 2.3.1、 物理备份
      • 2.3.2、 逻辑备份
    • 2.4、数据库的备份策略
    • 2.5 、MySQL 完全备份
      • 2.5.1、 物理冷备份与恢复
      • 2.5.2、 专用备份工具
      • 2.5.3、 MySQL 完全备份(使用免交互)
      • 2.5.4 、MySQL 增量备份与恢复
      • 2.5.5、 MySQL 增量恢复

一、Mysql日志管理

MySQL 的日志默认保存位置 /usr/local/mysql/data
在这里插入图片描述

1.1、日志分类

  • 事务日志:transaction log
    事务日志的写入类型为"追加",因此其操作为"顺序IO";通常也被称为:预写式日志 write ahead logging事务日志文件: ib_logfile0, ib_logfile1

  • 错误日志 error log

  • 通用日志 general log

  • 慢查询日志 slow query log

  • 二进制日志 binary log

  • 中继日志 reley log,在主从复制架构中,从服务器用于保存从主服务器的二进制日志中读取的事件

1.1.1、错误日志

用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
vim /etc/my.cnf
log-error=/usr/local/mysql/data/mysql_error.log	

1.1.2 、通用查询日志

用来记录MySQL的所有连接和语句,默认是关闭的
vim /etc/my.cnf
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log

1.1.3、 二进制日志

用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启
vim /etc/my.cnf
#也可以 log_bin=mysql-bin
log-bin=mysql-bin				

1.1.4 、慢查询日志

用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的
vim /etc/my.cnf
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5	

1.1.5 、配置日志

1. #修改my.cnf配置文件
 
#错误日志
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	
#慢查询日志
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5
 
2. #重新mysql服务
systemctl restart mysqld.service

修改配置文件
在这里插入图片描述
重启服务
在这里插入图片描述

1.2、日志的查询

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

在这里插入图片描述
在这里插入图片描述

二、备份与恢复

2.1、 数据备份的必要性

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

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

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

2.2 、造成数据丢失的原因

  • 程序错误

  • 人为操作错误.

  • 运算错误

  • 磁盘故障

  • 灾难(如火灾、地震)和盗窃

2.3、 数据库备份的分类

2.3.1、 物理备份

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

物理备份的方法 :

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

2.3.2、 逻辑备份

对数据库的表或者对象进行备份。

2.4、数据库的备份策略

  • 完全备份:整个数据集,每次都备份完整的数据库。

  • 差异备份:仅备份最近一次完全备份后变化的数据,备份较慢,还原简单

  • 增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂

1)完全备份:每次对数据库进行完整的备份

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

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

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

优点:备份与恢复操作简单方便 缺点:数据存在大量的重复、占用大量的备份空间及备份与恢复时间长 

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

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

2.5 、MySQL 完全备份

InnoDB存储引擎的数据库在磁盘上存储成三个文件:

  • db.opt(表属性文件)

  • 表名.frm(表结构文件)

  • 表名.ibd(表数据文件)

2.5.1、 物理冷备份与恢复

  • 备份时数据库处于关闭状态,直接打包数据库文件

  • 备份速度快,恢复时也是最简单的

1. #关闭mysql,备份data目录
systemctl stop mysqld
yum -y install xz
cd /usr/local/mysql
 
#压缩备份data目录
tar Jcvf /opt/mysql_all_$(date +%F).tar.xz data/
 
2. #登录mysql,删除NBA库 
systemctl start mysqld.service 
mysql -u root -p123123
 
 
3. #解压之前备份的数据库data目录,不用删除原目录,会自动替换
cd /opt
ls
cd /usr/local/mysql
tar Jxvf /opt/mysql_all_2021-11-28.tar.xz -C ./
 
4. #重启服务查看被删除的库 

创建库,在库里面创建表
在这里插入图片描述
关闭mysql,备份data目录
在这里插入图片描述
在这里插入图片描述
登录mysql,删除NBA库
在这里插入图片描述
解压之前备份的数据库data目录,不用删除原目录,会自动替换
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5.2、 专用备份工具

  • mysqldump常用的逻辑备份工具

  • mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表

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

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

例子:备份单个和多个库

mysqldump -uroot -p --databases NBA > /opt/mysql_bak/nba.sql
mysqldump -uroot -p --databases  NBA info1 > /opt/mysql_bak/nba_info1.sql

在这里插入图片描述
完全备份 MySQL 服务器中所有的库

mysqldump -u root -p[密码] --all-databases > /备份路径/备份文件名.sql

例子:备份所有库

mysqldump -uroot -p --all-databases > /opt/mysql_bak/all.sql

在这里插入图片描述
完全备份指定库中的部分表

mysqldump -u root -p[密码] 库名 [表名1] [表名2]> /备份路径/备份文件名.sql

例子: 备份NBA库中的两个表

mysqldump -uroot -p NBA  [-d]  info1 info2 > /opt/mysql_bak/school_info1_info2.sql
  • 使用“-d”选项,说明只保存数据库的表结构

  • 不使用“-d”选项,说明表数据也进行备份

在这里插入图片描述
查看备份文件

 cat school_info1_info2.sql |grep -v '^/'|grep -v '^$'|grep -v '^-'

在这里插入图片描述

2.5.3、 MySQL 完全备份(使用免交互)

systemctl start mysqld
mysql -u root -p -e 'drop database NBA;
#“-e”选项,用于指定连接 MySQL 后执行的命令,命令执行完后自动退出
mysql -u root -p -e 'show databases;'
 
#恢复school数据库
mysql -u root -p < /opt/mysql_bak/school.sql		
mysql -u root -p -e 'show databases;'

在这里插入图片描述恢复数据表

当备份文件中只包含表的备份,而不包含创建的库的语句时,执行导入操作时必须指定库名,且目标库必须存在。
mysqldump -uroot -p school  info1 info2 > /opt/mysql_bak/school_info1_info2.sql
 
1. #删除school中的info1表 
mysql -u root -p -e 'drop table NBA.lilade;'
mysql -u root -p -e 'show tables from school;'
 
2. #恢复school库中的表 
mysql -u root -p NBA < /opt/mysql_bak/school_info1_info2.sql 
mysql -u root -p -e 'show tables from NBA;'

删除NBAl中的info表
在这里插入图片描述
恢复NBA库中的表
在这里插入图片描述

2.5.4 、MySQL 增量备份与恢复

vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
#指定二进制日志(binlog)的记录格式为 MIXED
binlog_format = MIXED				
server-id = 1

在这里插入图片描述
二进制日志(binlog)有3种不同的记录格式:

  • STATEMENT(基于SQL语句)

  • ROW(基于行)

  • MIXED(混合模式),默认格式是STATEMENT

#只要重启就会自动生成二进制文件
systemctl start mysqld
ls -l /usr/local/mysql/data/mysql-bin.*

在这里插入图片描述
可每天进行增量备份操作,生成新的二进制日志文件(例如 mysql-bin.000002)

mysqladmin -u root -p flush-logs

在这里插入图片描述
插入新数据,以模拟数据的增加或变更

insert into  NBA.info  values (6, 'cj', 33, '男', '打篮球');
insert into  NBA.info  values (7, 'lu', 33, '男', '打篮球');

在这里插入图片描述
再次生成新的二进制日志文件(例如 mysql-bin.000007 )

mysqladmin -u root -p flush-logs

在这里插入图片描述
查看二进制日志文件的内容

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

在这里插入图片描述

2.5.5、 MySQL 增量恢复

1.一般恢复

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

模拟丢失更改的数据的恢复步骤

use nba;
delete from info where id=6;
delete from info where id=7;
 
mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000007 | mysql -u root -p

删除数据
在这里插入图片描述
通过二进制日志进行恢复
在这里插入图片描述
在这里插入图片描述
模拟丢失所有数据的恢复步骤

use NBA;
drop table info;
 
mysql -u root -p NBA < /opt/mysql_bak/NBA_info_info2.sql
mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000007 | mysql -u root -p

删除school库中的info1表
在这里插入图片描述
在这里插入图片描述

先回复整表,然后在恢复二进制日志文件
在这里插入图片描述
基于位置恢复

  • 数据库在某一时间点可能既有错误的操作也有正确的操作

  • 可以基于精准的位置跳过错误的操作

  • 发生错误节点之前的一个节点,上一次正确操作的位置点停止
    在这里插入图片描述

# 刷新生成新的二进制日志文件
mysqladmin -u root -p flush-logs 	
# 进入到data目录
cd /usr/local/mysql/data	
#查看二进制日志文件
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000012

在这里插入图片描述
在数据库中插入数据并查看

use school
insert into info values(8,'小斌','男','唱歌');
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.0000008	
# at 1207										#断点
#211130  9:28:59 								#时间
insert into info values(8,'小斌','男','唱歌')     #插入的数据
insert into info values(8,'小斌','男','唱歌')

在这里插入图片描述
在这里插入图片描述
再插入一条数据

use school
insert into info values(9,'晴','女','画画');
 
# at 22236
#211130 10:36:38
insert into info values(9,'晴','女','画画')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试恢复到ID为609之前的数据, 不恢复“后面一条”的数据

删除数据之前必须先刷新一下日志文件
mysqladmin -u root -p flush-logs 

在这里插入图片描述
对数据进行恢复

mysqlbinlog --no-defaults --stop-position='22236' mysql-bin.000012 | mysql -u root -p

在这里插入图片描述
仅恢复“最后一条”的数据,跳过“前面多条”的数据恢复

删除表中所有数据

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

测试恢复到ID为609之前的数据, 不恢复“后面一条”的数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
仅恢复“最后一条”的数据,跳过“前面多条”的数据恢复

在这里插入图片描述

mysqlbinlog --no-defaults --start-datetime='2021-11-30 10:36:38' /usr/local/mysql/data/mysql-bin.000012 |mysql -uroot -p123123

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

在嵌入式设计中添加双向I2C数字隔离

嵌入式开发工程师曾使用光电耦合器进行I2C隔离。这些电路有些复杂&#xff0c;对总线电容敏感&#xff0c;并且速度有限。它们也与具有标准CMOS输入电平的高速数字隔离器不兼容。 该嵌入式开发工程师思想展示了如何将标准的高速数字隔离器转换为双向I2C隔离器。除了与数字隔离…

visual studio的安装

visual studio是一款很不错的c语言编译器 下载地址&#xff1a;官网 点击后跳转到以下界面 下滑后点击下载Vasual Sutdio&#xff0c;选择社区版即可 选择位置存放下载文件后&#xff0c;即可开始安装 安装时会稍微等一小会儿。然后会弹出这个窗口&#xff0c;我们选择安装位…

Mycat管理及监控

Mycat管理 -h 是你自己的ip地址 相关命令及含义 Mycat-eye(图形化界面监控) 仅限于Linux系统

2023年【北京市安全员-C3证】考试技巧及北京市安全员-C3证模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年北京市安全员-C3证考试技巧为正在备考北京市安全员-C3证操作证的学员准备的理论考试专题&#xff0c;每个月更新的北京市安全员-C3证模拟试题祝您顺利通过北京市安全员-C3证考试。 1、【多选题】下面属于违章作…

小程序中Echarts实现隐藏x轴,y轴,刻度线,网格

参考了大佬的链接 首次在小程序中使用echarts踩了一些小坑做个记录&#xff0c;希望可以帮到同样踩坑的同学 这里以柱状图作为例子&#xff0c;扁扁的柱状图什么线都没有了 xAxis: {show:false, // 不显示坐标轴线、坐标轴刻度线和坐标轴上的文字axisTick:{show:false // 不显…

css实现渐变电量效果柱状图

我们通常的做法就是用echarts来实现 比如 echarts象形柱图实现电量效果柱状图 接着我们实现进阶版&#xff0c;增加渐变效果 echarts分割柱形图实现渐变电量效果柱状图 接着是又在渐变的基础上&#xff0c;增加了背景色块的填充 echarts实现渐变电量效果柱状图 其实思路是一…

如何使用ArcGIS Pro直接获取道路中心线

以前使用ArcGIS获取道路中心线&#xff0c;需要先将面要素转换为栅格再获取中心线&#xff0c;现在我们可以通过ArcGIS Pro直接获取道路中心线&#xff0c;这里为大家介绍一下获取方法&#xff0c;希望能对你有所帮助。 新建地理数据库 在存储数据的文件夹上点击右键&#xff…

基础运维(一)YUM仓库

一 自定义YUM仓库 1 Yum仓库特点 作为yum源需要准备的内容 大量的rpm 软件安装包文件针对这些软件包的 repodata/ 仓库档案 repodata/ 仓库档案数据 filelists.xml.gz // 软件包的文件安装清单primary.xml.gz // 软件包的基本/主要信息other.xml.gz // 软件包…

ROS2 从头开始:第 08/8回 - 使用 ROS2 生命周期节点简化机器人软件组件管理

一、说明 欢迎来到我在 ROS2 上的系列的第八部分。对于那些可能不熟悉该系列的人,我已经涵盖了一系列主题,包括 ROS2 简介、如何创建发布者和订阅者、自定义消息和服务创建、

44.java教程

目录 一、Java 教程。 &#xff08;1&#xff09;我的第一个 JAVA 程序。 &#xff08;2&#xff09;Java 简介。 &#xff08;2.1&#xff09;java简介。 &#xff08;2.2&#xff09;主要特性。 &#xff08;2.3&#xff09;发展历史。 &#xff08;2.4&#xff09;J…

Tomcat9 AJP 任意文件读取和文件包含漏洞(CVE-2020-1938)

Tomcat9 AJP 任意文件读取和文件包含漏洞&#xff08;CVE-2020-1938&#xff09; 文章目录 Tomcat9 AJP 任意文件读取和文件包含漏洞&#xff08;CVE-2020-1938&#xff09;1 在线漏洞解读:2 环境搭建2.1 修改端口80892.2 环境启动&#xff1a; 3 漏洞复现 1 在线漏洞解读: ht…

web服务基础

前言&#xff1a;web服务怎么做&#xff0c;怎样使用&#xff0c;这是一个长期的任务 1、DNS解析原理 在windows 客户端查看本地缓存的DNS解析记录 C:\Users\86157>ipconfig /displaydns #其中这两个字符之间会有空格 在windows11 中的命令行运行结果如下 清除win客户端…

LeetCode力扣09:回文数

回文数 代码实现 代码1是使用将整形数字倒置来进行对比&#xff0c;最后得出答案 class Solution(object):def isPalindrome(self, x):""":type x: int:rtype: bool"""if x<0:return Falseres0oldxwhile x:ax%10resres*10ax//10return reso…

K8S入门前奏之VMware虚拟机网络配置

为了能在本地搭建 K8S 的运行服务器&#xff0c;在个人电脑上安装了虚拟机VMware16版本&#xff0c;并且在阿里巴巴开源镜像站下载了CentOS-7操作系统&#xff1a;阿里巴巴开源镜像站 做完一些列准备工作后&#xff0c;在虚拟机安装完CentOS-7操作系统后&#xff0c;需要对VMw…

数据结构题型10-链栈

//参考博客&#xff1a;https://blog.csdn.net/weixin_37716512/article/details/104068102 #include <iostream> //引入头文件 using namespace std;typedef int Elemtype;#define Maxsize 10 #define ERROR 0 #define OK 1typedef struct Linknode {Elemtype data;…

jar包在linux服务器已经运行好,但是访问不到地址

jar包在linux服务器已经运行好&#xff0c;但是访问不到地址 1.将jar包已经上传到linux服务器&#xff0c;并且已经启动 2.但是在本地访问的时候&#xff0c;访问不到,云服务的的安全组策略也开放了相对应的端口。 3.解决方案 修改防火墙开放的接口 iptables -I INPUT -p t…

监控与运维,主流it运维监控工具

IT监管和运行维护已成为企业经营的关键环节。本文将详细介绍IT监管和运行维护的必要性、主要功能和实施策略&#xff0c;帮助企业实现数据安全和高效运行。 IT监管和运行维护的必要性 确保企业数据安全 IT监控系统可以实时监控企业网络、服务器、存储等关键设备的运行情况&…

[架构之路-222]:邮件服务与协议:POS3和SMTP

目录 网络架构&#xff1a; 联系&#xff1a; 区别&#xff1a; 网络架构&#xff1a; SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;和 POP3&#xff08;Post Office Protocol version 3&#xff09;是用于电子邮件传输和接收的两种不同的协议。它们在不同的…

两大电商为苹果作证,iPhone15销量倍增,销量遥遥领先并非虚言

苹果的零售店再次出现排队抢购iPhone15的现象&#xff0c;显示出iPhone15的受欢迎程度&#xff0c;不过也有人质疑排队现象&#xff0c;不过日前两大电商则为苹果提供了证明&#xff0c;显示出iPhone15的销售情况确实相当火爆。 某外卖平台的电商业务公布的数据指北上广深杭五大…

从零实现邮件中继服务

背景目的验证准备前提前置过程网络约束节点信息账号信息 具体验证过程转发测试相关问题 背景 在当前现场环境中&#xff0c;我们面临着一个重要的问题。我们的系统部署在一个内网环境中&#xff0c;邮件告警模块需要连接公网的邮件服务器以便发送邮件来及时通知我们关键事件和…