Mysql备份恢复

目录

1.Mysql日志管理

1.1为什么需要日志

1.2日志作用

1.3数据丢失或破坏的原因

1.4常见日志类型之错误日志

1.5常见日志类型之通用查询日志

1.6常见日志类型之慢查询日志

1.7常见日志类型之二进制日志

1.8常见日志类型之事务日志

2.MySQL备份

2.1备份类型

2.2逻辑备份优缺点

2.3备份内容

2.4备份工具


1.Mysql日志管理

1.1为什么需要日志

1.用于排错
2.用来做数据分析
3.了解程序的运行情况,了解MySQL的性能

1.2日志作用

在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这样情况下,就必须保证数据的安全性和完整性,则需要使用日志来查看或者恢复数据。

1.3数据丢失或破坏的原因

1.误删除数据库
2.数据库工作时,意外断电或程序意外终止
3.由于病毒造成的数据库损坏或丢失
4.文件系统损坏后,系统进行自检操作
5.升级数据库时,命令语句不严格
6.设备故障等等
7.自然灾害
8.盗窃

1.4常见日志类型之错误日志

错误日志记录以下信息:
        服务器启动和关闭过程中的信息
        服务器运行过程中的错误信息
        事件调度器运行一个时间是产生的信息
        在从服务器上启动从服务器进程是产生的信息

# 查看错误日志位置及文件名,一般以主机名.err方式命名
mysql> show variables like 'log_error';
+---------------+--------------+
| Variable_name |    Value     |
+---------------+--------------+
| log_error     | .\LEGION.err |
+---------------+--------------+
1 row in set, 1 warning (0.01 sec)

1.5常见日志类型之通用查询日志

1.查看设置状态

mysql> show global variables like "%general_log%";
+------------------+------------+
| Variable_name    |    Value   |
+------------------+------------+
| general_log      |    OFF     | # 默认关闭
| general_log_file | LEGION.log | # 存储位置
+------------------+------------+
2 rows in set, 1 warning (0.00 sec)

2.启动记录查询日志

mysql> set global general_log=on;
mysql> show global variables like "%general_log%";
+------------------+------------+
| Variable_name    |    Value   |
+------------------+------------+
| general_log      |      ON    |
| general_log_file | LEGION.log |
+------------------+------------+
2 rows in set, 1 warning (0.00 sec)
C:\ProgramData\MySQL\MySQL Server 8.0\Data\LEGION.log
# 注意这是临时更改,若永久更改则在my.ini中配置general-log=1,并重启服务
# 注意可以在my.ini中设置general_log_file=路径/文件名 的形式设置永久更改存储位置

 3.设置日志记录类型(表/文本文件/空)

mysql> show variables like "%log_output%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    |  FILE |
+---------------+-------+
# 注意可以在my.ini中设置log-output={TABLE|FILE|NONE}类型

要启用通用查询日志,需要至少配置general-log=1,log-output={TABLE|FILE}
general_log_file如果没有指定,默认名是:主机名.log
默认通用查询日志是不开启的,因为会消耗大量的磁盘空间、CPU以及内存,所以当需要通过查询日志还原操作场景准确定位问题时可以短时间开启

4.关闭日志

mysql> set global general_log=0;
mysql> show global variables like "%general_log%";
+------------------+------------+
| Variable_name    |    Value   |
+------------------+------------+
| general_log      |     OFF    |
| general_log_file | LEGION.log |
+------------------+------------+

1.6常见日志类型之慢查询日志

慢日志记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询
解释:若某条查询语句的执行时间过长,超过了设定的阈值则就会记录到慢日志中,可以对其进行后期select语句的优化
1.查看慢查询日志状态

mysql> show global variables like "%slow_query_log%";
+---------------------+-----------------+
| Variable_name       |       Value     |
+---------------------+-----------------+
| slow_query_log      |        ON       |
| slow_query_log_file | LEGION-slow.log |
+---------------------+-----------------+

2. 开启慢查询日志

mysql> set global slow_query_log=1; # 0为关闭
C:\ProgramData\MySQL\MySQL Server 8.0\Data\LEGION-slow.log
# 注意:为了服务器调优,建议开启

3.慢日志的时间阈值

mysql> show global variables like "long_query_time";
+-----------------+-----------+
| Variable_name   |    Value  |
+-----------------+-----------+
| long_query_time | 10.000000 | # 默认10秒最小为0,精度可以到微秒
+-----------------+-----------+

1.7常见日志类型之二进制日志

二进制日志作用:
1.记录所有更改数据的语句(insert、update、delete等),不记录查询语句
2.用于主从复制,因为从服务器需要到主服务器里拷贝二进制日志,然后根据二进制日志的内容去执行SQL语句,从而达到主从服务器里的数据一模一样;
3.用于恢复数据
4.日志审计的场景:用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入攻击(mysql注入攻击:黑客可以提交一段数据库查询代码,根据程序返回的结果,获得某些想要得到的数据)

1.查看二进制日志状态

mysql> show variables  like "%log_bin%";

2.日志查看

# 查看有哪些二进制日志文件:
mysql> show binary logs; # 显示名称、容量单位字节、加密与否
# 查看当前正在使用的是哪一个二进制日志文件
mysql> show master status;
# 查看二进制日志内容:
mysql> show binlog events in "LEGION-bin.000008";
# 使用命令mysqlbinlog查看二进制日志内容
# 打开命令提示符
C:\Users\Administrator>cd C:\ProgramData\MySQL\MySQL Server 8.0\Data
C:\ProgramData\MySQL\MySQL Server 8.0\Data>mysqlbinlog LEGION-bin.000008 >
test.sql

3.分割日志:新的操作会记录到新的日志文件中

PS C:\Users\Administrator> mysqladmin flush-logs -u root -p
Enter password: ******
PS C:\Users\Administrator> mysql -u root -p
Enter password:
mysql> create database mydb12_journal; # 新建数据库
mysql> show master status;
# 打开命令提示符
C:\Users\Administrator>cd C:\ProgramData\MySQL\MySQL Server 8.0\Data
C:\ProgramData\MySQL\MySQL Server 8.0\Data>mysqlbinlog LEGION-bin.00000?

4.日志刷新

作用:通过刷新日志进行更新日志,对缓存数据进行磁盘I/O,并强制 mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志)
由于日志的记录不是直接写入日志文件中而是使用日志缓存的方式,当频繁执行多条修改的sql语句时,为了避免对磁盘频繁I/O,会将日志记录写入到内存的特殊空间即日志缓存中,之后每隔一个固定时间间隔将缓存的日志写入到磁盘文件中。


刷新日志命令格式

mysql> flush logs # 会产生新日志文件
mysql> show master status;# 在shell中,通过mysqladmin命令执行日志刷新:
mysqladmin flush-logs -u 账户名 -p
mysqladmin refresh -u 账户名 -pPS C:\Users\Administrator> mysqladmin flush-logs -uroot -p
Enter password: ******
PS C:\Users\Administrator> mysql -u root -p
Enter password: ******
mysql> show master status;

1.8常见日志类型之事务日志

作用:记录InnoDB等支持事务的存储引擎执行事务时产生的日志
事务:是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求。要么都执行,要么都不执行
解释:比如在区块链技术中,支出时本地账本会记录同时同步全网,收入时也会记录并同步,若执行支出时系统崩溃则会出现问题,采用事务日志记录见执行的事务以便与数据回滚等操作

2.MySQL备份

2.1备份类型

1.根据服务器状态,可以分为热备份、温备份、冷备份
        热备份:读、写不受影响
        温备份:仅可以执行读操作
        冷备份:离线备份;读、写操作均中止
2.从对象来分,可以分为物理备份与逻辑备份
        物理备份:复制数据文件
        逻辑备份:将数据导出至文本文件中
3.从数据收集来分,可以完全备份、增量备份、差异备份
        完全备份:备份全部数据;
        增量备份:仅备份上次完全备份或增量备份以后变化的数据;
        差异备份:仅备份上次完全备份以来变化的数据;

2.2逻辑备份优缺点

在备份速度上两种备份要取决于不同的存储引擎
        物理备份的还原速度非常快。但是物理备份的最小粒度只能做到表
        逻辑备份保存的结构通常都是纯ASCII的,所以我们可以使用文本处理工具来处理
        逻辑备份有非常强的兼容性,而物理备份则对版本要求非常高
        逻辑备份也对保持数据的安全性有保证
逻辑备份的缺点:
        逻辑备份要对RDBMS产生额外的压力,而裸备份无压力
        逻辑备份的结果可能要比源文件更大。所以很多人都对备份的内容进行压缩
        逻辑备份可能会丢失浮点数的精度信息

2.3备份内容

数据文件
日志文件(比如事务日志,二进制日志)
存储过程,存储函数,触发器
配置文件(十分重要,各个配置文件都要备份)
用于实现数据库备份的脚本,数据库自身清理的Crontab等……

2.4备份工具

MySQL自带的备份工具--mysqldump,是mysql数据库管理系统,自带的逻辑备份工具,支持完全备份+增加备份,速度相对较慢,适合中小型数据库支持所有引擎,备份策略:第一次完全备份,每天一次增量备份,每周再做一次完全备份,如此一直重复

1.全备语法

mysqldump -u用户名 --password=密码 -A > 绝对路径\备份文件.sql

2.备份库和表

mysqldump -u用户名 --password=密码 数据库名 表1 表2 > 绝对路径\备份文件.sql

 使用mysqldump工具实现全量备份

# 原理:必须先做全量备份,使得数据库有一个基准还原点,在做增量备份,还原差异数据
# 注意:在命令提示符中处理,不要在powershell中
mysql>\q
# 切换到命令提示符终端,完成全备
C:\Users\Administrator> mysqldump -u root --password=123456 -A > C:\back1.sql
mysqldump: [Warning] Using a password on the command line interface can be
insecure. # 警告表示将密码显示在屏幕上不安全,备份的盘符一定要和MySQL安装目录在同一个盘符中,
要不然会提示:拒绝访问
# 切换终端到mysql
C:\Users\Administrator> mysql -uroot -p
Enter password: ******
mysql> drop database mydb1_test; # 删库跑路
mysql> drop database mydb2_stuinfo;
……
mysql> show databases; # 查看数据库
mysql> source C:\back1.sql # 全库恢复

局部备份恢复

# 注意:在命令提示符中处理,不要在powershell中
mysql>\q
# 切换到命令提示符终端,完成全备
C:\Users\Administrator> mysqldump -u root --password=123456 -B mydb1_test >
C:\back2.sql
# 切换终端到mysql
C:\Users\Administrator> mysql -uroot -p
Enter password: ******

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

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

相关文章

超低功耗ARM Cortex-M33 TZ MCU STM32WBA54、STM32WBA55:通过提升无线性能实现更出色的用户体验

摘要 STM32WBA54、STM32WBA55产品系列同时支持多种无线标准,包括Bluetooth低功耗 5.4(已认证)、Zigbee、Thread以及可用作Thread边界路由器的Matter。 该产品系列具有出色的灵活性和更强的安全性,可帮助开发人员应对不断变化的无…

新能源汽车的充电网络安全威胁和防护措施

1. 物理攻击:例如恶意破坏、搬走充电设施等,这可能会对充电设施造成损害,妨碍正常的电力传输。 2. 网络攻击: 黑客可能利用系统漏洞攻击网络,破坏设备,并窃取用户的个人信息、支付信息等; 车辆…

24暑假算法刷题 | Day21 | LeetCode 669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树

目录 669. 修剪二叉搜索树题目描述题解 108. 将有序数组转换为二叉搜索树题目描述题解 538. 把二叉搜索树转换为累加树题目描述题解 669. 修剪二叉搜索树 点此跳转题目链接 题目描述 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪…

企业邮件系统管理(二)配置与优化指南

文章目录 企业邮件系统管理:配置与优化指南引言第一部分:了解邮件系统的基础架构一、MTA与MUA的定义及作用二、常见的邮件协议 第二部分:Exchange Server 2010的核心功能一、Exchange Server的服务器角色二、“典型安装”包含的服务器角色三、…

packet_write_wait: Connection to <IP> port <PORT>: Broken pipe

packet_write_wait: Connection to <IP> port <PORT>: Broken pipe 是一个常见的网络错误&#xff0c;指的是尝试向一个已经损坏的 TCP 连接写入数据。下面是这个错误的一些可能原因和解决方法&#xff1a; 可能的原因&#xff1a; 客户端断开连接&#xff1a; 远…

vite环境下使用bootstrap

环境 nodejs 18 pnpm 初始化 pnpm init pnpm add -D vite --registry http://registry.npm.taobao.org pnpm add bootstrap popperjs/core --registry http://registry.npm.taobao.org pnpm add -D sass --registry http://registry.npm.taobao.org新建vite.config.js cons…

【git】如何实现规范git commit -m的格式

.husky/commit-msg #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh"yarn commitlint --edit $1.vscode/settings.json "ahooks","aliyuncs","antd","commitlint", // 新增"deadcode","deno…

用三行代码“偷袭白嫖党”,保护自己的代码(多语言实现)

计算机科学专业的同学们最近遇到了一件烦心事。教授布置了一系列具有挑战性的编程作业&#xff0c;需要大家运用所学知识来完成。然而&#xff0c;一些同学却动起了歪脑筋&#xff0c;想要通过抄袭他人的代码来轻松完成任务。 小李、小王和小张是同宿舍的好友&#xff0c;他们…

第1课:计算机历史与基础——一段跨越时代的技术演进

目录 引言计算机的起源机械计算时代 电子计算机的曙光个人计算机的革命现代计算机的多样化计算机的分类计算机的特点计算机技术的未来发展结语 引言 在数字化浪潮的推动下&#xff0c;计算机已经成为现代社会的中枢神经。它们不仅驱动着我们的工作流程&#xff0c;更深入地影响…

四、GD32 MCU 常见外设介绍(1)RCU 时钟介绍

系统架构 1.RCU 时钟介绍 众所周知&#xff0c;时钟是MCU能正常运行的基本条件&#xff0c;就好比心跳或脉搏&#xff0c;为所有的工作单元提供时间 基数。时钟控制单元提供了一系列频率的时钟功能&#xff0c;包括多个内部RC振荡器时钟(IRC)、一个外部 高速晶体振荡器时钟(H…

【力扣习题】C语言

目录 【876.链表的中间点】 思路&#xff1a; 【83删除排序链表中的重复元素】 思想&#xff1a; 代码&#xff1a; 【876.链表的中间点】 思路&#xff1a; 1、计算链表的长度 2、遍历到链表中间长度并输出值 /*** Definition for singly-linked list.* struct ListN…

如何提升短视频的曝光量和获客效能?云微客来解决

在流量至上的当下&#xff0c;短视频凭借其优势&#xff0c;迅速成为了众多企业获客引流的核心营销手段。进入短视频赛道后&#xff0c;如何提升短视频的曝光量和获客效能&#xff0c;就成为了众多企业亟待解决的焦点。 如果你不想投入大量的广告预算&#xff0c;还想在短视频平…

【GoF23种设计模式+简单工厂模式】

一、设计模式概述与类型 1.1、设计模式的一般定义&#xff1a; 设计模式&#xff08;Design Pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结&#xff0c;使用设计模式是为了可重用代码&#xff0c;让代码更容易被他人理解并且保证代…

【Linux】进程间通信及管道详细介绍(上)

前言 本节我们开始学习进程间通信相关的知识&#xff0c;并详细探讨一下管道&#xff0c;学习匿名管道和命名管道的原理和代码实现等相关操作… 目录 1. 进程间通信背景1.1 进程通信的目的&#xff1a; 2 管道的引入&#xff1a;2.1 匿名管道&#xff1a;2.1.1 匿名管道的原理&…

【中项】系统集成项目管理工程师-第5章 软件工程-5.1软件工程定义与5.2软件需求

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

【数据结构】AVL树(图文解析 + 代码实现)

目录 1、AVL树的概念 2、AVL树结点的定义 3、AVL树的插入 4、AVL树的旋转 4.1 左单旋 4.2 右单旋 4.3 右左双旋 4.4 左右双旋 5、AVL树的验证 6、AVL树的性能 前面对map/multimap/set/multiset进行了简单的介绍&#xff0c;会大仙&#xff0c;这几个容器有个共同点是…

sklearn基础学习

1. 简介 1.1 什么是sklearn sklearn&#xff0c;或者更正式地称为scikit-learn&#xff0c;是一个基于Python的开源机器学习库。它建立在NumPy、SciPy和matplotlib之上&#xff0c;提供了简单而有效的工具用于数据挖掘和数据分析。sklearn支持监督学习和无监督学习算法&#…

使用 jQuery 中的 this 实例

在 jQuery 中&#xff0c;this 关键字用于表示指向当前操作的 DOM 元素。本篇博客将详细介绍如何在 jQuery 中使用 this 实例。 一、选择器中的 this 在选择器中&#xff0c;this 可以方便地指向当前操作的 DOM 元素。例如&#xff0c;当用户点击一个按钮时&#xff0c;我们想…

【Linux常用命令】之find命令

Linux常用命令之find命令 文章目录 Linux常用命令之find命令常用命令之find背景介绍 总结 作者简介 听雨&#xff1a;一名在一线从事多年研发的程序员&#xff0c;从事网站后台开发&#xff0c;熟悉java技术栈&#xff0c;对前端技术也有研究&#xff0c;同时也是一名骑行爱好…

Linux Gui 窗口对话和窗口操作

zenity 可以实现窗口对话 eg: zenity --error --width 300 --text "Permission denied. Cannot write to the file." ChosenDate$(zenity --calendar --text "Choose a date" --title "How-To Geek Rota" --day 1 --month 9 --year 2019); …