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

news2024/9/22 3:38:50

一、数据库备份的概述

1、数据库备份的目的:备灾。在生产环境中,数据的安全性非常重要

2、造成数据丢失的原因:程序出错、人为的问题、磁盘故障、自然灾害。

二、备份的分类

从物理和逻辑的角度

1、物理备份:

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

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

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

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

2、逻辑备份:

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

从数据库的备份策略角度

完全备份、差异备份、增量备份

完全备份:(全量备份)每次对数据库进行完整的备份。

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

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

三、常见的备份方法

1、物理冷备 (完全备份):备份时数据库处于关闭状态,直接打包数据库文件,备份速度快,恢复时也是最简单的,通过直接打包数据库文件夹(/usr/loc.al/mysql/data)来实现备份。

2、通过启用二进制日志进行增量备份:进行增量备份,需要刷新二进制日志。

3、第三方工具备份:免费的MySQL热备份软件Percona XtraBackup。四、物理冷备与恢复
优点:备份与恢复操作简单方便
缺点:数据存在大量的重复,占用大量的备份空间,备份与恢复时间长

1、物理冷备份与恢复


关闭MySQL数据库
使用tar命令直接打包数据库文件夹
直接替换现有MySQL目录即可

在安装创建数据的的时候在vim /etc/my.cnf修改数据库路径,数据文件都保存在/usr/local/mysql/date目录下

systemctl stop mysqld #关闭数据库
yum -y install xz  #下载工具,xz是一个高效率的压缩工具
 
#压缩备份
cd /usr/local/mysql/data
tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data
systemctl start mysqld
 
#模拟故障,删除数据库
drop database xy102;
 
#解压恢复
tar jxvf /opt/mysql_all_2024-07-19.tar.xz -C /usr/local/mysql/data
cd /usr/local/mysql/data
mv usr/local/mysql/data/* ./

2、mysqldump备份与恢复


MySQL自带的备份工具,可方便实现对MySQL的备份可以备份库,也可以备份库里面的表 ,将指定的库、表导出为SQL脚本(.sql结尾),使用命令mysq|导入备份的数据。

操作步骤:

mysqldump -u root -p --all-databses > all-data-$(date +%F).sql ###备份所有数据库

mysqldump -u root -p -databases auth mysql > auth-mysql.sql ###备份auth和mysql库

mysqldump -u root -p auth > auth-$(data +%F).sql ###备份auth数据库

mysqldump -u root -p mysql user > mysql-user-$(date +%F).sql ###备份mysql的user表

mysqldump -u root -p -d mysql user > /tmp/desc-mysql-user.sql ###备份mysql库user表的结构

恢复:

方法一:

[root@server1 ~]# mysqldump -u root -p test > test-$(date +%F).sql

mysql> drop database test;

mysql> create database test2; ###建立空库

[root@server1 ~]# mysql -u root -p test2 < test-2024-07-19.sql

方法二:

[root@server1 ~]# mysqldump -u root -p test > test-$(date +%F).sql

mysql> drop database test;

mysql> create database test2;

mysql> use test2;

mysql> source /root/test-2024-07-19.sql;

3、增量备份

1、使用mysqldump进行完全备份存在的问题

备份数据中有重复数据

备份时间与恢复时间过长

2、MySQL增量备份是自上一次备份后增加/变化的文件或者内容

3、特点

没有重复数据,备份量不大,时间短

恢复需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复

4、MySQL没有提供直接的增量备份方法

可通过MySQL提供的二进制日志间接实现增量备份

5、MySQL二进制日志对备份的意义

二进制日志保存了所有更新或者可能更新数据库的操作

二进制日志在启动MySQL服务器后开始记录,并在文件达到max_binlog_size所设置的大小或者接收到flush logs命令后重新创建新的日志文件

只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份

4、增量恢复

1、一般恢复

将所有备份的二进制日志内容全部恢复

2、断点恢复

1、基于位置恢复

数据库在某一时间点可能既有错误的操作也有正确的操作

可以基于精准的位置跳过错误的操作

[root@server1 ~]# mkdir -p /opt/bak_sql

[root@server1 ~]# mysqldump -uroot -p test2 > /opt/bak_sql/test2-$(date +%F).sql; ###完整备份
[root@server1 ~]# vi /etc/my.cnf
[mysqld]
log_bin=/usr/local/mysql/data/mysql_bin ###开启增量备份

[root@server1 ~]# systemctl restart mysqld



[root@server1 ~]# mysqladmin -uroot -p flush-logs ###在日志进行打一个断点,让后续的命令存储到另外一个日志中去,产生新的日志文件

[root@server1 ~]# cd /usr/local/mysql/data/

[root@server1 data]# ll ###查询增量备份结果

查看日志:mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.00001

[root@server1 ~]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql_bin.000002 ###查询该二进制日志内容是否正确



[root@server1 ~]# mysqladmin -u root -p flush-logs; ###在日志进行打一个断点,让后续的命令存储到另外一个日志中去,产生新的日志文件

[root@server1 ~]# cd /usr/local/mysql/data/

[root@server1 data]# ll ###查询增量备份结果

[root@server1 ~]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql_bin.000003 ###查询该二进制日志内容是否正确



mysql> use test2;

mysql> drop table aa; ###先删掉坏的那张表

[root@server1 ~]# mysql -u root -p test2 < /opt/bak_sql/test2-2024-07-19.sql ###还原完全备份的数据库



[root@server1 ~]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql_bin.000002 ###查询该二进制日志内容



[root@server1 ~]# mysqlbinlog --no-defaults --stop-datetime='时间点' /usr/local/mysql/data/mysql_bin.000002 | mysql -u root -p ###停止错误的时间



[root@server1 ~]# mysqlbinlog --no-defaults --start-datetime='时间点' /usr/local/mysql/data/mysql_bin.000002 | mysql -u root -p ###开始正确的时间




从开始位置开始恢复

mgsqlbinlog --no-defaults --start-position='8224' mysql-bin.00001(文件名)| mysql -u roo -p 

从结束位置恢复

mgsqlbinlog --no-defaults --stop-position='9011' mysql-bin.00001(文件名)| mysql -u roo -p 

以什么位置为开始以什么位置为结束

mgsqlbinlog --no-defaults --start-position='8224'  --stop-position='9011' mysql-bin.00001(文件名)| mysql -u roo -p 

3、对/etc/my.cnf配置文件进行解读

general_log=on 开启通用查询日志

general_log_file=/usr/local/mysql/data/mysql_general.log 查询日志的保存位置

log-erro=/usr/local/mysql/data/mysql_error.log 错误日志的保存位置,错误日志默认开启

slow_query_log=ON 开启慢查询日志,执行记录朝超过一定时间的日志

slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log 设定慢查询日志的位置

long_query_time=5 默认的慢查询时间是5秒的记录都会被保存

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

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

相关文章

可视掏耳勺安全吗?独家揭示六大风险弊病!

很多人习惯在洗漱完顺手拿一根棉签掏耳朵&#xff0c;但是棉签的表面直径大且粗糙&#xff0c;不易将耳朵深处的耳垢挖出&#xff0c;耳垢堆积在耳道深处长时间不清理会导致堵塞耳道&#xff0c;引起耳鸣甚至感染。而可视掏耳勺作为一种新型的挖耳工具&#xff0c;它的安全性也…

OpenAI突然上线两件“杀手锏”:势在维持大模型霸主地位

在最近的大模型战争中&#xff0c;OpenAI似乎很难维持霸主地位。虽然没有具体的数据统计&#xff0c;但Claude3.5出现后&#xff0c;只是看网友们的反响&#xff0c;就能感觉到OpenAI订阅用户的流失&#xff1a;既然Claude3.5比GPT-4o好用&#xff0c;为什么我们不去订阅Claude…

html+css 实现遮罩按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

mybatis-plus批量插入优化

mybatis-plus批量插入优化 背景优化新的问题分批插入springboot3整合mybaits-plus 背景 使用的mybatisplus的批量插入方法&#xff1a;saveBatch()&#xff0c;打印 sql 日志发现&#xff0c;底层还是一条条的 insert 语句&#xff0c;这显然是不行的 优化 之前就看到过网上都…

怎么把C盘分成两个盘?让C盘分区更简单,赶快试试!

在日常使用电脑的过程中&#xff0c;有时我们可能希望将C盘分割成两个独立的分区&#xff0c;以便更好地管理文件和数据。这种操作需要谨慎进行&#xff0c;因为错误的分区操作可能导致数据丢失。那么&#xff0c;我们该怎么把C盘分成两个盘呢&#xff1f;下面&#xff0c;我将…

Telegraf 命令行指南:高效监控数据的秘诀

Telegraf 是一个轻量级的服务器监控代理&#xff0c;它支持从数百种数据源收集、处理和发送数据到各种存储库。它由 InfluxData 开发&#xff0c;常用于时间序列数据库 InfluxDB。Telegraf 的灵活性和强大的插件系统使其成为监控基础设施的理想选择。本文将为您提供一个 Telegr…

【解决方案】华普微基于收发芯片系列的LED智能灯控高效解决方案

一、方案概述 LED智能灯是一种集LED照明技术与智能控制技术于一体的现代照明产品。它采用高效节能的LED作为光源&#xff0c;相比传统灯具&#xff0c;具有更低的能耗、更长的使用寿命以及更环保的特性。 智能灯通过内置的智能芯片或连接外部智能设备&#xff08;如智能手机、…

vue2-级联选择器

级联选择器 一、市面上的级联选择器二、功能实现1、数据类型2、隐藏下拉框的方法3、html结构4、CSS代码5、各个方法代码 三、实现样式截图1、一级菜单1、鼠标放到一级菜单&#xff0c;就显示二级菜单2、鼠标点击一级菜单的时候 2、二级菜单1、鼠标放到二级菜单的时候&#xff0…

合规征程新里程碑:ATFX荣获香港SFC牌照,运营再上新台阶

全球知名金融科技品牌ATFX又传来好消息&#xff0c;继2023年6月获得阿联酋SCA第五类牌照后&#xff0c;ATFX全球合规运营策略再次取得重大成功。日前&#xff0c;ATFX宣布获得中国香港证券及期货事务监察委员会&#xff08;SFC&#xff09;颁发的第三类牌照&#xff08;号码&am…

GAMES104:06(下)游戏中地形大气和云的渲染2-学习笔记

文章目录 三、大气Atmosphere3.1 大气散射理论3.1.1 Analytic Atmosphere Appearance Modeling&#xff08;经验模型&#xff09;3.1.2 Participating Media参与介质3.1.3 辐射传递方程RTE(Radiative Transfer Equation)3.1.4 体积渲染公式VRE(Volume Rendering Equation) 3.2 …

比原生Transformer快的LMDeploy

创建conda环境 conda create lmdeploy conda activate lmdeploy 安装依赖包(注&#xff1a;下对应的版本要不然容易报错) pip install pytorch2.1.2 pip install lmdeploy[all]0.3.0 下载模型 通过Git协议下载模型。首先安装git-lfs组件 此处使用的root权限 curl -s ht…

YOLOv8改进 | 主干网络 | 简单而优雅且有效的VanillaNet 【华为诺亚方舟】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

【C++核心篇】—— C++面向对象编程:封装相关语法使用和注意事项详解(全网最详细!!!)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、封装&#xff08;类&#xff09;1.封装的使用&#xff08;类和对象&#xff09;2. 对象的初始化和清理2.1 构造函数2.2 析构函数2.3 构造函数的分类及调用 …

海外仓代理模式,借鸡生蛋也能成为跨境新出路

国际物流是跨境电商生态圈同质化最严重跨境电商最开放的“地带”。唯独海外仓&#xff0c;算是国际物流行业唯一的一块“世外桃源”&#xff0c;但一个1000平米的小仓库&#xff0c;每年至少要花费100万的运转资金&#xff0c;无论是新企业还是成熟的企业&#xff0c;建立海外仓…

成都云飞浩容文化传媒有限公司怎么样?靠谱吗?

在数字经济的浪潮中&#xff0c;电商行业如同一艘巨轮&#xff0c;乘风破浪&#xff0c;不断前行。而在这片波澜壮阔的蓝海中&#xff0c;成都云飞浩容文化传媒有限公司犹如一颗璀璨的新星&#xff0c;以其专业的电商服务能力和前瞻性的市场洞察&#xff0c;为众多品牌搭建起通…

【Python机器学习】支持向量机——基于最大间隔分隔数据

有些人认为&#xff0c;SVM是最好的现成的分类器&#xff0c;这里说的“现成”指的是分类器不加修改即可直接使用。同时&#xff0c;这就意味着在数据上应用基本形式的SVM分类器就可以得到低错误率的结果。SVM能够对训练集之外的数据点做出很好的分类决策。 支持向量机&#x…

SAP ABAP SUBMIT 用法详解(看这一篇就够了)

文章目录 前言一、案例介绍/笔者需求二、B报表&#xff08;被SUBMIT的程序&#xff09;三、A报表&#xff08;用SUBMIT的程序&#xff09; a.SUBMIT B程序 b.AND RETURN 详解 c.CL_SALV_BS_RUNTIME_INFO 捕获ALV数据的方法 d.捕获…

使用STM32实现一个线性代数计算器

文章目录 背景挑战与困难如何整合编译&#xff1f;error: non-ASM statement in naked function is not supportederror: #pragma import is an ARM Compiler 5 extension, and is not supported by ARM Compiler 6error: redefinition of __FILE 改造demo中的cout改造delete运…

gdb调试 查找段错误

先设置 程序崩溃时的core文件产生 ulimit -c unlimited http://t.csdnimg.cn/BBGBQ 记得改完之后重启虚拟机。 core文件&#xff1a;当程序发生异常&#xff08;如段错误&#xff09;并退出时&#xff0c;操作系统可以选择生成一个 core 文件。这个文件包含了程序崩溃时刻…