mysql备份和恢复

目录

一、数据库备份的分类

二、常见的备份方法

三、MySQL完全备份

1)数据库完全备份与恢复

2)mysqldump备份与恢复

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

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

3、完全备份某库中指定的表

4、恢复mysqldump工具备份的数据

四、二进制日志实现增量备份

1)查询和设置常见的日志类型

① 数据库中sql语句查询开启的日志类型等信息

② 修改配置文件设置日志的保存路径、开启等操作

2)二进制日志增量备份

3)二进制日志增量恢复

4)增量备份的模拟实验

五、xtrabackup物理热备份


一、数据库备份的分类

1)从物理与逻辑的角度,数据库备份可分为

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

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

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

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

2、逻辑备份:对数据库逻辑组件(如:库、表等数据库对象)的备份。把数据转化成sql语句形式导出到文件,恢复的时候再数据把文件导入进去,把sql语句再执行一遍。

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

1、完全备份:每次对数据库进行完整的备份,但备份的数据中很多重复。

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

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

在企业中,一般增量备份和完全备份策略配合使用。

面试题:你们公司数据库怎么备份的?

写自动备份脚本交给crontab定时操作,比如每周选一天业务量较小的情况下做一次完全备份,其他时间做增量备份。

二、常见的备份方法

1)tar压缩包(完全备份,物理冷备)

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

2)mysqldump(完全备份,逻辑热备)

mysqldump是innodb引擎常用的逻辑备份工具。还有mysqlhotcopy,但仅能备份MyISAM和ARCHIVE表(用的少了);

3)二进制日志(增量备份)                                                                                                       

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

4)第三方工具备份(完全备份、增量备份,物理热备)

免费的MySQL物理热备份软件Percona XtraBackup(物理备份效果好,只能备份innodb和xtradb两种引擎的表,用的很多);xtrabackup备份方法:通过xtrabackup备份mysql

三、MySQL完全备份

        完全备份是对整个数据库、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。完全备份与恢复操作简单,但缺点是重复数据多、占用空间大、操作时间长。

1)数据库完全备份与恢复

1、物理冷备份与恢复,也可用作数据库迁移

  • 关闭MySQL数据库
  • 使用tar命令直接打包数据库文件夹直接替换现有MySQL目录即可
  • mysqldump备份与恢复

【demo】物理冷备和恢复的方式实现数据迁移

准备2台mysql服务器7-5有数据,7-4为空库,把数据从7-5迁移到7-4数据库。

MySQL服务器1
#关闭数据库服务
systemctl stop mysql;
#完全备份data数据
tar zcf /opt/mysql_backup_$(%Y%y%d) /usr/local/mysql/data/
#查看数据库备份文件
tar tf mysql_backup_20240620
#远程传输到另外一台主机
scp mysql_backup_20240620 192.168.170.100/opt

MySQL服务器2
#关闭数据库服务
systemctl stop mysql;
#去opt目录下,把tar包解压得到data目录及数据
cd /opt/
tar xf mysql_backup_20240620
#把本机服务的myaql的data数据目录先进行备份重命名
cd /usr/local/mysql/
mv data/ data.bak
#把解压后的数据导入到/usr/local/mysql/中;
mv /opt/data /usr/local/mysql/
#重启MySQL服务
systemctl restart mysql
#登录数据库即可查看到完全备份的文件,即完成了从mysql服务器1迁移数据到了mysql服务器2

 验证迁移结果:7-4数据库能够看到7-5的全部数据

2)mysqldump备份与恢复

如果公司业务不能中断,那么就不能使用冷备法迁移了,要用到热备工具。

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

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

#备份的是数据库包含的表的数据,不包含库这个对象的相关数据
mysqldump -u root -p[密码] 库名1 [库名2] … > /备份路径/备份文件名.sql#备份的会包含数据库等对象的相关数据
mysqldump -u root -p[密码] --databases 库名1 [库名2] … > /备份路径/备份文件名.sql	

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

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

3、完全备份某库中指定的表

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

4、恢复mysqldump工具备份的数据

① 登录数据库恢复

先登录数据库,再执行 source sql文件路径  (如果sql文件里只备份了表,需要先 use 切换库再执行 source)

② 命令行数据恢复

mysql -uroot -p密码 -e 'SQL语句;'         #免登录数据库执行操作,-e的效果是处理完后退出数据库
mysql -uroot -p密码 -e 'show databases;'  #免登录数据库查看库

#恢复库(包含库的所有数据)

mysql -u root -p密码 < sql文件路径  
cat sql文件路径 | mysql -u root -p密码

               

#恢复表

mysql -u root -p密码 库名 < sql文件路径
cat sql文件路径 | mysql -u root -p密码 库名        

 

补充热备工具:阿里云DTS数据传输服务工具,专门做数据迁移的工具,从线下数据库迁移到云上数据库的工具。

四、二进制日志实现增量备份

1)查询和设置常见的日志类型

        二进制日志保存了所有更新或者可能更新数据库的操作。二进制日志在启动MySQL服务器后开始记录,并在文件达到max binlog size所设置的大小或者接收到flush logs命令后重新创建新的日志文件。只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份。MySQL 的日志默认保存位置为 /usr/1ocal/mysql/data/

① 数据库中sql语句查询开启的日志类型等信息

#查看通用查询日志/二进制日志/慢查询日志是否开启、查看慢查询时间设置
show variables like 'general% | log_bin% | %slow% | long_query_time';#设置开启慢查询
set global slow_query_log=ON;

② 修改配置文件设置日志的保存路径、开启等操作

vim /etc/my.cnf
[mysqld]
##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
log-error=/usr/local/mysql/data/mysql_error.1og##通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的,开启
qeneral_loq=0N
general_log_file=/usr/local/mysql/data/mysql_general.log##二进制日志(binlog),用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启,需要指定一下保存路径
log-bir-mysql-bin
#也可以log_bin=mysql-bin
binlog_format=statement 或 row##慢查询日志,用来记录所有执行时间超过1ong_query_time秒的语句,可以找到哪些査询语句执行时间长,以便于优化,默认是关闭的,开启慢查询;指定保存路径;设置超过5秒执行的语句被记录,缺省时为10秒
slow_query_1og=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5

修改配置前,数据库的data目录中没有慢查询、通用查询等日志文件,配置修改后重启mysql服务就会生成这些文件了。

  2)二进制日志增量备份

#通过刷新二进制日志实现增量备份
mysqladmin -u root -p密码 flush-logs

#查看二进制日志内容
mysqlbinlog --no-defaults --base64-output=decode-rows -v 二进制文件路径

二进制日志有三种记录格式

  • statement:基于sql语句只记录操作命令;
  • row:基于行,会把命令操作后的所有行数据记录下来;
  • mixed:混合模式,一般情况下是基于行记录,繁忙情况下会切换至基于sql语句记录;

3)二进制日志增量恢复

#使用二进制日志增量恢复
mysqlbinlog --no-defaults 二进制文件路径 | mysql -u root -p密码

断点恢复


基于位置点恢复

mysqlbinlog --no-defaults --start-position='开始位置点' --stop-position='结束位置点'  二进制文件路径 | mysql -u root -p密码

基于时间点恢复

mysqlbinlog --no-defaults --start-datetime='YYYY-mm-dd HH:MM:SS' --stop-datetime='YYYY-mm-dd HH:MM:SS'  二进制文件路径 | mysql -u root -p密码

断点恢复的原则
如果要恢复到某条sql语句之前的所有数据,就stop在这个语句的位置点或时间点之前
如果要恢复某条sql语句及其之后的所有数据,就从这个语句的位置点或时间点开始start


4)增量备份的模拟实验

  

​​​​​​​

五、xtrabackup物理热备份

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

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

相关文章

Qt Quick Effect Maker 工具使用介绍

一、介绍 随着 Qt 版本的不断升级,越来越多的功能被加入 Qt,一些新的工具也随之应运而生,Qt Quick Effect Maker 工具是 Qt 6.5 之后才新添加的工具,之前的名字应该是叫做 Qt shader tool 这个模块。 以下是官方的释义:Qt Quick Effect Maker是一个用于为Qt Quick创建自定…

DC/AC电源模块一种效率与可靠性兼备的能源转换解决方案

DC/AC电源模块都是一种效率与可靠性兼备的能源转换解决方案 DC/AC电源模块是一种能够将直流电源&#xff08;DC&#xff09;转换为交流电源&#xff08;AC&#xff09;的设备。它在现代电子设备中扮演着非常重要的角色&#xff0c;因为许多设备需要交流电源才能正常运行。无论…

金融科技行业创新人才培养与引进的重要性及挑战

金融科技行业作为金融与科技的深度融合产物&#xff0c;正以前所未有的速度改变着传统金融业的格局。在这一变革中创新人才的培养与引进成为了行业发展的核心驱动力。然而&#xff0c;尽管其重要性不言而喻&#xff0c;但在实际操作中却面临着诸多挑战。 一、创新人才培养与引进…

echarts 5.5.0版本下的层叠柱形图,每个值都从0开始,会有覆盖情况

需求&#xff1a; 1、每个公司&#xff0c;需要两个柱子去展示&#xff08;stack: 1是第一个柱子&#xff0c;stack:2,是第二个柱子&#xff09;&#xff1b; 2、必须每个数据都是从0开始&#xff0c;不在上一个值上累加&#xff1b; 3、鼠标滑上去的时候&#xff0c;最大值…

ffmpeg音视频开发从入门到精通——ffmpeg日志及目录操作

文章目录 FFMPEG1. 操作日志2. 文件移动和删除3. 操作目录重要函数 FFMPEG 1. 操作日志 日志级别 AV LOG ERROR AV LOG WARNING AV LOG INFO AV LOG DEBUG cmake_minimum_required(VERSION 3.27) project(FFmpeg_exercise) set(CMAKE_CXX_STANDARD 14)# 定义FFmpeg的安装路…

基于Java技术的在线学习平台系统

开头语&#xff1a;你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;基于SpringBoot框架 工具&#xff1a;Eclipse、Navicat、M…

【ocean】ocnPrin结合getData导出数据

核心就是这一句ocnPrint(?output fout leafValue( getData(“/output” ?result “dc”))) r_list list(4000, 4100, 4200) multi_list list(20,21,22) fout outfile("/home/yourpath/results.txt" "w") foreach(r_value r_listforeach(multi_value …

Redis数据库(六):主从复制和缓存穿透及雪崩

目录 一、Redis主从复制 1.1 概念 1.2 主从复制的作用 1.3 实现一主二从 1.4 哨兵模式 1.4.1 哨兵的作用 1.4.2 哨兵模式的优缺点 二、Redis缓存穿透和雪崩 2.1 缓存穿透——查不到 2.1.1 缓存穿透解决办法 2.2 缓存击穿 - 量太大&#xff0c;缓存过期 2.2.1 缓存…

高频面试题基本总结回顾2(含笔试高频算法整理)

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…

如何快速解决验证码图像问题 | 最佳图像(OCR)验证码解决工具

你是否曾经遇到过陷入一个看似无尽的 CAPTCHA 挑战中&#xff0c;努力识别扭曲的字符或数字&#xff1f;这些令人抓狂的 CAPTCHA 是为了确保你是人类而不是机器人&#xff0c;但它们也给真正的用户带来了头痛。那么&#xff0c;有没有快速解决这些 CAPTCHA 图像的方法&#xff…

Vue-Ci搭建项目

项目创建 vue-cli 官方提供的一个脚手架,用于快速生成一个vue的项目模板;预先定义 好的目录结构及基础代码,就好比咱们在创建Maven项目时可以选择创建一个 骨架项目,这个骨架项目就是脚手架,我们的开发更加的快速; 主要的功能 ● 统一的目录结构 ● 本地调试 热部署 ● 单元…

华为OD机试 - 石头剪刀布游戏(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测…

设备驱动框架之LED

文章目录 前言一、什么是驱动框架二、使用步骤1.注册LED设备2.卸载LED设备3.内核中申请内存4.container_of5.platform_get_drvdata 和 platform_set_drvdata6.module_platform_driver 三、驱动示例总结 前言 为了尽量降低驱动开发者难度以及接口标准化&#xff0c;就出现了设备…

基于weixin小程序智慧物业系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;员工管理&#xff0c;房屋管理&#xff0c;缴费管理&#xff0c;车位管理&#xff0c;报修管理 工作人员账号功能包括&#xff1a;系统首页&#xff0c;维修…

数据库原理之数据库基本概念

目录 前言 基本概念 数据库完整性 前言 今天我们来看看数据库的基本概念&#xff0c;帮助大家对数据库有一点点最基本的了解 基本概念 4个基本概念 数据data&#xff1a;描述事物的符号&#xff0c;数据库中存储的基本对象。 数据库Database&#xff1a;长期存储在计算机…

基于JSP技术的旅游网站系统

开头语&#xff1a;你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;B/S架构&#xff0c;JSP技术 工具&#xff1a;Eclipse&#xff0c;Tomcat…

PostMan动态设置全局变量

1. 前言 在开发过程中调试接口&#xff0c;一般都会使用PostMan。 其中有几个变量可能是好几个接口共用的&#xff0c;就会出现频繁手动复制(ctrlc)、粘贴(ctrlv)的情况。 这个过程得非常留意&#xff0c;生怕复制错了&#xff0c;或删减了某些东西&#xff0c;导致接口报错。…

Open3D 显示带有强度的点云数据

目录 一、概述 1.1强度信息的意义 1.2应用场景 二、代码实现 三、实现效果 一、概述 在点云数据中&#xff0c;强度&#xff08;Intensity&#xff09;指的是激光雷达传感器在扫描环境时&#xff0c;每个点返回的反射强度值。这些强度值代表了激光脉冲返回的能量&#xff…

Houdini 通过wedge来做模拟参数对比 (PDG TOP)

我们的设定如下例子 这是个简单的布料悬挂的例子。上方两个角分别被固定住了&#xff0c;然后在distance约束下布料下垂。 我们现在的目的是想要对比不同的streach stiffness对模拟的影响。 第一步&#xff1a;找到stiffness参数&#xff0c;右键expression->edit expre…

基于Pytorch框架的深度学习ConvNext神经网络宠物猫识别分类系统源码

第一步&#xff1a;准备数据 12种宠物猫类数据&#xff1a;self.class_indict ["阿比西尼猫", "豹猫", "伯曼猫", "孟买猫", "英国短毛猫", "埃及猫", "缅因猫", "波斯猫", "布偶猫&q…