Linux中Mysql数据库备份操作

逻辑备份

备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。
本质:导出的是SQL语句文件
优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句
缺点:速度较慢,导入时可能会出现格式不兼容的突发情况,无法做增量备份和累计增量备份
提供三种级别的备份,表级,库级和全库级
逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库,效率相对较低。
数据一致,服务可用。:如何保证数据一致,在备份的时候进行锁表会自动锁表。锁住之后在备份。

常用备份选项

库级备份

全库备份
#mysqldump -p密码 [-A|--all-databases]  >alldb.sql库级备份
#mysqldump -p密码 [-B|--databases] dbname1 dbname2 >dbname.sql 

表级备份

表级备份
#mysqldump -p密码 dbname tablename1 tablename2 >db_t1_t2.sql备份表结构
#mysqldump -p密码 dbname tablename -d > tablename_jiegou.sql

导出数据和导入数据

​
导出数据
首先查看安全路径:mysql> show variables like "secure%";导出数据到安全路径下
mysql> select * from mysql.user into outfile '/var/lib/mysql-files/user.xlsx'导入数据
mysql> load data infile '/var/lib/mysql-files/user.xlsx' into table user;注:修改安全路径的方法#mkdir /data
#chown mysql.mysql /data
#vim /etc/my.cnf
secure_file_priv=/data/重启数据库生效
#systemctl restart msyqld

查看安全路径显示:

mysql> show variables like "secure%";

恢复数据

恢复数据库

第一种方法:mysql -p密码   < db.sql第二种方法:
#cat db.sql | mysql -p密码第三种方法:mysql> source  db.sql的绝对路径;

恢复数据表

第一种方法:mysql -p密码 dbname  < table.sql第二种方法:#cat db.sql | mysql -p密码 dbname第三种方法:mysql> use dbnamemysql> source  table.sql的绝对路径;

根据二进制日志文件恢复数据

开启binlog日志功能

创建二进制文件存放位置 例/data
#mkdir /data
修改权限
#chown mysql.mysql /data编辑mysql配置文件添加以下内容
#vim /etc/my.cnf server-id = 1
log-bin = /data/mysql-bin重启数据库
#systemctl restart msyqld查看二进制日志:
#mysqlbinlog /data/mysql-bin.00001 --base64-output=decode-rows -vv

恢复数据

找到要恢复的sql语句的起始位置、结束位置
修复语句
#mysqlbinlog --start-position  起始位置 --stop-position 结束位置 /data/mysql-bin.00001 | mysql -p密码 dbname根据binlog日志的时间点恢复
找到要恢复sql语句的起始时间、结束时间
修复语句
mysqlbinlog --start-datetime='2023-12-26 23:55:54' --stop-datetime='2023-12-26 23:56:541' mylog.000001 | mysql -p密码 dbname

物理备份

物理备份: 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。

1.完全备份-----完整备份:

每次都将所有数据(不管自第一次备份以来有没有修改过),进行一次完整的复制,备份后会清除文件的存档属性,方便日后增量备份或者差异备份进行版本比较。

特点:占用空间大,备份速度慢,但恢复时一次恢复到位,恢复速度快。

完全备份流程:

mkdir /xtrabackup/full -pinnobackupex --user=root --password='密码' /xtrabackup/full可以查看一下:
# cd /xtrabackup/full/
# ls
2023-12-26_11-47-49

完全备份恢复流程

1.关闭数据库:
# systemctl stop mysqld
# rm -rf /var/lib/mysql/ *
# rm -rf /var/log/mysqld.log			#可选操作
# rm -rf /var/log/mysql-slow/slow.log  #可选操作2.恢复之前的验证恢复:
# innobackupex --apply-log /xtrabackup/full/2023-12-26-20_11-47-493.确认数据库目录:
恢复之前需要确认配置文件内有数据库目录指定,不然xtrabackup不知道恢复到哪里
# cat /etc/my.cnf
datadir=/var/lib/mysql4.恢复数据:
# innobackupex --copy-back /xtrabackup/full/2019-08-20_11-47-495.修改权限:
# chown mysql.mysql  /var/lib/mysql -R6.启动数据库:
# systemctl start mysqld

2.增量备份: 每次备份上一次备份到现在产生的新数据

在第一次完整备份之后,第二次开始每次都将添加了存档属性的文件进行备份,并且在备份之后再把这些存档属性清除。为什么要清除存档属性呢?这就是为了下一次备份的时候判断是否有文件变化,因为用户在每次备份以后修改这些被清除存档属性的文件,存档属性就会自动加上,相当于用户告诉系统,这些文件有变化,你下一次就备份这些文件,其他没有存档属性的就不需要备份,这就是增量备份的工作机制。

特点:因每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢 复,恢复时间长。

3.差异备份:只备份跟完整备份不一样的

在第一次完整备份之后,第二次开始每次都将所有文件与第一次完整备份的文件做比较,把自第一次完整备份以来所有修改过的文件进行备份,且以后每次备份都是和第一次完整备份进行比较(注意是第一次,不是上一次),备份自第一次完整备份以来所有的修改过的文件。因此,差异备份在备份完毕之后不需要清除文件的存档属性,因为这些文件和下一次备份没有什么关系,它仅仅和第一次完整备份的数据进行比较(第一次完整备份之后是清除存档属性的)。

特点:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后一次的差异版本,恢复速度介于完整备份和增量备份之间。

感谢观看!希望能够帮助到大家!

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

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

相关文章

Centos7安装Docker和Docker-Compose

环境 操作系统&#xff1a;Centos 7.9 root环境 Docker安装 卸载原先的Docker环境 如果你先前的操作系统安装了Docker环境&#xff0c;请卸载 Docker 相关的软件包&#xff0c;没有则忽略这一步。 yum remove docker \docker-client \docker-client-latest \docker-common \doc…

(2021|CVPR,XMC-GAN,对比学习,注意力自调制)用于文本到图像生成的跨模态对比学习

Cross-Modal Contrastive Learning for Text-to-Image Generation 公众&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 相关工作 3. 基础 4. 方法 4.1 用于文本到图像…

【软件工程】可执行文件和数据分离

一、概述 可执行文件和数据分离是一种软件设计策略&#xff0c;旨在将程序代码和程序使用的数据分离存储。这种方法通常用于提高软件的模块化程度和灵活性&#xff0c;以及方便软件的管理和维护。 在可执行文件和数据分离中&#xff0c;程序代码通常以可执行文件的形式存储&a…

Java小案例-Sentinel的实现原理

前言 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 要想理解一个新的技…

unityc用vs2017介绍

21版unity能用17vs&#xff0c;只要在unity的Edit/Preferences/ExternalTools里面改既可。

【Qt-Event-信号和槽】

Qt编程指南 ■ Qt事件■ Qt鼠标事件■ Qt事件同步和异步分发■ Qt事件循环&#xff08;exec、eventloop&#xff09;■ Qt事件-发送-过滤■ QT事件过滤 ■ 信号和槽■ 一个信号可以连接多个槽■ 多个信号可以连接同一个槽■ 一个信号可以连接另外一个信号■ 信号槽连接■ []() …

音频修复增强软件iZotope RX 10 mac特点介绍

iZotope RX 10 mac是一款音频修复和增强软件。 iZotope RX 10 mac软件特点 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。 音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等处…

LLM调研笔记

这里写目录标题 LLM调研1. 外挂知识库2. 微调数据prompting和fine-tuning的对比 3. NLP的发展4. 大语言模型的涌现能力5. 大模型的几个关键技术6. 数据预处理7. 主流架构8. 模型训练9. 大模型的微调10. 大模型的使用11. 大模型的评估 LLM调研 大模型的不足&#xff1a;在特定的…

[RISCV] 为android14添加一个新的riscv device

本篇博客将基于android-14-r18添加Sifive unmatched板子的支持。 Setup build envoronment Establishing a build environment $ sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 x11proto-core-dev libx11-de…

单例模式你了解嘛?

单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个…

mysql(50) : 大数据导出为csv

代码 import com.alibaba.gts.flm.base.util.Mysql8Instance;import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.math.BigDecimal; import java.util.Iterator; import java.util.List; import java.util.Objects;public class 大数…

SpringSecurity6 | 登录失败后的JSON处理

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringSecurity6 ✨特色专栏: MySQL学习 🥭本文内容: SpringSecurity6 | 登录失败后的JSON处理 📚个人知识库: Leo知识库,…

LeetCode 75| 前缀和

目录 1732 找到最高海拔 724 找到数组的中心下标 1732 找到最高海拔 class Solution { public:int largestAltitude(vector<int>& gain) {int res 0;int sum 0;for(int num : gain){sum num;res max(res,sum);}return res;} }; 时间复杂度O(n) 空间复杂度O(…

JavaScript----变量和数据类型

1. 定义变量 JavaScript 是一种弱类型语言&#xff0c;也就是说不需要指定变量的类型&#xff0c;JavaScript的变量类型由它的值来决定&#xff0c; 定义变量需要用关键字 var, 一条JavaScript语句应该以“;”结尾 定义变量的语法格式: var 变量名 值; var iNum 123;var s…

Java架构师系统架构设计实践

目录 1 导语2 架构设计实践本章概述3 架构设计要素概述和规划4 架构设计模式5 架构设计输入6 架构设计输出7 架构设计要素总结 想学习架构师构建流程请跳转&#xff1a;Java架构师系统架构设计 1 导语 Java架构师在进行系统架构设计时&#xff0c;需要综合考虑多个方面&#…

单体项目-动态上下文问题

在HTML中使用Thymeleaf解决动态上下文问题&#xff0c;你可以使用Thymeleaf的模板语法来生成动态的链接&#xff08;例如CSS和JavaScript文件的链接&#xff09;以适应不同的应用程序上下文。以下是一个示例&#xff1a; <!DOCTYPE html> <html xmlns:th"http:/…

SAP PP 配置学习(二)

MRP 参数文件设定 扩允物料视图 删除物料 物料批量维护

【第12例】IPD技术规划流程及意义

目录 简介 技术规划流程 技术规划意义 CSDN相关课程 作者简介 简介 今天继续更新 IPD 进阶专栏。 这节内容主要来谈谈 IPD 技术规划流程及意义。

【C Primer Plus第六版 学习笔记】第十四章 结构和其他数据形式

有基础&#xff0c;进阶用&#xff0c;个人查漏补缺 建立结构声明&#xff1a;描述该对象由什么组成&#xff0c;即结构布局 格式&#xff1a; 关键字 标记&#xff08;可选&#xff09;{结构 }&#xff1b; 举例&#xff1a; struct book{char title[2];char author[4];float …

Redis遇到过的问题 (Could not get a resource from the pool )

生产上通过scan命令&#xff0c;查询一个大key耗时40s后&#xff0c;报 Could not get a resource from the pool&#xff0c;初步报错是连接池的连接数不够&#xff0c;从网上搜了一些解决方案。 排查过程&#xff1a; 一、首先需要先尝试连接redis&#xff0c;如果连接不上那…