Mysql运维篇(三) MySQL备份与恢复

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除!

一、物理备份与逻辑备份

1、物理备份:备份数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占  用空间比较大,MySQL中可以用 xtrabackup 工具来进行物理备份。

2、逻辑备份:对数据库对象利用工具进行导出工作,汇总入备份文件内。逻辑备份恢复速度慢,但占用空间小,更灵活。MySQL 中常用的逻辑备份工具为 mysqldump 。逻辑备份就是 备份sql语句 ,在恢复的时候执行备份的sql语句实现数据库数据的重现。

二、MySQL实现逻辑备份

1、备份全部数据库

基本语法:
mysqldump –u 用户名称 –h 主机名称 –p密码 待备份的数据库名称[tbname, [tbname...]]> 备份文件名称.sql

说明: 备份的文件并非一定要求后缀名为.sql,例如后缀名为.txt的文件也是可以的。
 

2、备份全部数据库

使用mysqldump备份整个实例,可以使用 --all-databases 或 -A 参数:

mysqldump -uroot -pxxxxxx --all-databases > all_database.sql
mysqldump -uroot -pxxxxxx -A > all_database.sql
示例:

[root@mysql8 backdata]# mysqldump -uroot -p --all-databases > all-databasesv2.sql

3、备份指定的数据库

使用 --databases 或 -B 参数了,该参数后面跟数据库名称,多个数据库间用空格隔开。如果指定
databases参数,备份文件中会存在创建数据库的语句,如果不指定参数,则不存在。

语法如下:
mysqldump –u user –h host –p --databases [数据库的名称1 [数据库的名称2...]] > 备份文件名
称.sql
示例:备份test数据库

[root@mysql8 backdata]# mysqldump -uroot -hlocalhost -p --databases test > test-db-v1.sql

[root@mysql8 backdata]# mysqldump -uroot -hlocalhost -p -B test > test-db-v2.sql

4、备份指定数据库的部分表
语法如下:

mysqldump –u user –h host –p 数据库的名称 [表名1 [表名2...]] > 备份文件名称.sql
示例:备份单个表

备份test数据库-my_table 表

[root@mysql8 backdata]# mysqldump -uroot -hlocalhost -p  test my_table > test-db-my_table.sql

备份多个表

[root@mysql8 backdata]# mysqldump -uroot -hlocalhost -p  test my_table sales > test-db-my_tablev1.sql

[root@mysql8 backdata]# vi  test-db-my_tablev1.sql
--------------------------------------------

5.备份单表的部分数据
有些时候一张表的数据量很大,我们只需要部分数据。这时就可以使用 --where 选项了。where后面附带需要满足的条件。
示例:备份sales表中id = '1'的数据

[root@mysql8 backdata]# mysqldump -uroot -hlocalhost -p  test sales --where="id=1" > test-salesv1.sql

6 数据库排除某些表的备份

如果我们想备份某个库,但是某些表数据量很大或者与业务关联不大,这个时候可以考虑排除掉这些表,同样的,选项 --ignore-table 可以完成这个功能。
示例:备份test数据库,备份中不包含my_table表

[root@mysql8 backdata]# mysqldump -uroot -hlocalhost -p test --ignore-table test.my_table > bknomy_tablev1.sql

7 只备份结构或只备份数据

只备份结构的话可以使用 --no-data 简写为 -d 选项;

[root@mysql8 backdata]# mysqldump -uroot -hlocalhost -p test --no-data > nodatav1.sql

只备份数据可以使用 --no-create-info 简写为-t 选项。
[root@mysql8 backdata]# mysqldump -uroot -hlocalhost -p test  --no-create-info  > nocreatev1.sql

8 备份中包含存储过程、函数、事件
mysqldump备份默认是不包含存储过程,自定义函数及事件的。可以使用 --routines 或 -R 选项来备份存储过程及函数,使用 --events 或 -E 参数来备份事件。
举例:备份整个atguigu库,包含存储过程及事件:
---后续补齐----
9 mysqldump常用选项
mysqldump 命令参数详解-腾讯云开发者社区-腾讯云

MySQL–mysqldump命令详解-CSDN博客

三、数据库逻辑恢复

数据库恢复基本语法:
mysql –u root –p [dbname] < backup.sql

1、使用备份恢复单库

使用root用户,将之前练习中备份的all.sql文件中的备份导入数据库中,命令如下:
如果备份文件中包含了创建数据库的语句,则恢复的时候不需要指定数据库名称.

示例:备份全部数据库,删除test数据库,然后使用备份恢复

[root@mysql8 backdata]#  mysqldump -uroot -p123456 --all-databases > all-databasesv3.sql

删除前 VS 删除后


使用 all-databasesv3.sql进行恢复

[root@mysql8 backdata]# mysql -u root -p123456 < all-databasesv3.sql 

2、从全量备份中恢复单库

示例:删除test数据库,从全量备份中只恢复test数据库

步骤一、删除test库并从全量备份中分离出test数据库数据信息。

将test数据库恢复信息与全量备份分离

sed -n '/^-- Current Database: `test`/,/^-- Current Database: `/p' all-databasesv3.sql > test.sql 

步骤二、使用分离的 test.sql数据信息进行数据库恢复

[root@mysql8 backdata]# mysql -uroot -p123456 < test.sql 

报错网络说是时区的问题,有待验证?

Mysqldump时区差问题_!40103 set @old_time_zone=@@time_zone-CSDN博客

https://www.cnblogs.com/mr-totoro/p/5807636.html

3、从单库备份中恢复单表

步骤一:

获取MySQL 表结构

[root@mysql8 backdata]#  cat all-databasesv3.sql | sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `my_table`/!d;q' >my_table.sql

获取MySQL 表中的数据

[root@mysql8 backdata]# cat all-databasesv3.sql | grep --ignore-case 'insert into `my_table`' > my_table_data.sql

步骤二、使用生成的数据进行恢复

-rw-r--r-- 1 root root     431 Jan 29 01:51 my_table.sql
-rw-r--r-- 1 root root      64 Jan 29 01:51 my_table_data.sql

四、物理备份:直接复制整个数据库 (InnoDB存储引擎的表不适用)

物理恢复:直接复制到数据库目录

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes 网络模型:一文解析其架构与工作原理

【摘要】本文将探讨 Kubernetes 中的网络模型&#xff0c;以及对各种网络模型进行分析。 Underlay Network Model 什么是 Underlay Network 底层网络 Underlay Network 顾名思义是指网络设备基础设施&#xff0c;如交换机&#xff0c;路由器, DWDM 使用网络介质将其链接成的…

Android系统开发之TimeZoneDetectorService浅析--下

TimeZoneDetectorService类图 可以看出TimeZoneDetectorService类&#xff0c;其具体实现是由TimeZoneDetectorStrategy类完成的。 在TimeZoneDetectorService类中&#xff0c;三种更新时区的接口分别为&#xff1a; suggestGeolocationTimeZone() //更新时区主要有三种方式…

24. 两两交换链表中的节点(力扣LeetCode)

文章目录 24. 两两交换链表中的节点题目描述解题思路只使用一个临时节点使用两个临时节点 24. 两两交换链表中的节点 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff0…

PyTorch复现网络模型VGG

VGG 原论文地址&#xff1a;https://arxiv.org/abs/1409.1556VGG是Visual Geometry Group&#xff08;视觉几何组&#xff09;的缩写&#xff0c;它是一个在计算机视觉领域中非常有影响力的研究团队&#xff0c;主要隶属于牛津大学的工程系和科学系。VGG以其对卷积神经网络&am…

消失的数字(c语言多种解法)

题目 该题目取自力扣&#xff08;LeetCode&#xff09;面试题 17.04. 消失的数字 该题目主要考察时间复杂度的把握&#xff0c;题目如下&#xff1a; 数组nums包含从0到n的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&a…

Execution failed for task ‘:app:compileFlutterBuildDebug‘. 解决

前言 项目场景&#xff1a;在Flutter项目中 或 在嵌入Flutter模块的Android原生项目&#xff1b; 启动场景&#xff1a;在Android原生端 编译 或 运行 项目时&#xff0c;可能出现这个异常&#xff1b; 异常 Build窗口并没有追踪到&#xff0c;引发异常代码位置&#xff0c;…

MySQL的SQL MODE

目录 举例&#xff1a; --常见SQL mode --mysql8 sql_mode 官方文档 https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html --查看全局的SQL MODE select global.sql_mode; --查看当前会话的SQL MODE select session.sql_mode; --运行时修改全局的SQL mode set gl…

python 基础知识点(蓝桥杯python科目个人复习计划27)

今日复习内容&#xff1a;基础算法中的递归 1.介绍 递归&#xff1a;通过自我调用来解决问题的函数递归通常把一个复杂的大问题层层转化为一个与原问题相似的规模较小的问题来解决 递归要注意&#xff1a;&#xff08;1&#xff09;递归出口&#xff1b;&#xff08;2&#x…

Django知识随笔

目录 1.如何再ajax中传输post数据&#xff1f; 1.如何再ajax中传输post数据&#xff1f; 在ajax传递的那个网址&#xff0c;会调用你路由的视图函数&#xff0c;在视图函数上面加一句 csrf_exempt 。写上之后会有提示让你导入类。

[嵌入式系统-4]:龙芯1B 开发学习套件-1-开发版硬件介绍

目录 前言&#xff1a; 一、龙芯 1B 开发学习套件简介 1.1 概述 二、龙芯1B 200开发板硬件组成与接口介绍 2.1 概述 2.2 核心板 2.2.1 CPU 2.2.2 什么是核心板 2.2.3 龙芯1B 200核心板 2.2.4 龙芯1B核心板的接口定义 2.3 开发板 2.3.1 龙芯1B0200开发板 2.3.2 龙芯…

微信小程序Skyline在手机端不渲染的问题之一及其解决方式

问题&#xff1a;电脑端是skyline渲染&#xff0c;手机端是webview渲染?如何解? 开发者工具 当前渲染模式&#xff1a;Skyline 当进行预览时手机端却是: 请注意看轮播图的显示情况 请注意看轮播图的显示情况 请注意看轮播图的显示情况 从轮播图上来看,手机端是webview渲染…

YOLOv8实例分割实战:TensorRT加速部署

课程链接&#xff1a;https://edu.csdn.net/course/detail/39273 PyTorch版的YOLOv8支持高性能实时实例分割方法。 TensorRT是针对英伟达GPU的加速工具。 本课程讲述如何使用TensorRT对YOLOv8实例分割进行加速和部署&#xff0c;实测推理速度提高3倍以上。  采用改进后的t…

【MCAL】TC397+EB-tresos之GPT配置实战 - 定时器

本篇文章介绍了在TC397平台使用EB-tresos对GPT驱动模块进行配置的实战过程,不仅介绍了使用GTM来实现定时器的方案&#xff0c;还介绍了基于GPT12来实现连续定时器的实例。因为GTM是德国博世公司开发的IP&#xff0c;而英飞凌的芯片集成了这个IP&#xff0c;并在这个基础上搭建了…

SpringMVC(十)拦截器

一、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现Handlerinterceptor SpringMVC中的拦截器必须在SpringMVC中的配置文件中进行配置 服务器的三大组件:servlet、filter(过滤器:在浏览器和目标资源之间进行过滤,我们从浏览器发送的…

Nodejs前端学习Day5

苦其心志&#xff0c;劳其筋骨 文章目录 前言一、处理路径问题二、path路径模块总结 前言 继续fs 一、处理路径问题 在使用fs模块操作文件时&#xff0c;如果提供的操作路径是以./或…/开头的相对路径时&#xff0c;很容易出现路径动态拼接错误的问题 原因&#xff1a;代码在…

深度强化学习(王树森)笔记07

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

内网安全:Exchange服务

目录 Exchange服务 实验环境 域横向移动-内网服务-Exchange探针 一. 端口扫描 二. SPN扫描 三. 脚本探针(还可以探针是否有安全漏洞) 域横向移动-内网服务-Exchange爆破 一 .BurpSuite Intruder模块爆破 域横向移动-内网服务-Exchange漏洞 CVE-2020-17144 Exchange R…

嵌入式Linux系统下的智能家居能源管理系统的设计与实现

大家好&#xff0c;今天给大家介绍嵌入式Linux系统下的智能家居能源管理系统的设计与实现&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 随着物联网技术的不断发展&#xff0c;…

19. 删除链表的倒数第 N 个结点(力扣LeetCode)

文章目录 19. 删除链表的倒数第 N 个结点题目描述将删除倒数第n个节点转化为删除第n个节点双指针 19. 删除链表的倒数第 N 个结点 题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;hea…

(28)Linux 信号保存 信号处理 不可重入函数

首先介绍几个新的概念&#xff1a; 信号递达(Delivery)&#xff1a;实际执行信号的处理动作。信号未决(Pending)&#xff1a;信号从产生到递达之间的状态。信号阻塞(Block)&#xff1a;被阻塞的信号产生时将保持在未决状态&#xff0c;直达解除对该信号的阻塞&#xff0c;才执…