mysql数据库备份和恢复和日志管理

news2024/11/25 14:33:51

数据库备份和恢复和日志管理

  • 一:数据库备份备份和恢复
    • 1.备份分类
      • 从物理与逻辑的角度,备份可分为
      • 从数据库的备份策略角度,备份可分为
    • 2.常见的备份方法
    • 3.MySQL完全备份和恢复
      • 分类
        • 一:物理冷备份与恢复
          • 关闭MySQL数据库
          • 使用tar命令直接打包数据库文件夹
          • 直接替换现有MySQL目录即可
        • 二:mysqldump备份与恢复
          • 备份
          • 恢复
    • 4.MySQL 增量备份与恢复
  • 二:日志管理

一:数据库备份备份和恢复

数据备份的重要性

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

造成数据丢失的原因

  • 程序错误
  • 人为操作错误
  • 运算错误
  • 磁盘故障
  • 灾难 (如火灾、地震)和盗窃
    在这里插入图片描述

1.备份分类

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

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

  • 1.冷备份 (脱机备份) :是在关闭数据库的时候进行的

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

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

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

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

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

2.常见的备份方法

  • 物理冷备
    备份时数据库处于关闭状态,直接打包数据库文件
    备份速度快,恢复时也是最简单的
  • 专用备份工具mysqldump或mysqlhotcopy
    mysqldump常用的逻辑备份工具
    mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表
  • 启用二进制日志进行增量备份
    进行增量备份,需要刷新二进制日志
  • 第三方工具备份
    免费的MySQL热备份软件Percona ,XtraBackup

3.MySQL完全备份和恢复

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

是对整个数据库、数据库结构和文件结构的备份
保存的是备份完成时刻的数据库
是差异备份与增量备份的基础

分类

一:物理冷备份与恢复

关闭MySQL数据库

在这里插入图片描述

使用tar命令直接打包数据库文件夹

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

直接替换现有MySQL目录即可

在这里插入图片描述

二:mysqldump备份与恢复

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

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

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

例:
mysqldump -u root -p --databases kfc > /opt/kfc.sql
mysqldump -u root -p --databases mysql kfc > /opt/mysql-kfc.sql

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

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

例:
mysqldump -u root -p --all-databases > /opt/backup/all.sql
在这里插入图片描述

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

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

例:

mysqldump -u root -p [-d] kfc info1 info2 > /opt/kfc_info1.sql

#使用“-d”选项,说明只保存数据库的表结构
#不使用“-d”选项,说明表数据也进行备份

(4)查看备份文件

grep -v "^--" /opt/kfc_info1.sql | grep -v "^/" | grep -v "^$"
恢复
systemctl start mysqld

(1)恢复数据库

mysql -u root -p -e 'drop database kfc;'

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

mysql -u root -p -e 'SHOW DATABASES;'
mysql -u root -p < /opt/kfc.sql
mysql -u root -p -e 'SHOW DATABASES;'

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

mysqldump -u root -p kfc info1 > /opt/kgc_info1.sql

mysql -u root -p -e 'drop table kfc.info1;'
mysql -u root -p -e 'show tables from kfc;'

mysql -u root -p kfc < /opt/kfc_info1.sql
mysql -u root -p -e 'show tables from kfc;'

4.MySQL 增量备份与恢复

----MySQL 增量备份----
1.开启二进制日志功能

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

#二进制日志(binlog)有3种不同的记录格式:STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式),默认格式是STATEMENT

systemctl start mysqld
ls -l /usr/local/mysql/data/mysql-bin.*

在这里插入图片描述

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

mysqldump -u root -p密码 kfc info1 > /opt/kfc_info1_$(date +%F).sql
mysqldump -u root -p密码 --databases kfc > /opt/kfc_$(date +%F).sql

在这里插入图片描述

3.可每天进行增量备份操作,生成新的二进制日志文件(例如 mysql-bin.000002)

mysqladmin -u root -p flush-logs

在这里插入图片描述

4.插入新数据,以模拟数据的增加或变更

use kfc;
insert into info1 values(3,'user3','male','game');
insert into info1 values(4,'user4','female','reading');

在这里插入图片描述

5.再次生成新的二进制日志文件(例如 mysql-bin.000003)

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

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

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

在这里插入图片描述

----MySQL 增量恢复----
1.一般恢复
(1)模拟丢失更改的数据的恢复步骤

use kfc;
delete from info1 where id=3;
delete from info1 where id=4;

在这里插入图片描述

mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p

(2)模拟丢失所有数据的恢复步骤

use kfc;
drop table info1;

mysql -u root -p kfc < /opt/kfc_info1_2020-11-22.sql
mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p

2.断点恢复

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002

在这里插入图片描述

例:
#at 302
#201122 16:41:16
插入了“user3”的用户数据

#at 623
#201122 16:41:24
插入了“user4”的用户数据

(1)基于位置恢复
#仅恢复到操作 ID 为“623”之前的数据,即不恢复“user4”的数据

mysqlbinlog --no-defaults --stop-position='623' /opt/mysql-bin.000002 | mysql -uroot -p

#仅恢复“user4”的数据,跳过“user3”的数据恢复

mysqlbinlog --no-defaults --start-position='623' /opt/mysql-bin.000002 | mysql -uroot -p

(2)基于时间点恢复
#仅恢复到 16∶41∶24 之前的数据,即不恢复“user4”的数据

mysqlbinlog --no-defaults --stop-datetime='2020-11-22 16:41:24' /opt/mysql-bin.000002 |mysql -uroot -p

#仅恢复“user4”的数据,跳过“user3”的数据恢复

mysqlbinlog --no-defaults --start-datetime='2020-11-22 16:41:24' /opt/mysql-bin.000002 |mysql -uroot -p

如果恢复某条SQL语句之前的所有数据,就stop在这个语句的位置节点或者时间点
如果恢复某条SQL语句以及之后的所有数据,就从这个语句的位置节点或者时间点start

二:日志管理

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秒

在这里插入图片描述

systemctl restart mysqld

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;				#在数据库中设置开启慢查询的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
生成的日志文件
在这里插入图片描述

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

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

相关文章

DJ5-1 链路层概述

目录 一、链路层的术语 二、链路层的类比 三、链路层提供的服务 四、链路层实现的位置 1、网络适配器 2、网络适配器工作过程 一、链路层的术语 ① 节点 (nodes)&#xff1a;主机和路由器 ② 链路 (links)&#xff1a;沿着通信路径连接相邻节点的通信信道 有线链路 (w…

locust学习教程(2)- 性能测试虚拟环境配置

前言 写这个是因为&#xff0c;好多专职自动化测试都不知道怎么配置虚拟&#xff0c;可想而知萌新们整个人都是懵的 1、安装pthon&#xff08;略&#xff09; 2、安装pycharm&#xff08;略&#xff09; 3、配置性能测试的虚拟环境 桌面新建目录 demolocust pycharm中 open …

Grdle版本的不同导致的一些差异

gradle版本是不断迭代升级的&#xff0c;升级后对有些配置是有影响的&#xff0c;比如对kotlin配置、上传maven的方式&#xff0c;特此记录一下 对kotlin配置的影响 我们主项目的gradle版本是6.3&#xff0c;对项目进行koltin配置的语法了&#xff0c;官方文档教程是一样的 …

计算机图形学-坐标系(坐标总汇)

建议买本书《计算机图形学》第四版 1 坐标系 1.1 在我们谈论坐标变换之前&#xff0c;我们必须对我们的坐标系做一个正式的定义。DirectX 使用的默认坐标系是左手坐标系。OpenGL 使用的默认坐标系是右手坐标系。 我们可以通过使用手对坐标系进行一个简单的判断。 左手坐标…

LiangGaRy-学习笔记-Day24

1、web服务介绍 1.1、Linux常见的web服务 httpd nginx tomcat 1.2、LAMP架构 L&#xff1a;CentOS CentOS7RHEL7等等 A&#xff1a;Apache apache&#xff1a;网页服务器 httpd服务 M&#xff1a;MySQL MySQL&#xff1a;关系型数据库 AB公司–>08年被SUN公司收购…

基于.Net6使用YoloV8的分割模型

前言 在目标检测一文中&#xff0c;我们学习了如何处理Onnx模型&#xff0c;并的到目标检测结果&#xff0c;在此基础上&#xff0c;本文实现基于.Net平台的实例分割任务。 执行YoloV8的分割任务后可以得到分割.pt模型。由于Python基本不用于工业软件的部署&#xff0c;最终还…

1.1 渲染流水线

整体流程 应用阶段&#xff1a;粗粒度剔除、进行渲染设置、准备基本数据、输出到几何阶段 几何阶段&#xff1a;顶点着色器、曲面细分、几何着色器、顶点裁剪、屏幕映射 光栅化阶段&#xff1a;三角形&#xff08;点/线&#xff09;设置、三角形&#xff08;点/线&#xff09…

基于android studio开发的火车票购票系统app,android移动开发课设,毕业设计

基于android studio开发的火车票购票系统app 项目概述 基于android studio开发实现火车票购票系统app 适用于android移动开发学习项目&#xff0c;课程设计&#xff0c;毕业设计等 开发环境及工具 开发工具&#xff1a;android studio 或者intellij idea专业版操作系统&…

最新大学计算机专业实习心得报告

最新大学计算机专业实习心得报告&#xff08;篇1&#xff09; 一、实习目的 通过理论联系实际&#xff0c;巩固所学的知识&#xff0c;提高处理实际问题的能力&#xff0c;为顺利毕业进行做好充分的准备&#xff0c;并为自己能顺利与社会环境接轨做准备。通过这次实习&#xff…

软件测试入门篇

软件测试含义 在规定条件下对程序进行操作&#xff0c;发现软件错误&#xff0c;衡量软件质量&#xff0c;对其是否能满足设计要求进行评估的过程 开发不做测试原因&#xff1a;测试力度&#xff0c;思维方式&#xff0c;关注度 计算机定义 一种可以自动高效进行技术操作的…

Debian 版本代号与《玩具总动员》

作为最受欢迎的 Linux 发行版之一&#xff0c;Debian 是许多其他发行版的基础&#xff0c;许多非常受欢迎的 Linux 发行版&#xff0c;例如 Ubuntu、Knoppix、PureOS 、Tails、Armbian 以及 Raspbian&#xff0c;都基于 Debian。 经过近 20 个月的开发&#xff0c;2023 年 6 月…

基于SpringBoot的大学生成长管理系统的设计与实现

摘 要 大学生成长管理系统是记录大学生在大学期间的成长记录史。它是为了促进学生成长、提升学习兴趣及其质量。系统是集辅导员、学生和管理员为核心的一个综合平台。 本系统采用Java编程语言&#xff0c;完成了大学生成长管理系统。系统的使用角色分为三个&#xff1a;管理员…

鉴源实验室丨HSM技术浅述

作者 | 徐奕华 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 引言&#xff1a;2023年5月初&#xff0c;工业和信息化部装备工业一司组织全国汽车标准化技术委员会开展《汽车整车信息安全技术要求》等四项强制性国家标准的制修订[1]。这意味着车辆信息安全管理…

CPU调优 iostat命令

目录 一、命令描述 二、命令作用 三、命令 1.用法 2.命令参数 四、使用实例 1.CPU属性值说明 五、压力测试stress 1.stress介绍 2.stress参数 3.安装stress 四、实验 五、总结 一、命令描述 Linux 中的 iostat 是I/O statistics&#xff08;输入/输出统计&#xf…

毕业设计心得总结10篇

毕业设计心得总结1 201_年5月30日上午&#xff0c;我们的毕业论文答辩圆满结束了。当刘老师给我们送上人生的祝语时&#xff0c;一种即将离别的难舍之情油然而生&#xff0c;我开始眷恋培养我大学四年的母校&#xff0c;看着一张张熟悉的面孔&#xff0c;过去的欢乐和不快都烟消…

JavaEE课程设计——校园招聘管理系统(vue框架分析)

目录 Vue架构 登录 Vue架构 前端执行命令 npm run serve 这是整个前端的目录结构 vue.config.js是对前端vue的一个配置&#xff0c; // var webpack require(webpack); const path require(path)function resolve(dir) {return path.join(__dirname, dir) }function pu…

每日学术速递6.13

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Tracking Everything Everywhere All at Once 标题&#xff1a;一次跟踪所有地方的一切 作者&#xff1a;Qianqian Wang, Yen-Yu Chang, Ruojin Cai, Zhengqi Li, Bharath Hariha…

数据结构 栈(C语言实现)

绪论 时间就是生命&#xff0c;时间就是速度&#xff0c;时间就是气力。——郭沫若&#xff1b;本章继续学习数据结构&#xff0c;本章主要讲了什么是栈以及栈的基本功能和实现方法。 话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑观看&#xff09;。 附&#xff…

专业科普:什么是单片机?

一、什么是单片机 单片机诞生于20世纪70年代末&#xff0c;它是指一个集成在一块芯片上的完整计算机系统。单片机具有一个完整计算机所需要的大部分部件&#xff1a;CPU、内存、内部和外部总线系统&#xff0c;目前大部分还会具有外存。同时集成诸如通讯接口、定时器&#xff…

AI日报|GitHub报告:开发者正将AI视为新机会;突破ChatGPT的能力极限;AI会让我们变得愚蠢吗?

今日值得关注的人工智能新动态&#xff1a; AI 会让我们变得愚蠢吗&#xff1f;安永&#xff1a;与老板们不同&#xff0c;大多数工人正在拥抱 AI突破 ChatGPT 的能力极限谷歌推出AI虚拟试穿工具Gannett 涉足生成式 AIGitHub 报告&#xff1a;开发者将 AI 视为一个新机会专家敦…