【MySQL 日志管理、备份与恢复】

news/2024/5/19 15:50:26/文章来源:https://blog.csdn.net/DiKL_Y/article/details/131287196

目录

  • 一、数据库备份的分类
    • 1、从物理与逻辑的角度
      • 1.1、物理备份: 对数据库操作系统的物理文件(如数据文件,日志文件等)的备份
      • 1.2、逻辑备份
    • 2、从数据库的备份策略角度
    • 3、常见的备份方法
      • 3.1、物理冷备
      • 3.2、专用备份工具mysqldump 或者 mysqlhotcopy
      • 3.3、启用二进制日志进行增量备份
      • 3.4、第三方工具备份
  • 二、MySQL 完全备份与恢复
    • 模拟实验
    • 1、MySQL 完全备份
      • 1、 物理冷备份与恢复
      • 2.mysqldump 备份与恢复
        • (1)完全备份一个或多个完整的库(包括其中所有的表)
        • (2)完全备份 MySQL 服务器中所有的库
        • (3)完全备份指定库中的部分表(不包含创建库的操作)
        • (4)查看备份文件
      • 2、MySQL 完全恢复
        • (1)恢复数据库
        • (2)恢复数据表
  • 三、MySQL 日志管理
    • 1、设置mysql的配置文件
    • 2、添加日志文件的方法
    • 3、命令实验
    • 1.一般恢复
    • 2.断点恢复
      • (1)基于位置恢复
      • (2)基于时间点恢复


一、数据库备份的分类

1、从物理与逻辑的角度

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

物理备份的方法
·冷备份(脱份)是在关闭数据库的时候进行的

·热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件

·温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作

1.2、逻辑备份

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

2、从数据库的备份策略角度

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

差异备份:只备份上一次完全备份后的更新数据文件

增量备份:每次备份只备份上一次完全备份或增量备份后的最新数据

在这里插入图片描述

3、常见的备份方法

3.1、物理冷备

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

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

3.2、专用备份工具mysqldump 或者 mysqlhotcopy

mysqldump 常用的逻辑备份工具

mysqlhotcopy 仅仅拥有备份MylSAM 和 ARCHIVE表

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

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

3.4、第三方工具备份

免费的MySQL 热备份软件 Percona XtraBackup

二、MySQL 完全备份与恢复

模拟实验

创建一个表结构

create table if not exists info1 (
id int(4) not null auto_increment,
name varchar(10) not null,
sex char(10) not null,
hobby varchar(50),
primary key (id));

1、MySQL 完全备份

创建一个表的数据

insert into dznb01 values (1,'小钱','男',25,'JAVA');insert into dznb01 values (2,'小陈','男',24,'C++');insert into dznb01 values (3,'小王','男',26,'csgo');insert into dznb01 values (4,'小州','男',23,'LOL');insert into dznb01 values (5,'小薛','男',22,'使命召唤');

在这里插入图片描述
InnoDB存储引擎的数据库在磁盘上存储成三个文件:db.opt(表属性文件)、表名.frm(表结构文件)、表名.ibd(表数据文件)。

打包备份文件数据的文件使用的tar 命令的集合

tar zcvf  归档文件   原数据文件/目录       gzipjcvf                                bzip2Jcvf                                xz
数据迁移   体量小      物理冷备    打包备份+恢复体量中等    DTS体量超大     数据魔方

1、 物理冷备份与恢复

在进行备份操作时候要先关闭mysql 服务

systemctl stop mysqld

进入mysql 目录文件里进行打包数据库的文件

cd /usr/local/mysql
ls
#查看到有一个data目录tar zcvf /opt/mysql_data-$(date +%Y%m%d).tar.gz data/
#使用tar命令直接以年月日为结尾的压缩文件名进行打包数据库的文件

在这里插入图片描述

打包后可以使用以下命令进行查看

tar xf 压缩包

在这里插入图片描述

以迁移的方式进行数据库的恢复

用另一台主机进行迁移操作,在新的主机上没有需要的数据库
在这里插入图片描述

使用源主机使用scp 命令进行迁移压缩文件操作
在这里插入图片描述

使用另一台主机查看有没有收到迁移的压缩文件
在这里插入图片描述

在进行解压恢复之前要先将主机的mysql服务关闭
在这里插入图片描述

进入迁移的主机里的数据库,查看迁移的数据有没有传过来
在这里插入图片描述

2.mysqldump 备份与恢复

mysqldump 命令对单个库进行完全备份

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

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

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

创键一个存放备份文件的目录
在这里插入图片描述

在指定路径的后面写入dznb.sql 文件名存放数据库

mysqldump -uroot -pabc123 --databases dznb > /opt/backup/dznb.sql

在这里插入图片描述

进入dznb.sql文件里查看备份的文件
在这里插入图片描述

(2)完全备份 MySQL 服务器中所有的库

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

例如:

mysqldump -uroot -pabc123 --all-databases > /opt/backup/all-mysql.sql

备份所有库的文件
在这里插入图片描述

(3)完全备份指定库中的部分表(不包含创建库的操作)

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

例如:

mysqldump -uroot -p[-d]abc123 dznb dznb01 >/opt/backup/dznb_dznb01.sql
#使用“-d”选项,说明只保存数据库的表结构
#不使用“-d”选项,说明表数据也进行备份

在这里插入图片描述

(4)查看备份文件

grep -v "^--" /opt/backup/dznb_dznb01.sql | grep -v "^/" | grep -v "^$"

在这里插入图片描述

2、MySQL 完全恢复

使用mysqldump 到出的脚本,可以使用的导入方法

source 命令mysql 命令

使用source 命令来进行恢复数据库的步骤

登录到mysql数据库执行source备份sql脚本的路径

进行恢复之前要先开启mysql服务

systemctl start mysqld

(1)恢复数据库

#“-e”选项,用于指定连接 MySQL 后执行的命令,命令执行完后自动退出

mysql -uroot -pabc123 -e "show databases;"

在不进入数据库查看拥有的数据库
在这里插入图片描述

在不进入数据库查看所对应的表

mysql -uroot -pabc123 -e "show tables from dznb;"

在这里插入图片描述

不进入数据库查看表的数据内容

mysql -uroot -pabc123 -e "select * from dznb.dznb01;"

在这里插入图片描述

使用source命令来进行模拟

在这里插入图片描述

恢复完后进行查看有没有设置成功

在这里插入图片描述

使用表数据恢复的话不介意用什么库

在这里插入图片描述

使用source 命令进行恢复数据库的数据

source /opt/backup/dznb.sql

在这里插入图片描述

使用mysql 命令 从定向输入的方式也能进行恢复数据库

mysql -uroot -pabc123 < /opt/backup/dznb.sql 

在这里插入图片描述

(2)恢复数据表

在opt 目录里有个backup目录 里面备份一个表的文件,后面就可以使用该路径来进行恢复表内容

mysqldump -u root -p 库名 表名 > /opt/创建备份的名字.sql

在这里插入图片描述

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

mysqldump -u root -pabc123 dznb dznb01 > /opt/backup/dznb_dznb01.sql

在这里插入图片描述

三、MySQL 日志管理

1、设置mysql的配置文件

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=5												#设置超过5秒执行的语句被记录,缺省时为10

在这里插入图片描述

查看通用查询日志是否开启

show variables like 'general%';	

在这里插入图片描述

查看二进制日志是否开启

show variables like 'log_bin%';

在这里插入图片描述

查看慢查询日功能是否开启

show variables like '%slow%';

在这里插入图片描述

查看慢查询时间设置

show variables like 'long_query_time';

在这里插入图片描述

2、添加日志文件的方法

进入mysql 的data目录里可以看见以下的几个日志的文件

mysql-bin.000001 #二进制查询文件
mysql-bin.index  #记录二进制日志的序列号
mysql_error.log  #错误日志
mysql_general.log  #通用查询日志

在这里插入图片描述

生成二进制文件的方法

重新启动mysql服务后就可以自动生成一个二进制文件

在这里插入图片描述

进入这个文件里可以看见二进制文件的序号,最底下的就是最新的二进制文件

vim mysql-bin.index

在这里插入图片描述

查看二进制日志文件

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

在这里插入图片描述

刷新二进制日志

mysqladmin -uXXX -pXXX flush-logs

在这里插入图片描述

3、命令实验

在这里插入图片描述

创建一个存放完成备份的目录文件位置,在创建一个存放增量备份的目录文件位置

在这里插入图片描述

1.一般恢复

设置一个完成备份,在设置一个增量备份,使用备份文件时要先进行刷新操作,给二进制文件备份的时候要备份刷新前的一个文件,因为刷新后的文件是空文件

mysqladmin -uroot -pabc123 flush-logs

在这里插入图片描述

进行恢复实验

在这里插入图片描述

备份的第一天数据
在这里插入图片描述

恢复第二天备份的数据

#指定第二天的增量备份二进制文件
mysqlbinlog --no-defaults mysql-bin-20230621 | mysql -uroot -pabc123

在这里插入图片描述

恢复第三天的增量文件
在这里插入图片描述

2.断点恢复

将备份的二进制文件输出到指定的文件中,进去查看可以看见用户信息

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin-20230622 > mysql-bin-20230622.txt

在这里插入图片描述

例:
# at 300
#230620 15:04:15
插入了“猪”的用户数据# at 596
#230620 15:04:28
插入了“小钱”的用户数据

(1)基于位置恢复

#仅恢复到操作 ID 为“596”之后的数据,即不恢复“猪”的数据
在这里插入图片描述
在这里插入图片描述

仅恢复“猪”的数据,跳过“小钱”的数据恢复

mysqlbinlog --no-defaults --stop-position='596'  mysql-bin-20230622 |mysql -uroot -pabc123

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

(2)基于时间点恢复

在这里插入图片描述

仅恢复到 15:04:28 之前的数据,即不恢复“小钱用户”的数据

在这里插入图片描述

在这里插入图片描述

仅恢复“小钱”的数据,跳过“猪”的数据恢复

mysqlbinlog --no-defaults --start-datetime='2023-06-20 15:04:28'  mysql-bin-20230622 |mysql -uroot -pabc123

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Channel的一些业务场景

使用Channel的一些业务场景 首先需要明确的就是&#xff0c;发送方才知道什么时候关闭 channel &#xff0c;这个是比较符合逻辑的。 我们需要知道哪些情况会使 channel 发生 panic 关闭一个 nil 值会引发关闭一个已经关闭的 channel 会引发向一个已经关闭的 channel 发送数据…

破圈丨2023年绿色积分消费返利:云联惠3.0升级版【循环购】商业模式

破圈丨2023年绿色积分消费返利&#xff1a;云联惠3.0升级版【循环购】商业模式 京东供应链商品/自营商品/供应商商品 平台上面产品超过300w款产品&#xff0c;均为京东供应链货品&#xff0c;由京东统一仓储和配送&#xff0c;从源头上面杜绝假冒伪劣产品的存在&#xff0c;然…

three.js中通过gsap动画库实现物体的动画

一、什么是gsap GSAP&#xff08;GreenSock Animation Platform&#xff09;是一个JavaScript动画库&#xff0c;由GreenSock公司开发&#xff0c;用于在Web应用程序中创建高性能动画。 使用GSAP可以通过一些简单的动画操作来实现复杂的动画效果&#xff0c;例如TweenLite、T…

【百套源码】HTML5期末大作业 - 各类网页作业源码合集

文章目录 持续更新文章记录1️⃣ 个人介绍类相关源码1.1 html实现个人简历1.2 科技风个人简历1.3 网站风个人简历1.4 多种风格个人主页模板1.5 html好看的个人简历明星版1.6 专属个人主页-系列11.7 专属个人主页-系列21.8 专属个人主页-系列31.9 专属个人主页-系列41.10 专属个…

【Red Hat7.9安装Oracle11g--调用图形化界面的几种方式】

【Red Hat7.9安装Oracle11g--调用图形化界面的几种方式】 &#x1f53b; 一、续上一篇[【Red Hat 7.9---详细安装Oracle 11g---图形化界面方式】](https://blog.csdn.net/qq_41840843/article/details/131198718?spm1001.2014.3001.5501)⛳ 1.1 前言⛳ 1.2 方式一、使用Xmanag…

AI绘图软件分享:Midjourney 基础教程(二)

大家好&#xff0c;我是权知星球&#xff0c;今天继续给大家介绍AI绘图软件分享&#xff1a;Midjourney 基础教程&#xff08;二&#xff09; ⼀、Midjourney 服务器介绍 1.Discord 软件介绍 Midjourney AI 绘画服务基于 Discord 软件的&#xff0c;它的绘画功能&#xff0c;…

Linux0.11内核源码解析-file_dev.c

目录 功能描述 int file_read(struct m_inode * inode, struct file * filp, char * buf, int count) int file_write(struct m_inode * inode, struct file * filp, char * buf, int count) 功能描述 该文件主要是由两个函数file_read()和file_write()组成&#xff0c;提供…

「已解决」已有Umi Antd 环境下安装 formily v2 依赖报错问题

背景 在一个项目中想引入 formily v2 试一下这个针对复杂表单的解决方案&#xff0c;结果发现安装后报错&#xff0c;目前已有的第三方库大致为 “ant-design/icons”: “^5.0.1”, “ant-design/pro-components”: “^2.4.4”, “umijs/max”: “^4.0.68”, “ahooks”: “^3…

一个好看美观的登录注册界面的实现

序言&#xff1a;之前介绍那个博客&#xff0c;然后自己搞了这个界面。最近有人和我要&#xff0c;把代码给大家贴出来&#xff0c;提供参考。 首先是这个界面哈 <!DOCTYPE html> <html lang"en"> <head><script src"../static/lib/jquer…

Kubernetes初认识

一、Kubernetes初认识 1.k8s的特性 弹性伸缩&#xff1a;使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例&#xff0c;保证应用业务高峰并发时的高可用性&#xff1b;业务低峰时回收资源&#xff0c;以最小成本运行服务。 自我修复&#xff1a;在节点故障时重…

OpenMMLab-AI实战营第二期——5-2. MMSegmentation代码课

文章目录 1. 自定义数据集1.0 整理数据集为特定格式1.1 持久化运行&#xff08;用文件定义&#xff09;1.2 运行时生效&#xff08;直接运行时定义一个class&#xff09;1.3 注意事项 2. 配置文件3. 运行训练和测试X. 其他语义分割数据集 视频链接&#xff1a;MMSegmentation代…

AI大模型迈入应用时代,每日互动推动“可控大模型”落地

垂直行业更需要可控大模型 当下&#xff0c;大模型正在不断精进&#xff0c;以GPT-4、文心一言为代表的大模型&#xff08;LLM&#xff09;表现出了强大的逻辑推理能力&#xff0c;并能够很好地处理复杂任务&#xff0c;使得社会生产力得到了飞跃式提升。 面对大模型热度的持…

同时安装vue-cli2和vue-cli3

同时安装vue-cli2和vue-cli3 发布时间环境安装后的效果安装vue-cli2安装vue-cli3vue-cli3和vue-cli2的区别vue-cli2目录结构vue-cli3目录结构 发布时间 vue版本发布时间Seed.js2013年vue最早版本最初命名为Seedvue-js 0.62013年12月更名为vuevue-js 0.82014年1月对外发布vue-j…

locust学习教程(3)- 编写locust脚本

前言 一句话总结&#xff1a;并发的用户执行了第一类测试任务、第二类测试任务&#xff0c;设置所有类的测试前置、测试后置&#xff0c;设置每一类测试任务的测试前置&#xff0c;测试后置。 1、概念 1.1、一个完整的脚本示例 from locust import task, HttpUser, constant…

抽象类和接口—javaSE

这里写目录标题 1.抽象类1.1概念1.2语法1.3特性1.4使用 2.接口2.1概念2.2语法2.3特性2.4重要的接口2.4.1给数组对象排序&#xff08;Comparable、Comparator&#xff09;2.4.2 Cloneable&#xff08;浅拷贝&#xff09; 2.5抽象类和接口的区别 3.object类3.1定义3.2equals3.3获…

千万不要跟随这 4 种领导!

​ 见字如面&#xff0c;我是军哥&#xff01; 最近有程序员读者问我&#xff0c;什么样的领导不能跟随&#xff1f;都有哪些坑&#xff01;这个我擅长哈&#xff0c;毕竟职场混迹 15 年&#xff5e; 第一种&#xff0c;技术能力不行还喜欢指手画脚的领导。 第二种&#xff0c;…

Linux基础(一)—— 什么是Linux系统?和Windows区别在哪?常见的安装方式【新星计划Linux】

#2023 博客之星–城市之星领跑者活动开启# 文章目录 01 | Linux的特点02 | Linux 和 Windows03 | Linux的种类04 | Linux的安装方式 Linux 是一种自由和开放源代码的 Unix 操作系统&#xff0c;其内核是由林纳斯托瓦兹在1991年开始编写。Linux 操作系统采用了 GNU 项目的许多组…

最喜爱的编程语言——Python

一、编程语言发展 编程语言&#xff08;programming language&#xff09;可以简单的理解为一种计算机和人都能识别的语言。一种能够让程序员准确地定义计算机所需数据的计算机语言&#xff0c;并精确地定义在不同情况下所应当采取的行动。 编程语言处在不断的发展和变化中&…

世界名酒商城元宇宙 中国4大“惨败酒

大家平时买白酒都怎么选择呢&#xff1f;一般都选择平时广告做得多&#xff0c;耳熟能详的大品牌&#xff0c;或者是直接听导购的买酒&#xff0c;毕竟那么贵的价格酒不可能不好&#xff0c;实际上这种买酒方式虽然不能说错吧&#xff0c;但是极容易错过很多好酒。 白酒市场上就…

Arthas线上故障案例分析——内存使用率上升,负载突然变高

使用经验分享 线上故障排查思路&#xff1a; 1、紧急处理&#xff0c;优先保障服务可用&#xff08;如切换vip&#xff0c;主备容灾&#xff09; 2、保留第一现场&#xff0c;通过jstack -l {pid} > jvmtmp.txt &#xff0c;打印栈信息 &#xff08;后续可以在gceasy官网上…