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

news2024/12/24 3:47:58

MySQL日志管理、备份与恢复

  • 一、MySQL日志管理
    • 1.1日志存放位置
  • 二、数据备份
    • 2.1物理备份与逻辑备份
    • 2.2完整备份、差异备份、增量备份
    • 2.3常见的备份方法
  • 三、完整备份与恢复
    • 3.1物理冷备份与恢复
    • 3.2mysqldump 备份
    • 3.3mysqldump数据恢复
    • 3.4MySQL增量备份
    • 3.5MySQL增量恢复

一、MySQL日志管理

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

在这里插入图片描述
数据库里查看日志是否开启

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常见的备份方法

物理冷备

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

专用备份工具mysqldump或mysqlhotcopy

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

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

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

第三方工具备份

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

三、完整备份与恢复

在这里插入图片描述

3.1物理冷备份与恢复

#先关闭服务
systemctl stop mysqld
#压缩备份
tar zcvf /opt/mysql_all_$(date +%F).tar.gz /usr/local/mysql/data/

在这里插入图片描述
解压恢复

systemctl stop mysqld
tar xf mysql_data_20230618.tar.gz
mv /usr/local/mysql/data/ /usr/local/mysql/data.bak
mv /data/  /usr/local/mysql/
systemctl restart mysqld

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

3.2mysqldump 备份

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

mysqldump -u root -p[密码] 库名 [表名1] [表名2]> /备份路径/备份文件名.sql
#使用“-d”选项,说明只保存数据库的表结构
#不使用“-d”选项,说明表数据也进行备份
# 查看数据备份文件
grep -v "^--" /opt/kgc_info1.sql | grep -v "^/" | grep -v "^$"

在这里插入图片描述

3.3mysqldump数据恢复

恢复数据库

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;'

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

当备份文件中只包含表的备份,而不包含创建的库的语句时,执行导入操作时必须指定库名,且目标库必须存在。
mysqldump -u root -p KFC info1 > /opt/kgc_info1.sql

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

mysql -u root -p kgc < /opt/KFC_info1.sql
mysql -u root -p -e 'show tables from KFC;'

#在数据表内用source命令恢复数据
use KFC;
source /opt/KFC_info1.sql

在这里插入图片描述

3.4MySQL增量备份

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

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

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.可每天进行增量备份操作,生成新的二进制日志文件

mysqladmin -u root -p flush-logs
或
重启mysql服务

在这里插入图片描述

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

use KFC;
insert into info1 values(5,'石头人','m男','发呆');
insert into info1 values(6,'飞机','男','打飞机');
#生成新的二进制文件
mysqladmin -u root -p flush-logs
#查看二进制文件内容
mysqlbinlog --no-defaults --base64-output=decode-rows -v
#--base64-output=decode-rows:使用64位编码机制去解码并按行读取
#-v:显示详细内容

在这里插入图片描述

在这里插入图片描述

3.5MySQL增量恢复

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

#模拟数据丢失
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

在这里插入图片描述
模拟丢失所有数据的恢复步骤

#模拟数据丢失
use KFC;
drop table info1;
#先恢复完整数据
mysql -uroot -p123456 < /opt/backup/info1.sql
#恢复增量数据
mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p123456

在这里插入图片描述

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

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

相关文章

51单片机 - 期末复习重要图

AT89S51片内硬件结构 1.内部硬件结构图 2.内部部件简单介绍 3. 26个特殊功能寄存器分类 按照定时器、串口、通用I/O口和CPU 中断相关寄存器&#xff1a;3IE - 中断使能寄存器IP - 中断优先级寄存器 定时器相关寄存器6TCON - 定时器/计数器控制寄存器TMOD - 定时器/计数器模…

数字图像处理(三)

目录 实验六、图像分割方法 实验七、图像识别与分类 实验六、图像分割方法 一、实验目的 了解图像分割技术相关基础知识&#xff1b;掌握几种经典边缘检测算子的基本原理、实现步骤理解阈值分割、区域分割等的基本原理、实现步骤。理解分水岭分割方法的基本原理、实现方法。…

清华大学实验室走在科研管理前沿,与Zoho合作推进新模式

在教育科研工作中&#xff0c;在重视科研的同时&#xff0c;也不能忽略科研管理的重要性。做好教育科研的管理工作&#xff0c;可以有效提高科研工作的效率和质量。项目管理软件可以帮助教育科研团队更加高效地管理项目&#xff0c;并且简化团队成员之间的协作和沟通&#xff0…

【玩转Docker小鲸鱼叭】理解Docker的核心概念

Docker核心概念 Docker有三大核心概念&#xff1a;镜像&#xff08;Image&#xff09;、容器&#xff08;Container&#xff09;、仓库&#xff08;Repository&#xff09; 1、镜像&#xff08;Image&#xff09; Docker镜像 是我们创建和运行Docker容器的基础&#xff0c;它…

青大数据结构【2019】【三分析计算】

关键字: 邻接表时间复杂度、哈希表、平均查找长度ASL、堆排序 邻接表表示法 在邻接表上执行图的遍历操作时,需要对邻接表中所有的边(链表中的结点)访问一次,还需要对所有的顶点访问一次,故时间代价为O(n+2)。 1) 散列序号 0 1 2 3 4 5 6 7 元素 19 15 8 5 13 20

奉加微电子PhyPlusKit软件怎么使用

摘要&#xff1a;本文简介使用奉加微电子PhyPlusKit软件清除芯片、制作hexf文件、烧录程序、串口调试等操作方法。 所用硬件&#xff1a; PHY6222开发板&#xff0c;这个开发板上自带了CP210X串口芯片&#xff0c;与电脑的接口的type-c&#xff0c;既可以供电&#xff0c;又可…

探索Gradio Interface的强大功能与无限可能性——launch方法介绍

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

记录一个iOS头部放大计算

视图层级&#xff1a;由于这是在原有的视图层级的基础上完成的放大功能&#xff0c;所以记录了一下计算方法&#xff0c; tableview 和 放大的背景图片都是self.view的子视图&#xff0c;下拉的时候要方法&#xff0c;上滑的时候要同步上移图片 核心代码 [self.view addSubview…

回了一趟老家,我发现老家没有想象中那么舒服!

大家好&#xff0c;我是千与千寻&#xff0c;千寻最近回了一趟老家&#xff0c;说到回老家&#xff0c;我相信说应该大部人觉得是很舒服&#xff0c;自己很满意的生活节奏与感觉。 但是千寻在老家的这一个星期&#xff0c;感受到了非常多的不舒适&#xff0c;希望和星友们聊聊看…

三极管选型

来源网络&#xff0c;仅作笔记 三极管如何选型? 应根据电路的实际上需选取三极管的类别&#xff0c;即三极管在电路中的效用应与所选三极管的机能相吻合。 三极管的品种很多&#xff0c;分类的方式也不同&#xff0c;一般按半导体导电特点分成NPN型与PNP型两大类;按其在电路中…

zabbix-2-创建自定义监控项

例如监控iostat 下的sda tps值 [rootnode1 ly]# iostatLinux 3.10.0-1160.53.1.el7.x86_64 (node1) 2023年06月13日 _x86_64_ (32 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.06 0.00 0.04 0.01 0.00 99.89Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda 1…

网工内推 | 金融业网工专场,员工旅游,带薪年假,节日福利

01 银信科技 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1&#xff09; 负责分支机构筹建网络系统调试与部署工作、网络运维管理及问题处理支持&#xff1b; 2&#xff09; 处理外部代理点系统及网络问题协助支持&#xff1b; 3&#xff09; 负责网络日志平台监控及…

PyCharm安装教程(图文结合,超详细,小白安装必看)

PyCharm安装教程(图文结合&#xff0c;超详细&#xff0c;小白安装必看) 一、Python开发环境 PyCharm集成开发工具&#xff08;IDE&#xff09;&#xff0c;是当下全球Python开发者&#xff0c;使用最频繁的工具软件。 绝大多数的Python程序&#xff0c;都是在PyCharm工具内…

python控制台学生管理系统

代码与注释 具体功能说明 设计初始界面设计学生信息录入 【数据校准】录入判断 学生姓名不能为空&#xff0c;并且不成超过4个字【数据校准】录入判断年龄在0-120 需要进行判断【数据校准】录入需要判断学号是否为空与学号是否在10位数【数据校准】录入需要判断成绩是否在0-1…

python数据分析-Mysql中NULL和‘ ‘怎么处理(不使用update)

一、空值NULL和空字符’ ’ 展示代码使用的版本是&#xff1a;8.0.28 空值NULL的长度是NULL&#xff0c;是占用存储空间的。空字符串’ 的长度是0&#xff0c;是不占用空间的。 理解&#xff1a;空字符串就像是一个真空状态的杯子&#xff0c;什么都没有;而空值NULL_就像是一…

17-事件循环(实现单线程非阻塞的方法就是事件循环)

一、是什么 &#x1f9c0;&#x1f9c0;&#x1f9c0;首先&#xff0c;JavaScript是一门单线程的语言&#xff0c;意味着同一时间内只能做一件事&#xff0c;但是这并不意味着单线程就是阻塞&#xff0c;而实现单线程非阻塞的方法就是事件循环 在JavaScript中&#xff0c;所有…

Vue路由模式

1. vue路由简介和基础使用 1.1 什么是路由 设备和ip的映射关系 接口和服务的映射关系 路径和组件的映射关系 1.2 为什么使用路由&#xff1f; 在一个页面里, 切换业务场景&#xff0c;具体使用示例: 网易云音乐 网易云音乐 单页面应用(SPA): 所有功能在一个html页面上实现 前…

虚拟内存(Virtual Memory)

什么是虚拟内存&#xff1f; 虚拟内存(Virtual Memory) 是计算机系统内存管理非常重要的一个技术&#xff0c;本质上来说它只是逻辑存在的&#xff0c;是一个假想出来的内存空间&#xff0c;主要作用是作为进程访问主存&#xff08;物理内存&#xff09;的桥梁并简化内存管理。…

.NET的AsyncLocal用法指南

AsyncLocal用法简介 通过 AsyncLocal 我们可以在一个逻辑上下文中维护一份私有数据&#xff0c;该上下文后续代码中都可以访问和修改这份数据&#xff0c;但另一个无关的上下文是无法访问的。 无论是在新创建的 Task 中还是 await 关键词之后&#xff0c;我们都能够访问前面设…

开关电源——三种基本拓扑

开关电源——三种基本拓扑 开关电源基本原理——伏秒数法则与占空比 当电路是稳态电路的时候&#xff0c;有限的输入对应有限的输出&#xff0c;即电路不再积累能量&#xff0c;电感积累的能量是电压对时间的积分&#xff0c;在开关电源电路中&#xff0c;电感在开关导通和截…