Mysql数据库日志和数据的备份恢复

news2024/11/25 16:23:43

目录

一、数据库备份的重要性

二、数据库备份的分类

三、常见的备份方法

1.物理冷备

2.专用备份工具

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

4.第三方工具备份

四、完全备份

1.简介

2.优缺点

五、完全备份与恢复

1.物理冷备份与恢复

2.mysqldump备份与恢复

六、mysql日志管理

七、增量备份与恢复

1.备份和查看

2.恢复

八、备份加入计划任务


一、数据库备份的重要性

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

        造成数据丢失的原因主要有:程序错误、人为操作错误、运算错误、磁盘故障、灾难(如火灾、地震)和盗窃。

二、数据库备份的分类

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

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

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

2.逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份,导出sql文件。

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

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

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

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

推荐使用 完全备份+增量备份 的方式

三、常见的备份方法

1.物理冷备

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

2.专用备份工具

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

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

进行增量备份,需要刷新二进制日志。(本文会介绍)

4.第三方工具备份

免费的MySQL热备份软件:Percona、XtraBackup等。

四、完全备份

1.简介

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

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

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

2.优缺点

优点

  • 备份与恢复操作简单方便。

缺点

  • 数据存在大量的重复;
  • 占用大量的备份空间;
  • 备份与恢复时间长。

五、完全备份与恢复

1.物理冷备份与恢复

关闭mysql数据库,使用tar命令直接打包数据库数据文件夹,实现备份

#关闭mysql服务
systemctl stop mysqld.service

#创建备份目录
mkdir /sqlbak

#压缩打包数据文件夹,并以归档日期命名
tar zcf /sqlbak/mysql_bak_$(date +%F).tar.gz /usr/local/mysql/data/

替换数据文件夹实现恢复

#如果有需要,可以将现在的数据库文件迁移到一个目录中
mkdir /sqldata
mv /usr/local/mysql/data/ /sqldata

#将备份压缩包解压到一个目录下,并将其迁移到mysql的数据目录下
mkdir /sqlrestore
tar zxf /sqlbak/mysql_bak_2022-10-26.tar.gz -C /sqlrestore/

mv /sqlrestore/usr/local/mysql/data/ /usr/local/mysql/

#启动mysql服务
systemctl start mysqld.service

2.mysqldump备份与恢复

单库备份

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

                                               --databases        可以保存创建库名

多库备份

mysqldump -u用户名 -p密码 [选项] --databases 库名1 库名2 ... > /备份路径/备份文件名

所有库备份

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

表备份

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

                                                -d        只保存表结构

恢复库

mysqldump -u用户名 -p密码 < /备份路径/库备份文件

恢复表

 mysqldump -u用户名 -p密码 库名 < /备份路径/表备份文件

六、mysql日志管理

修改/etc/my.cnf,添加错误日志、通用查询日志、慢查询日志和二进制日志

错误日志:用来记录当MysQL启动、停止或运行时发生的错误信息,默认已开启;

通用查询日志:用来记录MySQL的所有连接和语句,默认是关闭的;

慢查询日志:用来记录所有执行时间超过long query time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的;

二进制日志:用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启。

vim /etc/my.cnf

[mysqld]
...

#错误日志
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
binlog_format=MIXED

#慢查询日志
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=2

二进制日志格式有三种:binlog_format=STATEMENT  或  ROW 或  MIXED          

STATEMENT:基于SQL语句记录二进制日志,写入和恢复速度较快,在高并发的情况可能会出SQL语句顺序记录偏差导致恢复时数据丢失。(老版本的默认模式)


ROW:基于行记录二进制日志,写入和恢复速度较STATEMENT慢些,日志文件占用空间也较大,但是准确性较高。(5.7的默认模式)


MIXED:混合模式,平时负载压力较小时使用SQL语句记录二进制日志,在高并发的情况会切换成基于行记录二进制日志。

重启服务后,日志文件就生成了 

查看日志开启状态 

七、增量备份与恢复

1.备份和查看

(1)当我们设置了二进制日志,之后在数据库中的操作会保存在最新的二进制日志中(即文件后缀序号最大的),也可以在mysql-bin.index文件中查看

(2)使用以下命令刷新新的日志文件,会生成新的二进制日志,每次生成,后缀的序号会+1。 

mysqladmin -u用户 -p密码 flush-logs        

(3)将旧的二进制日志(当前最新的 -1)迁移出来(可以加上日期便于识别)

(4)由于是二进制文件,需要转码才能查看

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

(5)也可以将输出的内容重定向输入到文本文件中便于查看和编辑

2.恢复

(1)将二进制日志中的所有数据恢复

mysqlbinlog --no-defaults 二进制日志文件 | mysql -u用户名 -p密码

(2)断点恢复(将二进制日志中的指定数据恢复) 

基于位置点

从位置点恢复到结尾

mysqlbinlog --no-defaults --start-position='位置点' 二进制日志文件 | mysql -u用户名 -p密码

从位置点恢复到位置点

mysqlbinlog --no-defaults --start-position='位置点1' --stop-position='位置点2' 二进制日志文件 | mysql -u用户名 -p密码

基于时间点

时间点格式:'YYYY-mm-dd HH:MM:SS'        如:'2022-10-27 12:56:27'

从时间点恢复到结尾

mysqlbinlog --no-defaults --start-datetime='时间点1' 二进制日志文件 | mysql -u用户名 -p密码

 从时间点恢复到时间点

mysqlbinlog --no-defaults --start-datetime='时间点1' --stop-datetime='时间点2' 二进制日志文件 | mysql -u用户名 -p密码

八、备份加入计划任务

通常情况需要执行一次完全备份后,再定期执行增量备份。

需求:现需要实现今晚12:00做完全备份,之后每天执行增量备份

1.编写完全备份脚本和增量备份脚本

#完全备份脚本
vim generalbak.sh
#!/bin/bash
mysqldump -uroot -p123123 --all-databases > /sqlbinlog/mysql_general_bak.sql

#增量备份脚本
vim addbak.sh
#!/bin/bash
mysqladmin -uroot -p123123 flush-logs
filename=$(tail -2 /usr/local/mysql/data/mysql-bin.index | head -1 |awk -F'/' '{print $2}')
mv /usr/local/mysql/data/$filename /sqlbinlog/mysql-bin-$(date +%Y%m%d)

2.加入计划任务

crontab -e
0 0 28 10 * /sqlbinlog/generalbak.sh
0 0 * * * /sqlbinlog/addbak.sh

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

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

相关文章

SSRF漏洞(原理、挖掘点、漏洞利用、修复建议)

一、介绍SSRF漏洞 SSRF (Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求&#xff0c;由服务端发起请求的安全漏洞。一般情况下&#xff0c;SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的&#xff0c;所以服务端能请求到与自身相…

【密码学】一、概述

概述 1、密码学的发展历史1.1 古代密码时代1.2 机械密码时代1.3 信息密码时代1.4 现代密码时代 2、密码学的基本概念3、密码学的基本属性4、密码体制分类4.1 对称密码体制4.2 非对称加密体制 5、密码分析 1、密码学的发展历史 起因&#xff1a;保密通信和身份认证问题 根据时间…

C++基础算法二分篇

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C算法 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 主要讲解二分算法&#xff0c;分别讲解了整数二分和浮点二分 文章目录…

Mybatis-Plus(二)--Mybatis-Plus方法大全

通用CRUD大全&#xff08;Mybatis-Plus为我们提供了哪些操作&#xff09; 还有在mybatis中遇到列名和属性名不一致等等的情况&#xff0c;在mybatis中xml中声明解决&#xff0c;在mybatis-plus中也都有对应的解决。 1.插入操作 //插入一条记录 //参数entity是实体对象 int ins…

数据结构day5(2023.7.19)

一、Xmind整理&#xff1a; 双向链表的插入与删除&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;单链表任意元素删除 /** function: 按元素删除* param [ in] * param [out] * return 返回堆区首地址*/ Linklist delete_by_data(datatype key,Linklist L) …

【MySQL】MySQL数据库的初阶使用

文章目录 一、MySQL服务的安装二、数据库基础1.什么是数据库&#xff1f;&#xff08;基于CS模式的一套数据存取的网络服务&#xff09;2. Linux文件系统和数据库的关系 && 主流数据库3.MySQL架构 && SQL分类 && MySQL存储引擎 三、MySQL操作库1.库结构…

携带时间戳主动写入数据到prometheus service(可乱序、go)

使用到的github公开项目 https://github.com/castai/promwrite Prometheus版本2.45.0 拉下来装依赖&#xff0c;然后使用 client_test.go t.Run(“write with custom options”, func(t *testing.T) 这个测试用例里面&#xff0c;删掉srv初始化的部分&#xff0c;这个是模拟一…

unity02 物体运动

旋转&#xff0c;增量旋转&#xff0c;默认增量为15度 ctrl拖拽物体旋转 设置增量旋转角度大小 edit–>grid and snap settings privot 轴心坐标系&#xff08;中心坐标系&#xff09;默认 local 世界坐标系&#xff08;局部坐标系&#xff09; ctrlD复制物体 物体激活&…

uni.app如何检测小程序版本更新以及上线后如何关闭全局打印

uni.app如何检测小程序版本更新以及上线后如何关闭全局打印 检测小程序版本更新关闭全局打印 检测小程序版本更新 App.vue 入口文件中 添加如下代码 //检测小程序版本是否更新const updateManager wx.getUpdateManager()updateManager.onCheckForUpdate(function(res) {// 请求…

Linux基础内容(26)—— 线程的互斥

Linux基础内容&#xff08;25&#xff09;—— 线程控制和线程结构_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131372872?spm1001.2014.3001.5501 目录 1.线程互斥 1.问题引入 2.问题原因 3.安全问题 互斥 加锁 加锁后的特点 如何理…

每天一道C语言编程:Cylinder(圆柱体问题)

题目描述 使用一张纸和剪刀&#xff0c;您可以通过以下方式切出两个面形成一个圆柱体&#xff1a; 水平切割纸张&#xff08;平行于较短的边&#xff09;以获得两个矩形部分。 从第一部分开始&#xff0c;切出一个最大半径的圆。圆圈将形成圆柱体的底部。 将第二部分向上滚动&…

2023网络安全面试题汇总(附答题解析+配套资料)

随着国家政策的扶持&#xff0c;网络安全行业也越来越为大众所熟知&#xff0c;相应的想要进入到网络安全行业的人也越来越多&#xff0c;为了更好地进行工作&#xff0c;除了学好网络安全知识外&#xff0c;还要应对企业的面试。 所以在这里我归总了一些网络安全方面的常见面…

牛顿修正法在二阶近似方法中的应用

使用optimtool的牛顿修正法来应用学习 pip install optimtool --upgrade pip install optimtool>2.4.2optimtool包所依据的理论支撑中&#xff0c;还没有为二阶微分方法作邻近算子的近似与修正&#xff0c;所以二阶近似方法是研究无不可微项的可微函数的算子。 牛顿修正法…

docker部署mysql8主从集群(互为主从),keepalived保证高可用

一、准备2台物理机器master-1、master-2&#xff0c;目标虚拟VIP。   VIP:172.50.2.139   master-1:172.50.2.41   master-2:172.50.2.42 二、然后分别在2台物理机器master-1、master-2上使用docker-compose安装mysql8&#xff0c;并配置互为主从。1&#xff09;配置mas…

2023-7-19-第二十式迭代器模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

深入理解Java虚拟机(五)虚拟机类加载机制

代码编译的结果从本地机器码转变为字节码&#xff0c;是存储格式发展的一小步&#xff0c;却是编程语言发展的一大步。 一、概述 Java虚拟机把描述类的数据从Class文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Jav…

队列的表示和操作

队列&#xff1a;队列是仅在表尾进行插入操作&#xff0c;在表头进行删除操作的线性表。 表尾即an端&#xff0c;称为队尾&#xff0c;表头即a1端&#xff0c;称为队头。 队列的存储方式&#xff1a;顺序队列和链式队列 队列顺序表示 #define MAXQSIZE 100 //最大队列长度 …

Vue 1 - 安装、快速上手

文章目录 关于 Vue创建应用 关于 Vue 官网&#xff1a; https://cn.vuejs.org官方文档-快速上手&#xff1a; https://cn.vuejs.org/guide/quick-start.htmlgithub : https://github.com/vuejsVue SFC Playground : https://play.vuejs.org/ 其他 作者 尤雨溪 Evan You 主页 …

如何把caj文件改成PDF格式?分享三个免费的方法!

在学术研究中&#xff0c;我们可能会遇到CAJ文件&#xff0c;这是一种在中国学术界广泛使用的文档格式。然而&#xff0c;与PDF文件相比&#xff0c;CAJ文件的查看和分享并不那么便捷。下面&#xff0c;我会为你介绍三种免费且简便的方法&#xff0c;帮助你将CAJ文件转化为PDF格…

PSP - Jackhmmer 搜索 EMBL 序列数据库的相似序列

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131817060 EMBL (European Molecular Biology Laboratory&#xff0c;欧洲分子生物实验室)&#xff1a;EMBL 数据库是一个由欧洲生物信息学研究所…